疑い病名の入力インターフェース
スタンプ箱から病名をカルテに入力する時に,ALT キーを押しながらドロップすると「疑い病名」で入力されるようにする。TransferHandler を登録した後に,DropTarget として設定して,ドラッグしてきた病名が diagTable 上に来たときに,ALT キーが押されているかどうかを検出して action として保存し,action の値で動作を変えるしくみ。
client/DiagnosisDocument.java の編集
////↓ // 病名修飾語リスト private static String[] DIAGNOSIS_PREP = {"右","左","両"}; private static String[] DIAGNOSIS_PREP_CODE = {"2056","2049","2057"}; private static String[] DIAGNOSIS_POST = {"の急性増悪","の二次感染","の再発","の術後","の治療後"}; private static String[] DIAGNOSIS_POST_CODE = {"8061","8069","8065","8048","8075"}; // 最終受診日=今日受診している場合は今日,していないばあいは最後の受診日 private int lastVisit_year; private int lastVisit_month; private int lastVisit_day; // Stamp から drop を受け取る場合のアクション private int action; // 通常は MOVE で,ALT が押されていたら COPY になる ////↑ ・ ・ private JPanel createDignosisPanel() { ・ ・ // // TransferHandler を設定する // diagTable.setTransferHandler(new DiagnosisTransferHandler(this)); diagTable.setDragEnabled(true); ////↓ insertStamp() でALT キーで疑い病名に変換する機能をつけるため,action を記録する // ALT 押した場合が COPY になり,押してないと MOVE DropTarget dt = new DropTarget(diagTable, new DropTargetAdapter() { @Override public void dragEnter(DropTargetDragEvent dtde) { action = dtde.getDropAction(); } @Override public void dropActionChanged(DropTargetDragEvent dtde) { action = dtde.getDropAction(); } public void drop(DropTargetDropEvent dtde) { diagTable.getTransferHandler().importData(diagTable, dtde.getTransferable()); dtde.dropComplete(true); // これをしないとドラッグしてきたアイコンが逃げる } }); dt.setActive(true); ////↑ // Layout ・ ・ ・ private void insertStamp(StampModel sm, int row) { if (sm != null) { RegisteredDiagnosisModel module = (RegisteredDiagnosisModel) BeanUtils.xmlDecode(sm.getStampBytes()); // 今日の日付を疾患開始日として設定する ////↓ 疾患開始日を lastVisit に設定 //GregorianCalendar gc = new GregorianCalendar(); GregorianCalendar gc = new GregorianCalendar(lastVisit_year, lastVisit_month, lastVisit_day); ////↑ String today = MMLDate.getDate(gc); module.setStartDate(today); ////↓ デフォルトのカテゴリーをセットする module.setCategory(open.dolphin.infomodel.IInfoModel.DEFAULT_DIAGNOSIS_CATEGORY); module.setCategoryDesc(open.dolphin.infomodel.IInfoModel.DEFAULT_DIAGNOSIS_CATEGORY_DESC); module.setCategoryCodeSys(open.dolphin.infomodel.IInfoModel.DEFAULT_DIAGNOSIS_CATEGORY_CODESYS); // diagnosis に「疑い」が入っていたら,疑いにセットする String diag = module.getDiagnosis(); if (diag.endsWith("の疑い")) { String diagCode = module.getDiagnosisCode(); module.setDiagnosis(diag.replace("の疑い", "")); module.setDiagnosisCode(diagCode.replace(".8002", "")); module.setCategory("suspectedDiagnosis"); module.setCategoryDesc("疑い病名"); module.setCategoryCodeSys("MML0015"); } // ALT キーが押されていたら,疑いにセットする if (action == java.awt.dnd.DnDConstants.ACTION_COPY) { module.setCategory("suspectedDiagnosis"); module.setCategoryDesc("疑い病名"); module.setCategoryCodeSys("MML0015"); } ////↑ ・ ・
« スタンプ箱順番入替のインターフェース | トップページ | JBoss の server.log »
「OpenDolphin」カテゴリの記事
- Java 17 への移行(7) - OpenDolphin client の対応 (2023.02.04)
- Java 17 への移行(6) - Hibernate 6 でやらかす(2023.02.03)
- Java 17 への移行(5) - OpenDolphin server の対応(2023.02.02)
- Java 17 への移行(4) - OpenSearch の準備 [ubuntu 編](2023.02.01)
- Java 17 への移行(3) - OpenSearch の準備 [mac 編](2023.01.31)