0

我正在提取表 AbsDrgDiagnosis.Diagnosis 中的一个代码 (ICD9)。当 DMisNomenclatureMapCodes.CodeSetID = 'SNOMED_CT' 时,我需要提取另一个表 DMisNomenclatureMapCodes.CodeID 中的另一个代码(SNOMED_CT)

那么链接这两个表的唯一方法是当 DMisNomenclatureMapCodes.CodeSetID = 'ICD9' 时通过 AbsDrgDiagnosis.Diagnosis = DMisNomenclatureMapCodes.CodeID

例如,当 CodeSetID = 'SNOMED_CT' 时,我必须从 DMisNomenclatureMapCodes.CodeID 报告 3942005。

EXAMPLE DATA:
                                Diagnosis   
AbsDrgDiagnosis                 290.23  

                                CodeID         CodeSetID    MisNomenclatureMapID
DMisNomenclatureMapCodes        290.23         ICD9         IMO-PROC-99959
                                3942005        SNOMED_CT    IMO-PROC-99959
                                53899          CPT          IMO-PROC-99959

到目前为止,我只能比较 DMisNomenclatureMapCodes.CodeID 上的 AbsDrgDiagnosis.Diagnosis,它们都等于 290.23,但之后我不知道如何获得 SNOMED 代码。我假设我必须对 DMisNomenclatureMapCodes.MisNomenclatureMapID 执行另一个子查询以获取分组,然后找到 SNOMED_CT 的 CodeSetID 以获取 CodeID 3942005 的最终值。我该如何尝试呢?任何帮助将不胜感激,我尝试了几个子查询,但他们出错了。我是 SQL 新手,所以如果我说的不正确或以专家的方式写出来,请善待。

CODE:
DECLARE
    SET @StartDate = '10/28/2013 00:00:000'
    SET @EndDate = '12/28/2013 23:59:000'

SELECT 
    ,Diagnosis AS Code_3
    ,DMisNomenclatureMapCodes.CodeID
    ,DMisNomenclatureMapCodes.MisNomenclatureMapID

FROM AbsDrgDiagnoses

    LEFT JOIN AbstractData
    ON AbstractData.VisitID = AbsDrgDiagnoses.VisitID
    LEFT JOIN DMisNomenclatureMapCodes
    ON DMisNomenclatureMapCodes.CodeID = AbsDrgDiagnoses.Diagnosis

WHERE AbstractData.DischargeDateTime BETWEEN @StartDate and @EndDate
4

2 回答 2

1

鉴于此,“那么,当 DMisNomenclatureMapCodes.CodeSetID = 'ICD9' 时,连接这两个表的唯一方法是通过 AbsDrgDiagnosis.Diagnosis = DMisNomenclatureMapCodes.CodeID”,难道你不能改变这个:

LEFT JOIN DMisNomenclatureMapCodes
ON DMisNomenclatureMapCodes.CodeID = AbsDrgDiagnoses.Diagnosis

对此:

LEFT JOIN DMisNomenclatureMapCodes
ON DMisNomenclatureMapCodes.CodeID = AbsDrgDiagnoses.Diagnosis
and DMisNomenclatureMapCodes.CodeSetID = 'ICD9'

?

于 2014-05-06T19:46:01.363 回答
0

感谢任何回复此问题的人。事实证明,我必须构建几个子查询才能实现我想要的。当两个 ICD9 代码都存在时,最底部的子查询返回命名图结果

NMC.CodeID = AbsDrgDiagnoses.Diagnosis. 

现在这是我的问题,我不知道当它从另一个子查询返回单个结果时,您可以在子查询中包含一个 AND 语句,学到了一些新东西!因此,我只能返回“SNOMED_CT”的 CodeSetID 而不是 5510009 的实际 CodeID。通过输入

WHERE NMC.CodeSetID = 'SNOMED_CT' AND NMC.MisNomenclatureMapID IN

然后我能够返回所需的值。

代码:

,COALESCE((SELECT NMC.CodeID
    FROM DMisNomenclatureMapCodes NMC   
    WHERE NMC.CodeSetID = 'SNOMED_CT'  AND NMC.MisNomenclatureMapID IN
    (SELECT NMC.MisNomenclatureMapID 
        FROM DMisNomenclatureMapCodes NMC   
        WHERE (NMC.CodeID = AbsDrgDiagnoses.Diagnosis)
    ) 
),'') AS SNOSet_TEST
于 2014-05-07T22:29:14.753 回答