受付情報の扱い
ORCA から CLAIM で送られてくる受付情報で,同じ patient id があった場合,単純に Dolphin 側の受付リストの該当項目を置き換える処理を行っていたが,受付情報を pvtDate で identify することにして,以下のように整理した。
- ORCA の受付リストにある項目を選択して再受付した場合
例えば,新患受付で,受付後に生年月日入力ミスに気付いて,患者登録で変更してから受付画面に戻って再受付した場合など。この場合は,Dolphin 側のリストの該当項目を,送られた受付情報に置き換える。再受付の場合は受付時間が同じになるのを利用して,置き換えるべき受付情報かどうかを pvtDate を秒単位まで比較して,一致したかどうかで判定する。 - ORCA の受付リストにある項目を一旦削除して,後でもう一回受付した場合
稀に,同ビルの別の科と間違って新患受付してしまい,「あ,ここ皮膚科ですか! 間違えました!」となることがある。この場合,その次に来院した新患が同じ患者番号で登録されることになる。また,午前中に受付した再診患者が一旦受付キャンセルして,午後から再受診した場合もこれに該当する。この場合は,同じ患者番号でも,違う受付と判断して,新たにリストに加える。
public int addPvt(PatientVisitModel pvt, String facilityId) {
:
// 同じ pvtDate の pvt がすでに登録されていないかどうかチェック
// pvtDate が違えば,同じ patient id でも新たな pvt と判断する
List result = em.createQuery(
"select p from PatientVisitModel p where p.facilityId = :fid and p.pvtDate = :date", PatientVisitModel.class)
.setParameter("fid", pvt.getFacilityId())
.setParameter("date", pvt.getPvtDate())
.getResultList();
if (! result.isEmpty()) {
// 重複がある場合は既存の id をコピーして新しい pvt にすげ替える
PatientVisitModel exist = result.get(0);
pvt.setId(exist.getId());
}
em.merge(pvt); // record がなければ persist 動作になる
WatingListImpl
if (localPvt != null) {
// localPvt がみつかった場合,更新である
hostPvt.setNumber(localPvt.getNumber());
pvtTableModel.getObjectList().set(row, hostPvt);
// changeRow を fire,ただしカルテが開いていたら fire しない
if (! ChartImpl.isKarteOpened(localPvt)) {
pvtTableModel.fireTableRowsUpdated(row, row);
}
// 待ち時間更新
setPvtCount();
} else{
// localPvt がなければ,それは追加である
row = pvtTableModel.getObjectCount();
// 番号付加
hostPvt.setNumber(row+1);
pvtTableModel.addRow(hostPvt);
//logger.info("pvt added at row " + row);
// 患者数セット
setPvtCount(row+1);
}
« beanBytes の処理:REST(付録) | トップページ | Java 1.8 対応 »
「OpenDolphin」カテゴリの記事
- OpenDolphin: Java 25 / WildFly 38 への移行(2025.11.09)
- 運用17年目のまとめ(2025.02.03)
- IME on/off の切換 - その2(2024.12.02)
- OrcaController オルコン(2024.11.28)
- OpenDolphin: java 21 / wildfly 34 への移行(2024.11.08)


