我正在创建一个诊所管理系统,我需要为病人存储病史。用户可以为单个患者选择多个历史条件,然而,每个诊所都有其固定的医疗历史字段集。
例如:
Clinic 1:
DiseaseOne
DiseaseTwo
DiseaseThree
Clinic 2:
DiseaseFour
DiseaseFive
DiseaseSize
对于我在特定诊所的患者就诊,用户应该能够根据诊所类型检查患者的一个或多个疾病的病史。
我想到了两种存储病史数据的方法:
第一个选项:
将字段添加到相应的诊所患者访问记录:
PatientClinic1VisitRecord:
PatientClinic1VisitRecordId
VisitDate
MedHist_DiseaseOne
MedHist_DiseaseTwo
MedHist_DisearThree
用每个MedHist字段填充值" True / False"根据用户输入。
第二个选项:
拥有一个包含所有诊所医疗历史详细信息的MedicalHistory表以及另一个用于保存患者相应访问病史的表格。
MedicalHistory
ClinicId
MedicalHistoryFieldId
MedicalHistoryFieldName
MedicalHistoryPatientClinicVisit
VisitId
MedicalHistoryFieldId
MedicalHistoryFieldValue
我不确定这些方法是否是良好做法,是否可以更好地使用第三种方法?
答案 0 :(得分:1)
如果你只对这个人所患的疾病感兴趣,那么存储假的/不存在的疾病是毫无意义的。不是真的知道所有的细节并没有帮助获得最好的解决方案,但我可能会创建这样的东西:
人:
PersonID
Name
Address
诊所:
ClinicID
Name
Address
疾病:
DiseaseID
Name
MedicalHistory:
HistoryID (identity, primary key)
PersonID
ClinicID
VisitDate (either date or datetime2 field depending what you need)
DiseaseID
Details, Notes etc
我创建了这个表,因为我的假设是人们在一次访问时很可能只有1种疾病,所以如果有时会有几种,可以添加更多的行,而不是为访问创建单独的表,使查询最复杂。
如果您还需要跟踪检查疾病但结果为阴性的情况,则历史表需要新的状态字段。
如果您需要限制哪个诊所可以输入哪些疾病,那么您也需要单独的表格。
答案 1 :(得分:1)
创建一组关系表,以获得强大而灵活的系统,使诊所能够添加任意数量的疾病,患者和访问。此外,构建各种分组标准的查询对您来说也会变得更加容易。
构建一组4个表加上多对多(M2M)"链接"表格如下。前3个表将是不太频繁更新的表。在每次访问诊所时,在[访问]表中添加1行,其中包含访问的完整详细信息,除了疾病信息。在M2M [MedicalHistory]表中添加1行,了解患者将在该访问时咨询的每种疾病。
另一方面 - 考虑使用表值参数从前端程序向SQL Server存储过程传递多行(每个疾病被查询一行)。
表[Clinics]
ClinicId Primary Key
ClinicName
-more columns -
表[Diseases]
DiseaseId Primary Key
ClinicId Foreign Key into the [Clinics] table
DiseaseName
- more columns -
表[Patients]
PatientId Primary Key
ClinicId Foreign Key into the [Clinics] table
PatientName
-more columns -
表[Visits]
VisitId Primary Key
VisitDate
DoctorId Foreign Key into another table called [Doctor]
BillingAmount
- more columns -
最后是M2M表:[MedicalHistory]
。 (重要 - 所有FK字段应组合在一起形成此表的PK。)
ClinicId Foreign Key into the [Clinics] table
DiseaseId Foreign Key into the [Diseases] table
PatientId Foreign Key into the [Patients] table
VisitId Foreign Key into the [Visits] table