わーくすてーしょんのあるくらし (5)
1987-05 大橋克洋
< 1987.04 UNIX上のOA環境 | 1987.06 理想のワークステーション環境を考える >
ワークステーションについてひと通り書いてしまったので、 今回は私のソフト開発について書いてみたい。 私は本職のソフト屋さんではないので、 拙いところはご勘弁願いたい。
医療をコンピュータに載せようとすると、 やがてカルテすなわち診療録の電子化という話がでてくる。 ところがドッコイ、これはコンピュータ化するには大変な難物で ちょっとやそっとのことで歯の立つシロモノではない。 その理由にはいくつかある。
まず、カルテに記載される内容は複雑多岐にわたり 一定のフォーマットになりにくく、 加えるにドクターなる人種は 各人各様に要求する内容が全く異なると考えてよい。 純粋な医学的記述と 医療費算出のためのデータの両方が記録されている必要がある。
現在のところ、そして恐らく当分の間コンピュータに記憶されたカルテは 法律的にカルテとは認められない。 また電子的に記録したものは 突如として跡形もなくきれいさっぱりなくなるという 恐ろしい経験をすることも稀ではない。
そんなわけでカルテを電子化して、 それを日常的に使おうなどと本気で考える人はほとんどいないのが現状だが、 そこはそれ持ち前のヘソ曲がり精神と、 とにかくやってみたいと思ったら それ一途ということで3年前からボチボチと作り始めた。
とにかくこの世にまだ存在しないものを作ろうというわけで、 しばらくの間は果たしてどのようにデザインするべきか 基本的イメージすら浮かばない有様だった。
最初にできあがったのは 文章中のデータがリレーショナル・データベースとリンクしたものだった。 この方式の利点は、 検査結果などについてはカルテに項目名だけを記載して結果を空にしておけば、 検査室で検査台帳に結果を記録すると、 リンクしたカルテの検査欄にも結果が投影されることである。 看護婦、事務員、検査技師などが同時並行作業を行う分野においては データの一元管理と作業の独立がはかれ、 それぞれが自分の持ち場で行う作業がカルテの上で 一つの結果としてまとまるという効果を生むことになる。
しかし、この方式ではプログラムが複雑化しやすく、 ということは信頼性やメンテナンスにも問題が起こりやすいということになる。 またデータベースにより書式に制約を受けやすい。 そんな訳で実際に使う気にならず、 しばらくこのプロジェクトは放りっぱなしにしておいた(ここが 道楽でやっているよいところである)。
それから約半年後ハタと思い当たったのは 「ワープロでカルテが書けたらいいな」ということだった。 プロジェクトをぶん投げておいた間に ネットワークによるニュースやメールシステムについて 勉強していたこともあって、 これを組み合わせれば結構実用的なものができそうな気がしてきた。
浮かんだアイデアをもとに、 まず出来上がったものは使い慣れたエディター vi の基本機能をすべて備えたテキスト・エディターとなった。 先のプロトタイプがビジカルクやマルチプランのように コンピュータ内のデータをモディファイして 画面に表示していたのに対し、 こちらはデータそのままを表示するタイプである。
この中に辞書変換機能を組み込んで、 医学用語や薬剤、検査名などを略号から変換できるようにしたり、 メールシステムにヒントを得てカルテを開くと、 日付その他の必要項目を含んだヘッダーを読み込む機能を加えた。
これでまずは快適にキーボードからカルテを記載できるようになった。 このシステムでは書式は好みで自由に設定できるので汎用性も高い。
なるべく一日の来院者の数を平均化して 患者さんの待ち時間を少なくしたいが、 それにはカレンダーに来院者数を記入しながら 次回の診察日を打ち合わせるのが良い。
そこで電子カルテ上でバッファを切り替えると、 各日付ごとの来院者数が棒グラフで表示され、 私のスケジュールも記入されているので、 空いていそうな日にカーソルを合わせてキーを叩けば これで予約はおしまい。 同様に分娩記録、その他のデータベースの中身も 簡単にバッファ切り替えで参照できるようにした。
今まで使ってきた会計計算専用のアプリケーションとは違って、 今度のものは全くのフリーフォーマットで入力でき 人間にとっては全く快適なのものだが、 これをもとに会計計算をしなければならないコンピュータにとっては アンカムフォタブルということになる。
そこで辞書機能がキモになってくるのだが、 カルテはフリーフォーマットであっても 必要な項目については辞書登録した単語で記載されているので、 これを会計用のフィルターに通してやれば 辞書と照合しつつ構文解析をして、 会計結果の明細が吐き出されるという仕掛けである。
カルテ上で診療終了を記録すると、 直ちに受付端末に会計を促すメッセージが出る。 受付のプログラムはマルチプロセスで、 いつもカルテからのメッセージを見張る子プロセスが走っている。 メッセージがくると、 プロセス間通信で自分の親プロセスである会計システムが暇かどうかを見て、 暇ならカルテシステムからのメッセージを受付端末に流す。
もし受付システムが患者登録などの作業中なら、 メッセージを画面に流しては両者の出力が画面上でゴチャゴチャになってしまうので、邪魔をしないようおとなしく待つわけである。
一人分の診療が終了すると、 カルテのコピーがネットワークを介して別のシステム (今となっては古くなった UNIX machine である UX-300) へ自動転送される。 受け取った UX-300 はサーバとして働き、 これを自分のディスクへ記録すると同時にプリンターへ ハードコピーを吐き出す。
ハードコピーは診療の合間や診療終了後にサインをしてカルテ (これは電子カルテではなく本物のカルテ) のホルダーへ貼付ける。 これでバックアップとハードコピーという法律上の問題が解決される。
このシステムを開発するにあたって、 最初はどのようなものを作ればよいのか 皆目見当もつかなかったが、 こうして形をなしてみると、 これは一つのアプリケーションというより 私のメディカルワークステーション上の環境そのものになりつつある。
丁度 Emacs と似たようなところがある。 Emacs は vi とはコマンド体系が全く異なることもあって、 今まで仕事に使うところにまではならなかったが、 無意識のうちにその影響を強く受けた面もあるようである。
このシステムはプロトタイプで、 まだ仕事に使うところまでは行っていない。 理由は何度も書くように、 現状では Sun のハードディスクが 140 M 以上に拡張できず 今でもパンク寸前でアップアップしていることと、 日本語が使える環境にはないからである(伊藤忠さん 何とかしてください)。 将来は画像データや音声データなどマルチメディアの取り込みもできるようにしたいが、その頃は UNIX ではなく TRON を使っていることになるかも、、、