User(用户表)
Doctor(医生表)
Department(科室表)
Appointment(预约表)
Consultation(在线咨询表)
@startuml
class User {
+objectId: String
+createdAt: Date
+username: String
+password: String
+email: String
+phoneNumber: String
+userType: String
+medicalHistory: String
}
class Doctor {
+objectId: String
+createdAt: Date
+user: Pointer<User>
+specialty: String
+qualifications: String
}
class Department {
+objectId: String
+createdAt: Date
+departmentName: String
+description: String
}
class Appointment {
+objectId: String
+createdAt: Date
+patient: Pointer<User>
+doctor: Pointer<Doctor>
+department: Pointer<Department>
+appointmentDate: Date
+status: String
}
class Consultation {
+objectId: String
+createdAt: Date
+appointment: Pointer<Appointment>
+symptoms: String
+diagnosis: String
+prescribedMedication: String
+consultationDate: Date
}
User "1" -- "0..*" Appointment : books
Doctor "1" -- "0..*" Appointment : provides
Department "1" -- "0..*" Appointment : offers
Appointment "1" -- "1" Consultation : includes
@enduml
medicalHistory
字段中。这种设计确保了患者和医生的角色分离,同时也符合数据库的范式要求。每个表都有唯一的 objectId
和 createdAt
字段,方便进行数据管理和跟踪。
User
Condition
Nutrient
VisitRecord
HealthKnowledge
@startuml
class User {
+objectId: String
+createdAt: Date
+username: String
+email: String
+phoneNumber: String
}
class Condition {
+objectId: String
+createdAt: Date
+name: String
+description: String
+relatedNutrients: Array<Pointer<Nutrient>>
}
class Nutrient {
+objectId: String
+createdAt: Date
+name: String
+benefits: String
}
class VisitRecord {
+objectId: String
+createdAt: Date
+user: Pointer<User>
+condition: Pointer<Condition>
+visitDate: Date
+notes: String
}
class HealthKnowledge {
+objectId: String
+createdAt: Date
+title: String
+content: String
+relatedCondition: Pointer<Condition>
+pushDate: Date
}
User "1" -- "0..*" VisitRecord : has
Condition "1" -- "0..*" VisitRecord : is related to
Condition "1" -- "0..*" HealthKnowledge : is related to
Condition "1" -- "0..*" Nutrient : contains
@enduml
relatedNutrients
字段与营养元素表关联。这种设计确保了数据的规范化,避免了冗余,同时通过外键关联保持了数据的一致性和完整性。
UserProfile
MedicalRecord
ConsultationRecord
HealthKnowledge
HealthKnowledgeCollection
以下是用PlantUML表示的类图:
@startuml
class UserProfile {
+objectId: String
+createdAt: Date
+name: String
+age: Number
+gender: String
+allergyHistory: String
+geneticHistory: String
}
class MedicalRecord {
+objectId: String
+createdAt: Date
+recordDate: Date
+symptoms: String
+diagnosis: String
+treatment: String
}
class ConsultationRecord {
+objectId: String
+createdAt: Date
+consultationDate: Date
+questions: String
+answers: String
}
class HealthKnowledge {
+objectId: String
+createdAt: Date
+title: String
+content: String
+category: String
}
class HealthKnowledgeCollection {
+objectId: String
+createdAt: Date
}
UserProfile "1" -- "0..*" MedicalRecord : has
UserProfile "1" -- "0..*" ConsultationRecord : has
UserProfile "1" -- "0..*" HealthKnowledge : has
UserProfile "1" -- "0..*" HealthKnowledgeCollection : has
HealthKnowledgeCollection "1" -- "0..*" HealthKnowledge : contains
@enduml