疑い病名の入力インターフェース
スタンプ箱から病名をカルテに入力する時に,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」カテゴリの記事
- 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)


