2014-05-06 107 views
0

我拉動一個代碼(ICD9),這是在表AbsDrgDiagnosis.Diagnosis。我需要拉另一個代碼(SNOMED_CT),其是在另一個表DMisNomenclatureMapCodes.CodeID當DMisNomenclatureMapCodes.CodeSetID =「SNOMED_CT」運行多個子查詢

然後僅將這兩個錶鏈接的方式是通過AbsDrgDiagnosis.Diagnosis = DMisNomenclatureMapCodes.CodeID時DMisNomenclatureMapCodes.CodeSetID = 'ICD9'

因此,例如,我不得不從DMisNomenclatureMapCodes.CodeID時CodeSetID = 'SNOMED_CT' 報告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,這都等於290.23,但在那之後,我失去了,我怎麼得到SNOMED碼比較AbsDrgDiagnosis.Diagnosis。我認爲我必須做DMisNomenclatureMapCodes.MisNomenclatureMapID另一個子查詢,以獲得分組,然後找到SNOMED_CT的CodeSetID拿到代碼ID 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

由於任何人誰回答了這一點。事實證明,我不得不建立幾個子查詢來實現我想要的。最底層的子查詢返回的命名地圖結果當兩個ICD9代碼都存在通過

NMC.CodeID = AbsDrgDiagnoses.Diagnosis. 

現在,這是我的問題,我不知道,你可以在子查詢中時,它包括一個與聲明從另一個子查詢返回單個結果,學到了新的東西!因此,我只能回「SNOMED_CT」,而不是5510009.實際代碼ID的CodeSetID通過將在

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 
+0

從技術上講,我不能只加入NMC.CodeID = AbsDrgDiagnoses.Diagnosis,然後對連接進行子查詢嗎? – Rich

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' 

+0

丹感謝您的回覆。如果我放置CodeSetID ='ICD9',它將返回現在返回的內容。當AbsDrgDiagnoses.Diagnosis具有許多它總是ICD9並且當AbsDrgDiagnoses.Diagnosis = DMisNomenclatureMapCodes.CodeID它將永遠是「ICD9」。 – Rich

+0

因此,我認爲它必須做的方式是找到AbsDrgDiagnoses.Diagnosis = DMisNomenclatureMapCodes.CodeID之間的匹配,然後以此爲基礎進行的DMisNomenclatureMapCodes.MisNomenclatureMapID領域的一些搜索,然後拿到SNOMED_CT代碼。至少這就是我的想法,但我願意接受任何建議。 :) – Rich