(令和4年6月9日 改良部分が多々あるので 参考程度にお願い致します)
はじめに
環境
記事の概要
作成したプログラム
今後の活用
終わりに
はじめに
現役で医療事務をしています
医療業界には様々な
「非効率」 「複雑化」「情報のばらつき」
等問題点が多いため上げるときりがないです が
まずは、
医療事務の仕事はルーティンワークが多く 且つ 患者様等とのコミュニケーションを取りながらの大量の事務作業が多いため
「自動化」「簡素化」
出来ないかということがpythonを学び始めたきっかけです
環境
Python 3.8.8
pandas : 1.1.3
python : 3.8.5.final.0
glob2 0.7
pip : 21.3.1
(pipコマンドで確認: pip list)
記事の概要
▶対象者
どのような方にも読んでいただきたいですが
医療業界で働いている方 医療業界に関わりがある業者の方 に少しだとしても為になるのではないかと思っています
▶どのようなことをしていくか
データ分析 。
詳細に記載すると、
診療録である.txtデータ→私が使用している電子カルテであれば診療録が .txtの拡張子として保存が常にされています
請求書になる.UKEファイル(形式は.csv)→国に提出するレセプトという ある意味 請求書の情報が記載されているデータ
レセプトは 患者様の自己負担金以外の金額を国に請求するための いわゆる請求用紙です
それぞれの 検査等に対し 様々な項目があり 各々に点数が割り当てられています
該当の検査等の項目をレセプトに記載し、国に請求することを算定する(以下、算定するという言葉を使用) といいます
診療録である.txtデータにて
該当の検査をしているか 該当のキーワードを分析
請求書になる.UKEファイル(形式は.csv) にて
該当のキーワードとなる行にて 該当となる 傷病名コードと診療コード(コードについてはHPに著作権があるので 傷病名コード(医科)等調べると該当HPが出ます)があるか分析
各々の分析を照合し
算定しているが
算定する際に必要 且つ 検査しており所見として見られる病名があるかチェックする
「病名漏れ」
と
検査を行っている 且つ 検査しており所見として見られる病名がある が
算定していない
「算定漏れ」
を出力する
レセプトは1日30人患者様がいらっしゃっているとして 30人×31日でおおよそ900件ほどあるので 人間の力ではどうしても漏れが発生します
患者様への未収金分の回収、返金処理等 迷惑をかけることも増えます
そのため 患者様への負担を軽減する。医療事務の仕事量を軽減する という意味で良い点があります
最終目標としては医療事務が一人一人の患者様の会計前に その日に行った検査に対する算定を請求しているか、算定に伴う患者様ごとの病名を目視にて確認しています
作業についてはルールに沿って確認しています ルーティン作業になります
人間が行うと効率化すれば5分、人によっては30分チェックにかかります
人間一人一人の能力によって患者様が支払いに待つ時間が変わってしまうので患者様に待たせることなく早い時間で支払いを行えるようにし病院にいるのはただでさえ疲れるので早めに病院を終え薬などもすぐに受け取れるように、ストレスを軽減する というのが目標です
電子レセプトについて
作成したプログラム
①必要なものをimport 等していきます
②診療録の記載がある 拡張子.txt(以降 診療録という単語を使って説明していく) が入っているパスをglobを使用し,
すべて読み取り datastoresに格納
(print関数にて目的のものが出力されるか確認もする)
ディレクトリ構成は下記
(該当のディレクトリ)/*(年月日)/*.txt(.txtの拡張子のあるファイル 画像の場所では1つのみある)
③datastoresに格納されている 診療録が保存されているパス1件1件をfor文で取り出す
txtデータのファイル名は「 _ 」で区切られている
_ で区切られている1番目が患者番号に該当するため (txtdirsp[0]) とし該当の患者番号を出力するために後々使用する
④診療録のデータを1件openし content 変数に格納していく
⑤診療録の中身に"3D" または "OCT" の文字列が存在すれば、exam3dpatients変数に txtdirsp[0](患者番号)を格納する
⑥点検用レセプト(私が使用しているカルテは点検用レセプトデータにしか薬の情報は入っていないため、院外処方となっているため提出するUKEファイルというものには薬の情報が全く入っていないため)を参照し
点検用レセプト(国保).UKE をopen、 kokuho変数に格納
点検用レセプト(社保).UKEをopen、syaho変数に格納
<当ブログでは kokuho変数のデータのみ使用していく>
点検用レセプトは 1患者につき ここで使用するもので言うと RE、SY、SI 行というもので構成されている
UKEファイルについては下記URL P6〜P8 参照
http://www.resept.com/BENKYOKAI/reseptseminartext2013.pdf
RE,SY,SI は いづれかの行にいづれか1個のみが一番左の1列目に記載されている
RE がある行に 患者情報
SY がある行に 傷病名情報
SIがある行に 診療行為情報
RE、SY、SI 行のワンセットの1人目の患者の情報が終わるとき 次のRE行が出現する そのRE行から 2人目の情報となる
⑦今回は 眼底三次元(D256-2 眼底三次元画像解析 200点) という算定項目を対象とする
三次元病名が 点検用レセプト内のSYが存在する行に存在するかどうかチェックする
そのため 三次元病名の 「傷病名コード」を sanjigen_byoumei変数に格納する
該当病名は各都道府県ごとに違うことと個人情報となるためここでは [1,2,3,4]と表すこととする
⑧国保の点検レセプトから1要素ずつ取り出しfor文で処理をしていく
⑨レセプトの1要素にREが出てくるたびに患者番号(splitしてインデックス番号13番めの内容)を格納、line_◯◯ の状況を更新
⑩ レセプトの1要素に SYが出現し かつ 三次元病名の傷病名コードに当てはまる記述があれば line_SYをTrueにする
⑪レセプトの1要素に SIが出現し かつ 眼底三次元の 診療行為番号(ここでは非公開とする ネットにて診療行為コードと検索すると対象のサイトが現れるので探せる)に当てはまる記述があれば ,line_SIをTrueにする
kokuhoARI3d という関数について ここでのif文の条件式に当てはまった患者番号を
⑨のname関数にて取得する
⑫line_SY が当てはまらない(レセプトの1要素に SYが出現し かつ 三次元病名の番号に当てはまる記述がない)
かつ
line_SI に該当する(レセプトの1要素に SIが出現し かつ 眼底三次元の診療行為コードに当てはまる記述がある)
<要約すると 検査はしているが病名がない>
ならば
⑬検査を行っているが(exam3dpatients)が三次元を算定していない患者番号(nowmonth3dID)を出力していく
exam3dpatientsは⑤参照 kokuhoARI3D は⑪参照
exam3dpatients は重複しているデータを省くと260件
kokuhoARI3D は64件となる
出力されるのは248件の患者番号となる
結果 検査を行っているが 算定を行っていない患者は248件となる
<この部分にて該当の年月日を 指定する コードを記載していないため上記 248件となった 更に改良し使用する際は 該当年月日も条件として指定した件数が出力される予定である>
今後の活用
「自動化」「効率化」をポイントに行いたいことは多数あるのですが
まず 直近の目標として
今回のコードについて
→一部なのでコードの完成後Flaskアプリ化し GUI形式で使用できるようにする
最終的には
診療録として扱える電子カルテアプリを作成し今回の病名チェカー兼算定チェッカーを使用できるようにする
そのため対象のサイトからデータを自動取得する等 更なる自動化を行いたい
今回 データ分析を学んでいるので、
時系列解析等も今現在作成中なので作成し発展させ来院患者数と月ごとの売上(診療報酬の総合)を予測する
データ分析に関係ないものとして興味があるものが
Twilio 等で電話対応 自動化
ネット予約のサイト、自動受付 等 多々興味があるので
その他についてはゆっくり行っていきたいと思っています
終わりに
自分の性格としては完璧主義な部分があり自分でどうにかしようとする面があるので
思い切って チュータの方にカウンセリングや質問をし
自分で調べ続ければわかるのでは?と思うものも積極的に聞けるチューターの方の存在はとても必須だと感じました
就職しOJT等で教えていただくのが一番環境としてはいいかもしれません
(その職場の教える方等が良さそうであれば)
私の場合は 医療事務を本業としてこれからも働いていく予定なので、 本業で使用できるものを作成しながら 副業としてどこかで働ければと考えているのでサービスを多用しながら模索していきたいと思います