受付情報の扱い
ORCA から CLAIM で送られてくる受付情報で,同じ patient id があった場合,単純に Dolphin 側の受付リストの該当項目を置き換える処理を行っていたが,受付情報を pvtDate で identify することにして,以下のように整理した。
- ORCA の受付リストにある項目を選択して再受付した場合
例えば,新患受付で,受付後に生年月日入力ミスに気付いて,患者登録で変更してから受付画面に戻って再受付した場合など。この場合は,Dolphin 側のリストの該当項目を,送られた受付情報に置き換える。再受付の場合は受付時間が同じになるのを利用して,置き換えるべき受付情報かどうかを pvtDate を秒単位まで比較して,一致したかどうかで判定する。 - ORCA の受付リストにある項目を一旦削除して,後でもう一回受付した場合
稀に,同ビルの別の科と間違って新患受付してしまい,「あ,ここ皮膚科ですか! 間違えました!」となることがある。この場合,その次に来院した新患が同じ患者番号で登録されることになる。また,午前中に受付した再診患者が一旦受付キャンセルして,午後から再受診した場合もこれに該当する。この場合は,同じ患者番号でも,違う受付と判断して,新たにリストに加える。
public int addPvt(PatientVisitModel pvt, String facilityId) { : // 同じ pvtDate の pvt がすでに登録されていないかどうかチェック // pvtDate が違えば,同じ patient id でも新たな pvt と判断する ListWatingListImplresult = 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 動作になる
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」カテゴリの記事
- 運用17年目のまとめ(2025.02.03)
- IME on/off の切換 - その2(2024.12.02)
- OrcaController オルコン(2024.11.28)
- OpenDolphin: java 21 / wildfly 34 への移行(2024.11.08)
- IME on/off の切り替え(2024.09.03)