OkiTool開発日記

データベース参照ツールを開発しています。そのツールの開発、利用方法秘話などなどの紹介

「看護必要度精度検証」 - HファイルとEFファイルの突合 のSQL

syskobo.hatenablog.com


select

to_char(to_date(h.TARGETDATE),'YYYY/MM/DD') 対象日
,h.PATIENTNO 患者番号
,( z.KANJILASTNAME || ' ' || z.KANJIFIRSTNAME ) 患者氏名

,TO_DATE(h.TARGETDATE) - A.ADMISSIONDATE + 1 入院日数

,h.WARDCODE 病棟
,h.ROOMCODE||'-'||h.BEDCODE 病室

,decode(h.ADMTYPE,'N','N:入院','E','E:転棟','G','G:外来','X','X:死亡' ) 区分
,decode(h.HOKATU,null,h.HANTEI,'対象外', h.HANTEI,h.HOKATU ) 判定

,case
when NEEDEDDEGQUANTITYA >= '2' and NEEDEDDEGQUANTITYB >= '3' then '○'
when NEEDEDDEGQUANTITYA >= '1' and NEEDEDDEGQUANTITYB >= '3' and h.B14 > 0 then '○'
when NEEDEDDEGQUANTITYA >= '1' and NEEDEDDEGQUANTITYB >= '3' and h.B14 > 0 then '○'
when NEEDEDDEGQUANTITYA >= '3' then '○'
when NEEDEDDEGQUANTITYC >= '1' then '○'
else '_' end
|| ' ' || NEEDEDDEGQUANTITYA || '-' || NEEDEDDEGQUANTITYB || '-' || NEEDEDDEGQUANTITYC 必要度Ⅰ

,case
when ATEN >= '2' and NEEDEDDEGQUANTITYB >= '3' then '○'
when ATEN >= '1' and NEEDEDDEGQUANTITYB >= '3' and h.B14 > 0 then '○'
when ATEN >= '1' and NEEDEDDEGQUANTITYB >= '3' and h.B14 > 0 then '○'
when ATEN >= '3' then '○'
when CTEN >= '1' then '○'
else '_' end
|| ' ' || nvl(ATEN,0) || '-' || NEEDEDDEGQUANTITYB || '-' || nvl(CTEN,0) 必要度Ⅱ

,case
when decode(h.A11,ef.A11,0,1) = 1 then '×'
when decode(h.A12,ef.A12,0,1) = 1 then '×'

when decode(h.A2,ef.A2,0,1) = 1 then '×'
when decode(h.A3,ef.A3,0,1) = 1 then '×'
when decode(h.A4,ef.A4,0,1) = 1 then '×'
when decode(h.A5,ef.A5,0,1) = 1 then '×'
when decode(h.A6,ef.A6,0,1) = 1 then '×'

when decode(h.A71,ef.A71,0,1) = 1 then '×'
when decode(h.A72,ef.A72,0,1) = 1 then '×'
when decode(h.A73,ef.A73,0,1) = 1 then '×'
when decode(h.A74,ef.A74,0,1) = 1 then '×'
when decode(h.A75,ef.A75,0,1) = 1 then '×'
when decode(h.A76,ef.A76,0,1) = 1 then '×'
when decode(h.A77,ef.A77,0,1) = 1 then '×'
when decode(h.A78,ef.A78,0,1) = 1 then '×'
when decode(h.A79,ef.A79,0,1) = 1 then '×'
when decode(h.A710,ef.A710,0,1) = 1 then '×'
when decode(h.A711,ef.A711,0,1) = 1 then '×'

when decode(h.C16,ef.C16,0,1) = 1 then '×'
when decode(h.C17,ef.C17,0,1) = 1 then '×'
when decode(h.C18,ef.C18,0,1) = 1 then '×'
when decode(h.C19,ef.C19,0,1) = 1 then '×'
when decode(h.C20,ef.C20,0,1) = 1 then '×'
when decode(h.C21,ef.C21,0,1) = 1 then '×'

when decode(h.C221,ef.C221,0,1) = 1 then '×'
when decode(h.C222,ef.C222,0,1) = 1 then '×'
when decode(h.C223,ef.C223,0,1) = 1 then '×'
end "不一致"

,h.ADMISSIONNO 入院NO

,GET_STREFH2(h.A11,ef.A11) "①創傷処置"
,GET_STREFH2(h.A12,ef.A12) "②褥瘡処置"
,GET_STREFH2(h.A2,ef.A2) "呼吸ケア"
,GET_STREFH2(h.A3,ef.A3) "点滴ライン"
,GET_STREFH2(h.A4,ef.A4) "心電図モニタ"
,GET_STREFH2(h.A5,ef.A5) "シリンジポンプ"
,GET_STREFH2(h.A6,ef.A6) "輸血"

,GET_STREFH2(h.A71,ef.A71) "①抗悪性腫瘍剤の使用"
,GET_STREFH2(h.A72,ef.A72) "②抗悪性腫瘍剤の内服"
,GET_STREFH2(h.A73,ef.A73) "③麻薬注射薬の使用"
,GET_STREFH2(h.A74,ef.A74) "④麻薬の内服・貼付・坐剤"
,GET_STREFH2(h.A75,ef.A75) "⑤放射線治療"
,GET_STREFH2(h.A76,ef.A76) "⑥免疫抑制剤の管理"
,GET_STREFH2(h.A77,ef.A77) "⑦昇圧剤の使用"
,GET_STREFH2(h.A78,ef.A78) "⑧抗不整脈剤"
,GET_STREFH2(h.A79,ef.A79) "⑨抗血栓塞栓薬"
,GET_STREFH2(h.A710,ef.A710) "⑩ドレナージの管理"
,GET_STREFH2(h.A711,ef.A711) "⑪無菌治療室"

,GET_STREFH2(h.A8,ef.A8) "救急搬送後の入院"

,GET_STREFH2(h.C16,ef.C16) "開頭手術7"
,GET_STREFH2(h.C17,ef.C17) "開胸手術7"
,GET_STREFH2(h.C18,ef.C18) "開腹手術4"
,GET_STREFH2(h.C19,ef.C19) "骨の手術5"
,GET_STREFH2(h.C20,ef.C20) "胸腔鏡・腹腔鏡手術3"
,GET_STREFH2(h.C21,ef.C21) "全身麻酔・脊椎麻酔の手術2"
,GET_STREFH2(h.C221,ef.C221) "①経皮的血管内治療"
,GET_STREFH2(h.C222,ef.C222) "②経皮的心筋焼灼術等の治療"
,GET_STREFH2(h.C223,ef.C223) "③侵襲的な消化器治療"

,h.B9 "寝返り"
,h.B10 "移乗"
,h.B11 "口腔清潔"
,h.B12 "食事摂取"
,h.B13 "衣服の着脱"
,h.B14 "診療・療養上の指示"
,h.B15 "危険行動"


from MS_HALL h -- Hファイル
left join VS_EFALL ef on ef.ymd = h.TARGETDATE and ef.ptno = h.PATIENTNO -- EFファイル

left join Z_IBAPATIENT@order97.opgh.local z on z.PATIENTNO = h.PATIENTNO
left join Z_ADMADMISSION@order97.opgh.local a on a.ADMISSIONNO = h.ADMISSIONNO

where h.HOSPITALCODE = '01'
and h.ROOMTYPE = '0'
and h.TARGETDATE between '<p>DATE21|開始対象日|AddDays(-34)</p>' and '<p>DATE21|終了対象日|AddDays(-4)</p>'

order by h.TARGETDATE , h.WARDCODE , h.ROOMCODE , h.BEDCODE