DPC入院中に行った診療行為を探すSQL(ついでにパラメータの変え方も)
以前、DPC中に使用した注射薬剤を探すSQLを書きました。
これはちょっと修正するだけで、あらゆる診療行為に拡張できます。
このブログではSQLの解説はあんまり真面目にしてきませんでしたので、今回はゆっくり解説をしてみましょう。
なお、SQLってなんだろ、という人には、POSTDの「初心者のためのSQLガイド」が分かりやすくコンパクトにまとまっています。オススメです。
というか私が勉強し始めたときにこの記事があれば・・・
以前紹介したSQL
select e.データ識別番号,e.実施年月日,e.診療明細名称,SUM(e.明細点数・金額*e.行為回数) from ef1601 AS e Where e.データ区分 BETWEEN 30 AND 33 AND (データ識別番号,実施年月日) IN (select データ識別番号,実施年月日 from d1601 Where データ区分 = 93) group by e.データ識別番号,e.実施年月日,e.診療明細名称 HAVING SUM(e.明細点数・金額*e.行為回数) > 0
いきなりこれを見せられてもちんぷんかんぷんだと思います。職場で後輩に見せたときは、辛そうな顔をされました。
反省しています。
さて、ここにWhere e.データ区分 BETWEEN 30 AND 33という一文がありますね。
英語を素直に読むと、「データ区分が30と33の間にあるところ」です。
SQLはその通りに動いて、データ区分30から33の間のデータ、即ち注射薬剤を引っこ抜いてきます。
さて、こんなSQLをでっち上げてデータを上に見せたところ、「じゃあ次は検査のデータを持ってきて」と言われたとします。
どうしましょうか?
検査データを引っこ抜くSQL
select e.データ識別番号,e.実施年月日,e.診療明細名称,SUM(e.明細点数・金額*e.行為回数) from ef1601 AS e Where e.データ区分 = 60 AND (データ識別番号,実施年月日) IN (select データ識別番号,実施年月日 from d1601 Where データ区分 = 93) group by e.データ識別番号,e.実施年月日,e.診療明細名称 HAVING SUM(e.明細点数・金額*e.行為回数) > 0
貴様、コピペをしたな!
はい。コピペをしました。
でもよく見てください。
3行目がWhere e.データ区分 = 60になっています。日本語にすれば「データ区分が60のところ」です。
これでデータが出来上がりですが、どうせなので珈琲でも一杯淹れて、PCの前で考えるポーズをするとよいでしょう。
その後見せに行けば、たぶん「お、仕事をしたな」と思ってくれます。
冗談はさておき、SQLでデータ範囲を変更するのはかように簡単です。しかも平易な英文にしか見えません。
上記のコードの意味が全体としてちんぷんかんぷんでも、3行目を修正するだけなら全く難しくないはずです。
このブログで何度が書いていますが、DPCデータのような、一ヶ月で数十万行規模になるデータを扱うなら、まず手を出すのはSQLです。
皆でDPCデータのSQLクエリを共有しあう場所があれば、本当は一番いいのですが・・・
点数算定のノウハウを共有するサイトはあるようですし、探せばそんなサイトもあるのでしょうか?