職場の看護師からの依頼。毎日利用者の血圧や体温などのバイタル測定をして熱型表用紙に記入しているのを省力化したいとのことでした。そして、ゆくゆくは電子カルテのような機能も希望しているようです。熱型表とはこういうのです(右側のグラフのような様式)。
https://www-ui.is.s.u-tokyo.ac.jp/~takeo/research/karte/karte-j.htm
弊社のような医療型でもない中小の事業所は電子カルテなど望むべくもないので自作します。
病院受診の際に熱型表のプリントアウトを持参したいとのことなので、要件としては一番のネックになりそうです。バイタル値のプロットはプロデルからExcel連携する方向で実装しようかとも思ったのですが、ちょっと試行錯誤が必要となりそうなのでこれは無しで行くことにしました。
A4サイズの用紙だと300dpiの場合は約2,480×3,508ピクセルになるそうなので、このサイズのキャンバスに描画してこれを直接印刷することにします。沢山の罫線があるので描画をなるべくすっきり記述出来て、後々の微調整の要望にも迅速に対応できるようにしたい。また、今後別案件でも罫線一杯の紙への対応を求められそうですので、ライブラリとして使い回しがきくようにしたい。そんなことを考えながら、ひとまず罫線の描画を作ってみました。
表用紙というキャンバスを作る
その大きさは、{3508,2480}
表用紙へ四角形を描く
その位置と大きさは、{0,0,3508,2480}
その背景色を、白に変える
その線色を白に変える
ーー10x10の方眼を描画してみます
10回繰り返す
表設定へ200という幅で行を追加する
表設定へ200という幅で列を追加する
繰り返し終わり
11回値にカウントしながら繰り返す
設定辞書は、{線種=「標準」,色=「黒」,太さ=1}
表設定に、{値,1}から{値,11}まで設定辞書という罫線を設定する ーー縦の罫線
表設定に、{1,値}から{11,値}まで設定辞書という罫線を設定する ーー横の罫線
繰り返し終わり
表用紙へ表設定で描画する
表用紙を更新する
表用紙を「result.bmp」へ保存する
「result.bmp」を開く
表設定とは
単一種類
-列数
-行数
+罫線定義:配列
+横座標配列:配列
+縦座標配列:配列
はじめの手順
横座標配列(1)=0
縦座標配列(1)=0
罫線定義は、{}
終わり
自分へ【設定値:整数】という幅で行を追加する手順
縦座標配列に、(縦座標配列の末尾+設定値)を加える
終わり
自分へ【設定値:整数】という幅で列を追加する手順
横座標配列に、(横座標配列の末尾+設定値)を加える
終わり
自分に【始点:配列】から【終点:配列】まで【設定値:辞書】という罫線を、設定する手順
罫線定義(罫線定義の個数+1)という罫線情報を作る
罫線定義の末尾の始点は、始点
罫線定義の末尾の終点は、終点
罫線定義の末尾の線種は、設定値(「線種」)
罫線定義の末尾の色は、設定値(「色」)
罫線定義の末尾の太さは、設定値(「太さ」)
終わり
【用紙:キャンバス】へ自分で描画する手順
罫線定義を要素にそれぞれ繰り返す
始点配列は、{横座標配列(要素の始点(1)),縦座標配列(要素の始点(2))}
終点配列は、{横座標配列(要素の終点(1)),縦座標配列(要素の終点(2))}
用紙に線を描く
その始点は、始点配列
その終点は、終点配列
その線色を要素の色に変える
その線種を要素の線種に変える
その太さを要素の太さに変える
繰り返し終わり
終わり
終わり
罫線情報とは
+始点:配列
+終点:配列
+線種:文字列
+色:文字列
+太さ:整数
終わり
キャンバスに描画したものをbmp形式で保存して表示させていますが、本番では「表用紙を印刷する」でプリンタ出力します。ちなみにこのままでプリンタ出力すると2倍くらいに拡大されて印刷されてしまいますので、プリンタ側の設定を詰めるか、キャンバスのピクセル数を変更する必要がありそうです(追記参照)。
(追記)
今のところキャンバスはどうも96dpiくらいでの印刷にしか対応していない感じです(2022/03/03現在)。当面は保存したbmp画像を何らかの外部アプリを使用して印刷するしかないようです。