こんにちは、医学生のしおん(@preproshio_med)です。
医学部の臨床実習であるポリクリ、またその後の症例レポート作成では、カルテ情報を抽出してレポートを作成する機会が多々あります。
このカルテ情報の書き出しは、病院の規則や実習の規則によってもやり方がかなり異なり、大変な目にあっている人も多いのではないかと思います。
- USBなどで書き出しができる
- 印刷することはできる
- 目で見て写すことしかできない
など状況によってやり方などは大きく異なります。
カルテ情報をコピペするなどして書き出すことのできる場合や印刷する場合には、そのままの書式で持ってきたり、コピペした情報を整形したりといったことができますし、印刷することができればOCRで文字抽出することもできます。
しかし、そもそも単位がついていない場合には検査数値に自分で単位を入れる必要がありますし、手入力で移す場合には単位入力やレポートの書式に合わせることは非常に大変です。
Wordマクロを使った医学の単位整形方法
基本的に、レポートはWordで書くことが多いので、Wordでの整形を考えました。
Wordマクロの機能
検査値の項目は、基本的に以下のような形で入力しています。
項目名の後の半角空けや、数字の後の単位・カンマ、その後の半角空けを毎回行なうのは面倒なので、マクロで記録しました。また、大きなカテゴリー名を【】で囲んでいる場合にはそれを改行するように設定しました。
必要なもの
- マクロの使えるWord
- テキストのテンプレートツール
最近のバージョンのWordであればマクロは使えると思います。
テキストのテンプレートの追加には以下のようなツールを作っています。
- clippy (Mac)
- clibor (Windows)
WordマクロMedicalInsertUnitの使い方
Wordマクロを使う方法を紹介します。
Wordで開発タブを表示
Wordは標準設定ではマクロが表示されていません。開発タブを表示する必要があります。
Wordトップ画面のオプションより以下の画面を表示します。リボンのユーザー設定より開発にチェックを入れて下さい。
これでWordに開発タブが表示されるようになります。
VBAをマクロに追加
ここまでできたら適当にWordのファイルを開きます。開発タブを開いて、マクロの記録を選択します。
適当に名前を入れて、ボタンやキーボードを設定することで、このマクロを一瞬で呼び起こせるようになります。記録したいわけではないので、OKを押した後、タブから終了を押します。
その後。マクロの欄より、先程登録した名前を選択してマクロの編集を押します。こうすることでVBE(エディター)を開くことができます。ここにコードを打ち込めば作成したマクロを使用することができます。
コードは以下のリンクより取得可能です。次の見出しで紹介しているテンプレート以外にも血液ガスの数値なども自動で整形できるように設定しています。
項目のテンプレートを一瞬で呼び出す
単位整形する前の項目として大体どの科でも使う項目はテンプレートとして登録しています。
僕は以下のような項目をclibor、clippyに登録して、ホットキーで呼び出せるようにしています。
【入院時現症】
身長
体重
BMI
体温
脈拍
呼吸数
血圧
SpO2
【血液学検査】♢血算
RBC
Hb
Ht
Ret
Plt
WBC
Neu
Ly
Mo
Eo
Ba
♢生化学
TP
Alb
T-Bil
AST
ALT
LD
ALP
γGT
Amy
CK
T-Chol
TG
LDL-C
BUN
Cre
UA
Glc
HbA1c
Na
K
Cl
Ca
CRP
♢凝固
PT
APTT
Fib
FDP
D-dimer
自分好みにマクロを改造する
マクロを改造する方法は大きく2つあります。
- しおんに依頼する
- 自分で改造する
この2つのうちしおんに改造するのは時間がかかる可能性があるなんていう理由はさておき、検査値などが一般的でない場合には、対応しないこともあります。
このため、ある程度自分で改造できるようになることをおすすめします。
また、しおんはVBAを勉強しはじめて日が浅く、基本的にマクロの記録で書くことのできるコードのみ書いているので、これにマクロで記録したコードを加えても問題なく動きます(たぶん)
マクロで自分が好きな置換表現を加える
先程のエディター上で大体何をしているかわかれば、それをコピペして自分の加えたい項目を入力するだけでその項目も置換するプログラムが誕生します。
また、マクロの記録をして、置換により検索したいワードを入れることで新しいマクロを作成して、そのマクロのコードをコピペすることでも同じことができます。
医学症例レポート単位整形ツールをよりよくするために
ただ‥‥しおんに追加を依頼したい場合にはコメント欄やgit hubからどうぞ。
また、VBA初心者であり、VBAの勉強に多数の時間を割くことができない状況であるため配列を読み込むなどといったことはしていませんが、より速く管理しやすいプログラムを書いてくださる方やコードを一部変更したほうが良いと提案してくださる方は、ぜひpull requestを投げて下さい。
喜んでお受けします。