我正在拉一个代码(ICD9),它在表AbsDrgDiagnosis.Diagnosis中。当DMisNomenclatureMapCodes.CodeSetID =' SNOMED_CT'
时,我需要拉另一个代码(SNOMED_CT),这是另一个表DMisNomenclatureMapCodes.CodeID然后,当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
答案 0 :(得分:1)
鉴于此,“然后只有这两个表的链接是通过AbsDrgDiagnosis.Diagnosis = DMisNomenclatureMapCodes.CodeID当DMisNomenclatureMapCodes.CodeSetID ='ICD9'”时,你不能只改变这个:
LEFT JOIN DMisNomenclatureMapCodes
ON DMisNomenclatureMapCodes.CodeID = AbsDrgDiagnoses.Diagnosis
到此:
LEFT JOIN DMisNomenclatureMapCodes
ON DMisNomenclatureMapCodes.CodeID = AbsDrgDiagnoses.Diagnosis
and DMisNomenclatureMapCodes.CodeSetID = 'ICD9'
答案 1 :(得分:0)
感谢所有回复此问题的人。事实证明,我必须构建几个子查询来实现我想要的。当通过
存在两个ICD9代码时,最底部的子查询返回命名映射结果NMC.CodeID = AbsDrgDiagnoses.Diagnosis.
现在这是我的问题,我不知道你可以在子查询中包含一个AND语句,当它从另一个子查询返回一个结果时,学到了新的东西!因此,我只能返回' SNOMED_CT'的CodeSetID。而不是实际的CodeID为5510009.通过输入
WHERE NMC.CodeSetID = 'SNOMED_CT' AND NMC.MisNomenclatureMapID IN
然后我能够返回所需的值。
CODE:
,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