2012-07-25 93 views
2

我有一个数据库,可以捕获与患者有关的医疗实践信息。这些信息在多个表流传:标记系统的数据库设计

  1. 病人 - 有关联系信息
  2. PatientMedicalHistory - 对于不相关的当前问题
  3. PatientEpisode医疗条件 - 针对当前访问
  4. PatientEpisodeReason财务信息 - 东西有关为什么患者今天在这里

我想介绍一个标记系统,以便在提出pat时出现任何消​​息客户详细信息。因此,例如,如果患者以前曾有过心脏病发作,则需要标记该信息(该信息位于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列。

+0

为什么患者没有一个与他们相关的标志列表? – 2012-07-25 02:10:02

+0

别担心,我得到你正在尝试做的事,病人确实有一个标志列表,并且该标志告诉你它正在标记哪个表/行/列。 – 2012-07-25 02:13:52

+0

这是正确的。该表格描述哪个表格应该具有哪个值以便提升标志。它似乎并不是最好的方法,但想知道是否有更好的方法。 – Paul 2012-07-25 02:21:49

回答

0

您可以将三个字段添加到PatientMedicalHistory表中:器官,疾病,关键性。

当患者出现问题时,您可以根据当前病例中出现的同一器官或疾病来提取患者病史,其中临界点符合特定阈值。你在这里做的是分类你的病人的历史数据,因此它与当前的情节数据有关。