カルテ検索機能
「引っ越すことになったので,次回受診時までに紹介状を書いて欲しい」という患者さんがいらっしゃったのだが,不覚にも誰だったか忘れてしまった。少し焦ったが,確かカルテに「引っ越しするので〜」と記録していたはずなので,「引っ越し」でカルテ検索して見つけることができた。カルテ検索機能を作っておいて良かったと思った。
カルテ検索機能は,記載の古い方から検索するように作っていたが,今回,新しいものから開始した方が効率がよいことが分かった。そこで,新しい記載から検索するように書き直した。
カルテ検索機能は,記載の古い方から検索するように作っていたが,今回,新しいものから開始した方が効率がよいことが分かった。そこで,新しい記載から検索するように書き直した。
delegater/DocumentPeekerDelegater.java
public Collection getPatientOfKarte() {
if (endModuleId < 0L) return null; // 数えきった場合だけ null が返る
List pm = new ArrayList();
Set karteId = new HashSet();
// 新しい module から検索していく
Long startModuleId = endModuleId - increaseStep;
if (startModuleId < fromModuleId) startModuleId = fromModuleId;
List mc = getService().getModuleModel(startModuleId, endModuleId);
// soaSpec, pSpec は getFreeText 必要。それ以外は model内容が toString() で取れる。
for (ModuleModel model : mc) {
InfoModel im = (InfoModel) BeanUtils.xmlDecode(model.getBeanBytes());
String role = model.getModuleInfo().getStampRole();
String text = "";
if (role.equals(IInfoModel.ROLE_SOA_SPEC) || role.equals(IInfoModel.ROLE_P_SPEC)) {
String xml = ((ProgressCourse) im).getFreeText();
text = extractText(xml);
} else {
text = im.toString();
}
int pos = text.indexOf(searchText);
if (pos != -1) {
karteId.add(model.getKarte().getId());
}
}
pm = getService().getPatientOfKarte(karteId); // 空の pm が返ることはあるが,null は返らない
endModuleId -= increaseStep; // 次の検索に備えて endModuleId を下げる
return pm;
}
« メモ欄の自動セーブ | トップページ | 新規カルテにテキストスタンプ挿入 »
「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)


