電子カルテ

Text Blazeを活用した探索的なカルテ情報抽出_BMI計算の自動化

はじめに

以前から電子カルテ入力補助にText Blazeを利用しています。今回は、Text Blaze を活用し、電子カルテから 探索的に身長・体重の情報を抽出し、自動的にBMIを計算 するスニペットを紹介します。この方法を活用すれば、カルテ記載や文書作成の負担を軽減し、よりスムーズな診療が可能になります。


Text Blazeとは?

Text Blaze は、ショートカットを用いた入力補助ツール で、定型文の入力やデータの自動取得を行うことができます。従来から、診療情報提供書の作成や、スクリプトを活用した電子カルテの入力補助 などに活用されています。

今回紹介するスニペットは、クラウド型電子カルテに対応 しており、カルテの画面上にある情報を探索的に読み取って活用する 仕組みです。


スニペットの概要

このスニペットは、電子カルテに記載された最新の身長・体重データだけでなく、前回・前々回・全然前回の情報まで探索的に取得し、自動的にBMIを計算 します。

主な機能

身長・体重の自動取得(クラウド型電子カルテ対応)
探索的に前回・前々回・全然前回のデータをチェック
BMIの自動計算と判定(肥満・正常範囲・低体重)
理想体重(BMI 22, 25時点)を自動算出
カルテ記載や文書作成に活用可能


コードの詳細

以下のスニペットを使用することで、最新のデータだけでなく、過去の記録も探索しながら身長と体重を取得し、自動的にBMIを計算します。

{if: catch({site: text; page=https://karte.medley.life/*; select=ifneeded; selector=.KlxeCpDfqdtdJcyXPd0h > :nth-child(2) section > div}, "ERR") <> "ERR"}{p1_record={site: text; page=https://karte.medley.life/*; select=ifneeded; selector=.KlxeCpDfqdtdJcyXPd0h > :nth-child(2) section > div}}{bmi_measure1=testregex({=p1_record}, "身長") and testregex({=p1_record}, "体重")}{if: bmi_measure1}{run: `身長`=extractregex(p1_record, "身長\\D{0,8}([0-9]{1,5}(?:\\.[0-9]{1,2})?)", "i")}{run: `体重`=extractregex(p1_record, "体重\\D{0,8}([0-9]{1,5}(?:\\.[0-9]{1,2})?)", "i")}{elseif: catch({site: text; page=https://karte.medley.life/*; select=ifneeded; selector=.active :nth-child(3) section > div}, "ERR") <> "ERR"}{p2_record={site: text; page=https://karte.medley.life/*; select=ifneeded; selector=.active :nth-child(3) section > div}}{bmi_measure2=testregex({=p2_record}, "身長") and testregex({=p2_record}, "体重")}{if: bmi_measure2}{run: `身長`=extractregex(p2_record, "身長\\D{0,8}([0-9]{1,5}(?:\\.[0-9]{1,2})?)", "i")}{run: `体重`=extractregex(p2_record, "体重\\D{0,8}([0-9]{1,5}(?:\\.[0-9]{1,2})?)", "i")}{elseif: catch({site: text; page=https://karte.medley.life/*; select=ifneeded; selector=:nth-child(4) section > div}, "ERR") <> "ERR"}{p3_record={site: text; page=https://karte.medley.life/*; select=ifneeded; selector=:nth-child(4) section > div}}{bmi_measure3=testregex({=p3_record}, "身長") and testregex({=p3_record}, "体重")}{if: bmi_measure3}{run: `身長`=extractregex(p3_record, "身長\\D{0,8}([0-9]{1,5}(?:\\.[0-9]{1,2})?)", "i")}{run: `体重`=extractregex(p3_record, "体重\\D{0,8}([0-9]{1,5}(?:\\.[0-9]{1,2})?)", "i")}{endif}{endif}{endif}{endif}身長: {formtext: name=身長; cols=5; default=160}cm 体重: {formtext: name=体重; cols=5; default=60}kg{bmi=`体重`/(`身長`/100)^2} BMI: {=bmi; format=,.1f}{ideal_bw22=22*((`身長`)/100)^2; format=,.1f}{ideal_bw25=25*((`身長`)/100)^2; format=,.1f}
理想体重: {=ideal_bw22; format=,.1f}(BMI22)~{=ideal_bw25; format=,.1f}(BMI25)kg
{site: text; page=https://karte.medley.life/*; select=ifneeded; selector=.names-name}さんは{if: bmi>25}肥満です{elseif: bmi<18.5}痩せです{else}正常範囲内の体重です{endif}
理想体重との差は{=`体重`-ideal_bw22; format=,.1f}㎏です。

コードの工夫点

探索的なデータ取得最新データだけでなく、前回・前々回・全然前回まで情報をチェックし、適切なデータを選択
自動フィルタリングtestregex() により、取得したデータが「身長」「体重」を含むか判定
BMIと理想体重の計算:計算式に基づき、自動でBMIおよびBMI 22・25の理想体重を算出
手入力補助:データ取得に失敗した場合は、formtext で手入力オプションを提供

コード実行のフローチャート

graph TD
    A[開始] --> B{前回カルテ読み込み};
    B -- 成功 --> C{身長・体重抽出};
    C -- 成功 --> I{身長・体重取得};
    B -- 失敗 --> D{前々回カルテ読み込み};
    D -- 成功 --> E{身長・体重抽出};
    E -- 成功 --> I;
    D -- 失敗 --> F{前々前回カルテ読み込み};
    F -- 成功 --> G{身長・体重抽出};
    G -- 成功 --> I;
    F -- 失敗 --> H[身長・体重手動入力];
    I --> J[BMI計算];
    J --> K[理想体重計算];
    K --> L[結果表示];
    L --> M[終了];
    C -- 失敗 --> D;
    E -- 失敗 --> F;
    G -- 失敗 --> H;

導入のメリット

このスニペットを導入することで、カルテ入力の時間を短縮 し、診療業務の効率を向上させることができます。

手入力不要!カルテ情報を探索的に取得
BMIや理想体重を瞬時に計算
診療情報提供書や文書作成にも活用可能


まとめ

Text Blaze は、電子カルテと組み合わせることで、カルテ入力の負担を軽減し、診療の効率を向上させる強力なツール です。特に今回のスニペットでは、最新データだけでなく、前回・前々回・全然前回まで探索的に取得する工夫 を加えることで、より正確なデータ取得が可能になりました

Text Blazeで作成したライブラリーの一部は下記で公開しています。不明点や改良の要望あればご連絡ください。

https://dashboard.blaze.today/gallery/IukR13Jz4qeJGdH61LCF

関連記事

コメント

この記事へのコメントはありません。