标记系统的数据库设计

时间:2012-07-25 02:02:00

标签: sql sql-server database-design

我有一个数据库,可以捕获与患者有关的医疗实践信息。这些信息分布在几个表中:

  1. 患者 - 有关联系信息
  2. PatientMedicalHistory - 对于与当前问题无关的医疗条件
  3. PatientEpisode - 当前访问的财务信息
  4. PatientEpisodeReason - 关于病人今天在这里的原因
  5. 我想介绍一个标记系统,以便在显示患者详细信息时显示任何消息。因此,例如,如果患者之前曾患过心脏病,则需要对其进行标记(该信息将在PatientMedicalHistory中)。

    我目前的方法是设置一个标志查找表,它定义标志类型,以及该标志所引用的表/列以及为了引发该标志的值:

    CREATE TABLE FlagType
    (
        ID INT PRIMARY KEY IDENTITY,
        TypeName NVARCHAR(300) NOT NULL,
        Colour NVARCHAR(100) NOT NULL,
        Urgency INT NOT NULL
    )
    
    CREATE TABLE Flag
    (
        ID INT PRIMARY KEY IDENTITY,
        FlagTypeID INT NOT NULL REFERENCES FlagType(ID),
        TableName NVARCHAR(300) NOT NULL,
        FieldName NVARCHAR(300) NOT NULL,
        FlagValue NVARCHAR(300) NOT NULL
    )
    

    这看起来非常好,但后来尝试编写a)一个不像混乱的存储过程或b)一个不会破坏性能的LINQ查询似乎很难。

    有没有其他选择?问题是可以在上面任何表中的任何列上定义标志。总计约80列。

1 个答案:

答案 0 :(得分:0)

您可以在PatientMedicalHistory表中添加三个字段:器官,疾病,危重度。

当患者出现问题时,您可以根据当前情况中出现的相同器官或疾病来提取患者病史,其中临界症达到某个阈值。您在这里做的是对患者病史数据进行分类,使其与当前的情节数据相关。