カテゴリー
AmpiTa Disaster Healthcare Software

[開発事例]在宅医療機器を想定した停電シミュレーションシステム (EXE) | AmpiTa Project

開発時期:2024年

開発者:AmpiTa Project

開発言語:C#/HTMLタグ




背景・概要

 災害コンサルタントとして、医療的ケア児向けに無償でプロ水準の災害対策サービスを提供するプロボノを実施予定であった2024年、先だって停電をシミュレーションできるシステムを開発しました。

 コンサルタントが個人的に使用するシステムであるため、画面構成などは改善の余地を残したままで開発を終えています。

 システム(停電シミュレーター)では、人工呼吸器を何時間使用できるかシミュレーションすることができます。

 人工呼吸器の電源については内蔵電池、機種専用電池、ポータブルバッテリなど汎用の蓄電池、発電機などから供給可能であるため、それらの蓄電量や残燃料などから、人工呼吸器の稼働時間を推定しています。




挙動

 百聞は一見に如かず、動画をご覧いただくことである程度の説明にはなるかなと思います。




操作画面

 操作画面は下図のような、小さな字が並んだビジーなものになります。

 Visual StudioのC#で作っています。フォームの上にタブコントロールを置いて、詳細な設定画面(タブ)とグラフィカルな画面(タブ)に分けています。詳細な設定のタブにはグループボックスでまとめられた入力用テキストボックス群を配置しています。制作の過程については備忘録の記事にも掲載されています。


【参考】[C#備忘録]新規フォーム追加/Size/Location/Position

【参考】[C#備忘録]定型化のためのGroupBox利用とTextBox配置




シミュレーション

 コードは複雑ですが、内容はシンプルです。

 人工呼吸器の内蔵電池を0~100%で、doubleを使うので小数点以下も変数に残るような計算式で増減させます。

 人工呼吸器の内蔵電池で200分稼働できるとすれば、200分の逆数、1÷200で1分あたりの消費率を規定します。この場合は1分あたり0.5%減ることになります。

 内蔵電池が空の状態からフル充電されるまでの時間が100分であったとすれば、100分の逆数、1÷100で1分あたり1%回復すると規定します。

 このような論理に基づいて、コードを記述していきました。


 実際にはもう少しややこしいのですが、概要説明なので詳細は割愛します。




結果のグラフ化

 色々なデータをグラフ化しています。

 横軸(X軸)は時間です。1分単位で右に進んでいきます。

 縦軸(Y軸)は色々です。電池残量を百分率で示すグラフもありますし、稼働しているか否かをゼロ・イチで表現しているグラフもあります。




総合してHTML化

 結果はHTMLファイルにまとめて出力しています。

 グラフは画像化して表示しています。


 文字や表などでもまとめています。


【参考】[C#備忘録]画像ファイル出力

【参考】[C#備忘録]HTMLファイルでレポート




元データはExcelファイルから

 今回のシステムは、患家ごとに個別に異なる条件でも対応できるようにつくられています。

 個々のデータを紙媒体で貰って転記するとミスを犯しそうなので、データは所定のExcelファイルでもらいます。

 このファイルからであれば、自動的に転記できる機能を設けています。


【参考】[C#備忘録]Excelファイルをインポート







初期設定

 初期設定では対象機器の登録を行います。

 第1枠はメインとなる医療機器(負荷)について登録します。内蔵電池での動作時間や消費電力などを入力する枠が設けられています。

 第2枠は加温加湿器用の枠ですが、メインの機器と同時使用される機器(負荷)について入力する枠が設けられています。人工呼吸器に対して加温加湿器は同時使用されるもの、人工呼吸器の一部として使用されるものなので、もしメインの機器が人工呼吸器ではない場合、例えば血液透析装置であったとすれば、この第2枠はRO水製造装置などになります。

 第3枠は喀痰吸引器の枠ですが、こちらはメインの機器と並行して使用される機器(負荷)です。人工呼吸器は常時使用されますが、喀痰吸引器は数十分に1回程度の間隔で使用される医療機器なので、不可欠ではあるものの、電力負荷としては比較的軽いものになります。

 第4枠は発電機の枠です。出力電力、給油1回で発電し続けられる時間、備蓄している給油の回数などを登録します。

 第5枠は汎用蓄電池の枠です。Amazonで『ポータブルバッテリ』などと検索すれば出て来る商品をイメージしています。

 第6枠はメインとなる医療機器の専用蓄電池の枠です。メーカー指定、型式専用のバッテリです。本体に内蔵して使うような一体使用か、外付けの個別使用か選択できるようになっています。

 第7枠は一般家電の枠です。余剰電力を用いて電子レンジや洗濯機などを使用することを想定しています。

 最後の枠では、シミュレーションする時間の総延長を分単位で設定、停電発生から最初のバックアップ電源を使用するまでの初動時間の設定、発電機や蓄電池などどれを優先して使用するかのドロップダウンメニュー設定をしたのちに、シミュレーションを実行します。




レポート出力

 レポートの出力は大きく2種類あります。

 1種類ずつ個別に出す方法と、10種類まとめて出す方法です。


 種類を個別に選ぶ場合は、左下の10枠にあるモードをドロップダウンメニューから選択します。


 全モード出力処理を実行した場合は、前述のドロップダウンメニューを上から順番に、モードゼロから順番にシミュレーションします。


 処理を終えると自動的にブラウザが起動してレポートを表示します。





おわりに

 今回は内向きのシステムの開発でした。

 これまでも業務効率化、同じ作業の繰り返し回避、面倒な計算の機械化などを目指したシステム開発をしてきましたが、今回はいずれにも該当するような、複雑な計算を代行してくれるシステムに仕上がりました。

 このシステムは外部の方には提供しませんが、出力したレポートは医療的ケア児が居るお宅に届ける予定です。

ソフトウェア開発実績はこちら