DPCデータの分析とかやるブログ

DPCデータの分析なんかをテキトーにやってます。

DPCに包括された注射薬剤を抽出するSQL

「一体どんな注射がDPCで消えたのか」調べたい、ということは割とよくあります。
DICにおけるリコモジュリンのように、分岐が用意されていればいざ知らず、殆どの薬剤は溶けて消えてしまうからです。
以下のSQLで、誰にどのような薬剤が使われ消えて行ったのか、リストを取り出すことが出来ます。

select e.データ識別番号,e.実施年月日,e.診療明細名称,SUM(e.明細点数・金額*e.行為回数) AS 薬剤円
from e1604 AS e
Where e.データ区分 BETWEEN 30 AND 33
AND (データ識別番号,実施年月日) IN (select データ識別番号,実施年月日
from d1604 Where データ区分 = 93)
group by e.データ識別番号,e.実施年月日,e.診療明細名称
HAVING SUM(e.明細点数・金額*e.行為回数) > 0

このSQLでは二つのテーブル(EFファイルとDファイル)から呼び出しをしています。 理屈としては

  1. EFから全ての注射薬剤データを引っこ抜く

  2. DファイルからDPC入院料のあるデータ識別番号と実施年月日を抽出する

  3. ふたつのデータを突き合わせて、DPC入院料のあるときに使用された薬剤情報だけを残す

という仕組みです。
AND (データ識別番号,実施年月日) IN (select データ識別番号,実施年月日 from d1604 Where データ区分 = 93) となっている部分がミソで、EFのデータ識別番号,実施年月日とDファイルのデータ識別番号,実施年月日が一致するものを条件にしています。

※()で括って複数のキーを指定する記法は、Postgre特有かも知れません。
 他のSQLでも動くかも知れませんが、保証は出来ないです