3.電子カルテはオブジェクト思考?

プログラミングのオブジェクト思考って1990年代に大きく話題になっていて、今となってはあまり前面にしゃしゃり出て言われる事ではなくなった。プログラムもパーツの再利用性だとか、継承など、もちろんWineStyleのプログラムの根幹をなすことなのだけど、今回はちょっと違う視点から。

カルテってオブジェクト

電子カルテを作って使うようになる前は勿論、紙のカルテを相手に悪戦苦闘していた。忙しい職場に行けば、ボールペンが1週間でインクが無くなるほど文字を書く。カルテに所見を走り書きし、処方箋に薬品名を沢山書き、同時に患者の体重に合わせて投与量を計算しながら書きまくる。

私の電子カルテは、Steve JobsがAppleを追い出された後に作ったNeXT社製のNeXTコンピュータで始まった、言語はObjective-C。名前の通り、オブジェクト思考言語。それまでの私は、BASIC, UCSD Pascal, C, Assembler の経験はあったが、オブジェクト思考、それとその当時は膨大だと思われた、Foundation.framework, AppKit.frameworkのAPIの勉強がとてつもなく大変だった。どのようにオブジェクトを当てはめるかが大きな問題。そこで何処かに書かれていた、現実に存在する物をオブジェクトとしてモデル化するって方法。ということでカルテ本体は神のファイルを束ねたもの、処方の写や、検査結果、オーダー伝票などが一まとめになって紙のファイルになっている。その一つ一つの部品をオブジェクト化して行った、処方箋には何が記載されていなければならないか、その単位は何か、人間が書く時、薬の数が多ければ、その枠の中に入るように小さな字で書くし、数が少なければ大きな字にになる。だから私の作った処方箋のオブジェクトは処方が多くなれば、あるレベルまではフォントを小さくしてその枠に入るように今でもなっている。

電子カルテは紙のモデルを継承する必要があるのか?

2010年頃になると電子カルテも当たり前という時代に一部ではなってきた。ある時、なら、電子データを相手にしているのだから紙のオブジェクトをベースに考える必要はないでしょう、という話題に研究会でなった。確かに、電子媒体だからこそできるフォーマットがあるのではないかと私も考えた。

私の世の中で一番好きなソフトはといえば、Xcode(macOS上でのDeveloperツール、Mac, iPone, iPadのソフトを作る道具)だ。これを使っている時間が一番私は長い、とても良く出来たソフトで、毎年、毎年少しずつ改善されながら大きく進歩している。基本的には一つのプロジェクトに一つのウィンドウ、その中で上手くウィンドウを切り分け、目的にあった使い方をする、よく設計され、素晴らしいプログラムだ。当然ながらお手本となるインターフェイスを私も真似て作ってみようという気になる。半年、1年はその方向を模索してみた。ユーザにデモをしたら、ウーンという納得の行かない顔をされた。慣れない世界はなかなか受け入れられないかな?という感想をその時は持っていた。

それまでのモデルも基本的には現在と同じだが、一人の患者のカルテは、紙のオブジェクトと同じく画面上に一つのウィンドウとして表示される。表紙にあるタブの選択で目的の章に飛ぶ感じ、その中で最新のものから前のものに紙が重なっているような構造なのでページをめくっていく。処方を書く時は処方箋の紙と同じように別のウィンドウが現れその上で作業をする。検査のオーダーや紹介状などの書類も机の上のフォルダーが一枚取って書いてそれをフォルダーにしまう感じだ。複数のカルテを同時に開いて作業もできる。ただ、ウィンドウは散乱する。散乱したウィンドウの処理は、メインのカルテフォルダーを選ぶとそれが前面に出てくるようにしたら何とか制御できた。評判の悪かった一画面を占有するのはまた次の機会と現在も封印してある。

現実のオブジェクト、画面上のオブジェクト

若い医師はすでに紙のカルテで仕事をしたことが無い時代に突入した。多くのWindows系の電子カルテや、Web電子カルテは画面専有型が多い(多分ほとんど)、フォントの問題や画面の解像度の大きさなどの制約などが理由だろう。その点、Macはフォントも綺麗で画面解像度も細かくかつ画面の大きなオプションが手に入りやすいのが続いている。私の今これを書いているiMac Pro 5Kディスプレイのモデルは、5K解像度でウィンドウを展開するとフォントが見えないくらいになってしまうので、標準では3K程度の大きさにしているものが普通に選べる一番細かいフォントだ。

先日、私のクリニックに週で週に一度診療してくださる先生が「WineStyle使いやすいです。普段使っているWeb系のアプリや、他のクリニックにある電子カルテと比べて」とおっしゃる。その心は、「Wineは紹介状を書くときにカルテを見ながら、検査結果を見ながら書けるんですよ。」私にとしては当たり前のこととしか思っていなかったけど、マルチウィンドウでかつ、ウィンドウが重ならない、余裕のあるディスプレイサイズのなせる技。ここでふと思った。机の上に紙のカルテを広げながら書いた、書類の山。人間は長い歴史の中で的確なオブジェクトに分類し、それを組み合わせて仕事をこなしてきた知恵が作った継承。大したものでした。

紙のオブジェクトと違うのは、うまく振られたインデックス、サーチが組み合わされ、目的の場所を一瞬で表示できるパワー。答えがこれだけということではないがまずまずの選択だった。

NSSecureCoding

NSCodingからNSSecureCodingにの移行、WineStyle初期に使用していたNSArchiverからNSKeyedArchiverへの移行。ユーザが意識しないで変更していくようにプログラムするのも結構大変なCatalinaの時代への対応だ。一気にバッチで処理という考えも捨てがたい。いつまでも古いコードに縛られないためには、バッチ処理も必要かな、このあたりになると、Webサーバでデータを管理していない、個々の施設にサーバーを持つシステムの弱い所。

この記事が気に入ったらサポートをしてみませんか?