2019年 春期 応用情報技術者試験 問6
薬剤管理システムの再構築
W病院は,複数の外来診療科をもっており,症状や病状に応じて処方箋を発行している。W病院には院内薬局があり,受診者の多くは院内薬局で薬剤の処方を受ける。
処方箋には期限があり,発行年月日から有効年月日までを,薬剤の処方を受けることのできる期間としている。
W病院では,受診者への医療サービス向上を目的に,薬剤管理システムの再構築を行うことになった。再構築するシステムには,医師の処方箋作成を支援する次のチェック機能を実装する。
・処方箋発行の際,処方しようとしている薬剤と過去6か月以内にW病院で発行した処方箋に記載の薬剤との組合せに対し,薬剤併用チェックを行う。薬剤併用チェックでは,併用を禁止する"併用禁忌"となる薬剤の組合せ,及び併用に注意を要する"併用注意"となる薬剤の組合せに該当しないことを確認する。
・院内薬局で処方することを前提に,処方箋発行時に院内薬局の薬剤に対する在庫チェックを行う。在庫チェックでは,発行した処方箋に記載の薬剤が,院内薬局で有効年月日まで確保されるよう,在庫の保証を行う。
開発に当たり設計した,薬剤管理システムのデータベースのE-R図を図1に示す。
なお,"在庫量_大人1日","処方量_大人1日"とは,"大人1日の分量"を単位とした在庫量,処方量を示す。

このデータベースでは,E-R図のエンティティ名をテーブル名に,属性名を列名にして,適切なデータ型で表定義した関係データベースによって,データを管理する。
業務処理と操作対象のテーブルを表1に示す。また,テーブルの列に対する処理内容を表2に示す。ここで,表2中の括弧付き数字は,表1中の業務処理の括弧付き数字に対応している。

テーブル | 列 | 処理内容 | |
---|---|---|---|
作成時 | 更新時 | ||
受診者 | 住所 | 住所を設定する。(1) | e |
外来受診 | f | NULLを設定する。(1)(2) | 値を更新する。(4) |
発行医師コード | - | 値を更新する。(7) | |
発行年月日 | 値を更新しない。(8) | ||
有効年月日 | NULLを設定する。(4) | 値を更新しない。(7) | |
薬剤処方年月日 | - | 値を更新する。(8) | |
薬剤在庫 | 在庫量_大人1日 | 0を設定する。(9) | 値を減する。(8) 値を加える。(11) |
【薬剤併用チェック処理】
薬剤管理システムでは,薬剤併用情報テーブルに"併用禁忌"と"併用注意"となる薬剤の組合せを保持しており,この情報を使い,薬剤併用チェックを行う。
"併用禁忌"と"併用注意"に該当する薬剤の組合せ一覧を出力するSQLを図2に示す。ここで,"受診者ID","半年前年月日","処方箋ID"は,該当の値を格納する埋込み変数である。また,TO_DATE関数は,指定された文字型の年月日をDATE型に変換するユーザ定義関数である。
薬剤の組合せ一覧には,今回の外来受診では処方しない薬剤や院内薬局で処方を受けなかった薬剤の組合せも含まれており,出力内容を医師が確認し,必要に応じて処方する薬剤を見直す。見直しの結果,処方箋明細が0件になることもあるが,このような場合には,処方箋の発行は行わない運用とし,処方箋レコードは削除しない。
WITH チェック対象薬剤 AS( SELECT B1.薬剤コード FROM 処方箋明細 B1, (SELECT A1.処方箋ID FROM 外来受診 A1, 処方箋 A2 WHERE A1.受診者ID = :受診者ID AND A1.処方箋ID = A2.処方箋ID AND A2.発行年月日 >= TO_DATE(:半年前年月日)) B2 WHERE B1.処方箋ID = B2.処方箋ID ), g SELECT C1.薬剤コード FROM 処方箋明細 C1 WHERE C1.処方箋ID = :処方箋ID)SELECT * FROM 薬剤併用情報 T1 WHERE h (SELECT T2.薬剤コード1, T2.薬剤コード2 FROM (SELECT U1.薬剤コード AS 薬剤コード1, U2.薬剤コード AS 薬剤コード2 FROM チェック対象薬剤 U1 CROSS JOIN チェック対象薬剤 U2) T2 WHERE T1.薬剤コード1 = T2.薬剤コード1 AND T1.薬剤コード2 = T2.薬剤コード2)
【在庫チェック処理】
在庫チェックでは,"発行した処方箋に記載の薬剤が,院内薬局で有効年月日まで確保されるよう,在庫の保証を行う。"という要件の判定を簡素化するために,処方箋を発行し,有効年月日までに院内薬局で処方する可能性のある薬剤の処方量の合計を,確保量として管理するためのビューを作成することにした。
ビューを作成するSQLを図3に示す。ここで,CURRENT_DATE関数は,参照時の日付をDATE型で返す日時値関数である。
在庫チェックで在庫不足が判明した際は,医師は処方する薬剤の見直しや,長期処方を希望する受診者との処方量の調整を行う。
CREATE VIEW 処方前確保在庫(薬剤コード, 確保量_大人1日) AS SELECT T3.薬剤コード, i FROM (SELECT T2.薬剤コード, T2.処方量_大人1日 FROM 処方箋 T1, 処方箋明細 T2 WHERE T1.処方箋ID = T2.処方箋ID AND T1.発行年月日 <= CURRENT_DATE AND T1.有効年月日 j AND T1.薬剤処方年月日 k) T3 GROUP BY T3.薬剤コード