« 病名検索フィールドをカルテ検索と併用する | トップページ | Google Calendar API の利用 »

2020年5月22日 (金)

添書作成スクリプト

当院では開院以来,添書は NeoOffice の NeoOffice Basic で作ったシステムを使っていた。しかし,NeoOffice Basic でのコード管理は非常に苦痛度が高く,いつかアップル謹製の Pages と AppleScript を使って書き直したいと思っていた。ただ,実のところ AppleScript もあまりプログラミングが楽しい言語とは言えず,だらだらとそのままになっていた。

そんな折,AppleScript のスクリプトエディタで JavaScript が使えるということを知った。JavaScript for Automation (JXA) というもので,Yosemite から使えるようになっていたらしい。JavaScript なら AppleScript より圧倒的にコードが楽しく書ける。早速,JXA を使って添書システムを書き換えた。

手順としては,まず連絡先アプリで紹介先を選んで,スクリプトで選択項目を読み込み,さらに orca から患者情報を読み込んで,最後に Pages のテンプレートファイルのプレースホルダーに情報を挿入して添書を完成させるという仕組みにした。

まずは連絡先アプリに医療機関を登録した。連絡先アプリは vcf ファイルを読み込めるので,公開されている道内医療機関リストの xlsx ファイルを cvs で保存して,それを vcf に変換するスクリプトを書いた。これで,道内 3,300 の全医療機関を連絡先アプリに登録できた。

次に orca からの患者情報の取得であるが,NeoOffice Basic では jdbc で orca に接続して sql を発行して情報を得ていた。しかし,orca api のおかげで,今ではそういう手続きは全部すっ飛ばして,curl で拍子抜けするほど簡単に情報を得ることができる。例えば,orca trial サイトでやってみると,

$ curl -u trial: 'http://trial.orca.med.or.jp:8000/api01rv2/patientgetv2?id=00001&format=json' 
これで患者情報が json で取れて,さらに JavaScript を使うとパースまで一気にできてしまう。jdbc を使っていた頃とは雲泥の差である。
var res = app.doShellScript("curl -u " + AUTH + " " + URL )
var pt = JSON.parse(res)		

Contacts 3_20200520172001
Dialog

作ったファイルは github に上げた。.pages ファイルをテンプレートセレクタに追加して使う。

« 病名検索フィールドをカルテ検索と併用する | トップページ | Google Calendar API の利用 »

いろいろ」カテゴリの記事