EFファイル統合を自力でやってみる SQLでの実装(2)
前回までの手続きで、「Eファイルの入ったテーブル」「Fファイルの入ったテーブル」「空のEFテーブル」が出来ました。
今回はこの三つを使ってEFファイルをでっち上げてみます。
まず、EFファイルの明細点数・金額
はFファイルの3つの項目をくっつけたものなので、それを用意しておきましょう。
#まずFファイルに新しいカラムを追加する ALTER TABLE FTEST ADD COLUMN 明細点数・金額 double precision;
#続いて該当の3項目を合成する UPDATE FTEST SET 明細点数・金額 = 行為明細点数 + 行為明細薬剤料 + 行為明細材料料
いよいよEFテーブルにデータを流し込んでいきます。
まずはEファイルの中身を入れましょう。
INSERT INTO EFTEST (施設コード,データ識別番号,退院年月日,入院年月日, データ区分,順序番号,病院点数マスタコード,レセプト電算コード,解釈番号,診療明細名称, 行為点数,行為薬剤料,行為材料料,行為回数,保険者番号,レセプト種別コード,実施年月日, レセプト科区分,診療科区分,医師コード,病棟コード,病棟区分,入外区分,施設タイプ) Select 施設コード,データ識別番号,退院年月日,入院年月日, データ区分,順序番号,病院点数マスタコード,レセプト電算コード,解釈番号,診療行為名称, 行為点数,行為薬剤料,行為材料料,行為回数,保険者番号,レセプト種別コード,実施年月日, レセプト科区分,診療科区分,医師コード,病棟コード,病棟区分,入外区分,施設タイプ from ETEST
このうち行為明細番号
は、Fファイルを流し込む前に0を設定する必要があります。
(Fファイルでは行為明細番号は1から始まる連番ですが、実際のEFファイルでは0から始まっています。
これは、Eファイル由来のレコードに0が振られているためです)
処理そのものは簡単ですので、さっさとやってしまいましょう。
UPDATE ef1511test SET 行為明細番号 = 0
続けてFファイルを流し込みます。上と同じような感じです。
INSERT INTO EF1511TEST (施設コード,データ識別番号,退院年月日,入院年月日, データ区分,順序番号,行為明細番号,病院点数マスタコード,レセプト電算コード,解釈番号,診療明細名称, 使用量,基準単位,明細点数・金額,円点区分,出来高実績点数) Select 施設コード,データ識別番号,退院年月日,入院年月日, データ区分,順序番号,行為明細番号,病院点数マスタコード,レセプト電算コード,解釈番号,診療明細名称, 使用量,基準単位,明細点数・金額,円点区分,出来高実績点数 from f1511test
問題はここからです。
現状では「実施年月日」が穴だらけになっていますが、それでは困りますね。
穴埋めする方法は調べると色々出てきます。例えば、連番で穴埋めする方法、とかで検索すると色んなやり方がありますが、ここではあえて泥臭い方法をやってみましょう。
select f.データ識別番号,f.入院年月日,f.データ区分,f.順序番号,f.施設コード,f.退院年月日,f.行為明細番号, f.病院点数マスタコード,f.レセプト電算コード,f.解釈番号,f.診療明細名称,f.使用量, f.基準単位,f.明細点数・金額,f.円点区分,f.出来高実績点数,f.出来高包括フラグ, f.行為点数,f.行為薬剤料,f.行為材料料,f.行為回数,f.保険者番号,f.レセプト種別コード,f.実施年月日, f.レセプト科区分,f.診療科区分,f.医師コード,f.病棟コード,f.病棟区分,f.入外区分,f.施設タイプ,e.行為回数 AS 行為回数2,e.実施年月日 AS 実施年月日2,e.診療科区分 AS 診療科区分2,e.医師コード AS 医師コード2,e.病棟コード AS 病棟コード2,e.病棟区分 AS 病棟区分2 from EFTEST AS f LEFT OUTER JOIN ETEST AS e USING(データ識別番号,入院年月日,データ区分,順序番号)
クエリを実行すると、一番最後の列に「○○○○2」という列が出来ていて、そこに穴埋めされた実施年月日等が入っています。あとはこれをExcelか何かで加工すれば、EFファイルのいっちょ上がりです。 お疲れ様でした。
...いやいやいや。
これは幾らなんでもめんどくさいでしょう。
正直、こんな処理をやるのにSQLが向いているとは思えません。
私はこの一連の処理をやり終えてから気付いたのですが(先に気付け)、どう考えてもスクリプトを書いた方が早いです。
というわけで次回はPythonを使った実装を試してみましょう。