« 2009年3月 | トップページ | 2009年6月 »

2009年5月

2009年5月 6日 (水)

移行病名チェック

厚労省の病名マスターは何の断りもなく病名が廃止されたりすることがあるので,病名の有効期限をチェックして,有効期限が設定されている病名は赤で表示されるようにした。【2009/9/22 追記】ORCA につながってない状態で checkIkouByomei を呼ぶとフリーズしてしまっていたので,checkIkouByomei メソッドを DBTask に変更した。

 

infomodel/RegisteredDiagonosisModel.java

////↓
    @Transient
    private Boolean ikouByomei = false;
    public void setIkouByomei(Boolean b) {
        ikouByomei = b;
    }
    public Boolean isIkouByomei() {
        return ikouByomei;
    }
////↑

client/DiagnosisDocument.java

////↓
/**
 * RegisteredDiagnosisModel を元に,移行病名かどうかをチェックする
 * @param rd
 */
public void checkIkouByomei(final RegisteredDiagnosisModel rd) {
  DBTask task = new DBTask

(getContext()) {     @Override     protected List doInBackground() throws Exception {       // 病名コードを切り出し(接頭語,接尾語は捨てる)       SqlMasterDao dao = (SqlMasterDao) SqlDaoFactory.create(this, "dao.master");       String[] codes = rd.getDiagnosisCode().split("\\.");       for (String code : codes) {         if (code.length() == 7) { // 病名コードの桁数は7           ArrayList result = dao.getByName("disease", code, false, null, null, null);           DiseaseEntry de = (DiseaseEntry) result.get(0);           if (de.getDisUseDate().equals("99999999")) rd.setIkouByomei(false);             else rd.setIkouByomei(true);           }         }         return null;       }    };    task.execute();} } ////↑  ・  ・ public void getDiagnosisHistory(Date past) {  ・  ・   DBTask task = new DBTask<List>(getContext()) {  ・  ・   @Override   @SuppressWarnings("unchecked")   protected void succeeded(List list) {  ・  ・   } else {     Collections.sort(list, Collections.reverseOrder());     int index = list.size() - 1;     RegisteredDiagnosisModel rd = (RegisteredDiagnosisModel) list.get(index);     dolphinFirstDate = rd.getStartDate();   }   ////↓ ORCA マスタを検索して,有効期限(disUseDate)が99999999以外に設定されていたら移行病名としてセット   for (int i=0; i<list.size(); i++) {     checkIkouByomei((RegisteredDiagnosisModel) list.get(i));   }   ////↑  ・  ・ private void insertStamp(StampModel sm, int row) {  ・  ・   // ALT キーが押されていたら,疑いにセットする   if (action == java.awt.dnd.DnDConstants.ACTION_COPY) {     module.setCategory("suspectedDiagnosis");     module.setCategoryDesc("疑い病名");     module.setCategoryCodeSys("MML0015");   }   // 移行病名チェック   checkIkouByomei(module);   ////↑  ・  ・ class DolphinOrcaRenderer extends DefaultTableCellRenderer {  ・  ・   ////↓ 移行病名なら foreground の色を変える(赤)   // setForeground(table.getForeground());   if (rd != null && rd.isIkouByomei()) setForeground(Color.RED);   else setForeground(table.getForeground());   ////↑

2009年5月 5日 (火)

カルテ未記入判定

カルテ記入文字数でカルテ未記入判定をしていたが,ある程度文字数を書いた書きかけカルテも,未記入扱いしたい場合があった。そこで,カルテに「+++」を書いておくと,受付リストで未記入として判定されるようにした。

 

DocumentPeeker.java

public void checkEmptyKarte(PatientVisitModel pvt) {
    String text = new DocumentPeekerDelegater().peekKarte(pvt.getPatient().getId());
    checkEmptyKarte(pvt, text);
}

public void checkEmptyKarte(PatientVisitModel pvt, String text) {
    // text=null → まだカルテ作ってない text="" → カルテに1文字も書いてない
    if (text == null) pvt.setKarteEmpty(false); // まだカルテ作ってない場合は empty とは判断しない
    else if (text.length() < LEAST_KARTE_SIZE) pvt.setKarteEmpty(true);
    else if (text.indexOf("+++") != -1) pvt.setKarteEmpty(true); // karte のどこかに "+++" が書いてある場合,書きかけカルテと判断する
    else pvt.setKarteEmpty(false);
    //logger.info(text);
}

KarteEditor.java

private void save2(final SaveParams params) throws DolphinException {
・
・
////↓   カルテ記載が途中かどうかを pvt にセットする
  PatientVisitModel pvt = this.getContext().getPatientVisit();
  try {
  new DocumentPeeker().checkEmptyKarte(pvt, doc.getText(0, doc.getLength())); }
  catch (BadLocationException ex) {System.out.println(ex);}
////↑

移行病名置換

昨年3月,厚労省の病名マスターの「脂漏性皮膚炎」が移行病名になり,廃止されることになったというアナウンスがあった。泣きながら一つ一つ「脂漏性皮膚炎」を「脂漏性湿疹」に入力し直した。

それで安心していたら,今年になっていつの間にか「脂漏性湿疹」の方が移行病名となり廃止されることになっていた(アナウンスはなし)。せっかく直した「脂漏性湿疹」を「脂漏性皮膚炎」に戻さなくてはならない。

今回は既に患者さんが増えてしまって一つ一つ直すのは無理なので,データベースを直接書き換えて対応した。しかし来年また「脂漏性湿疹」に戻したりするのだろうか?

OpenDolphin

$ psql
dolphin=# update d_diagnosis set diagnosis=replace(diagnosis, '脂漏性湿疹', '脂漏性皮膚炎');
UPDATE 6026
dolphin=# update d_diagnosis set diagnosiscode=replace(diagnosiscode, '6900011', 6900012');
UPDATE 6026
dolphin=#

ORCA

$ export LOCALE=ja_JP.EUC-JP
$ psql
orca=> update tbl_ptbyomei set khnbyomeicd=replace(khnbyomeicd, '6900011', '6900012');
UPDATE 7152
orca=> update tbl_ptbyomei set byomeicd_1=replace(byomeicd_1, '6900011', '6900012');
UPDATE 7152
orca=> update tbl_ptbyomei set byomeicd_2=replace(byomeicd_2, '6900011', '6900012');
UPDATE 7152
orca=> update tbl_ptbyomei set byomeicd_3=replace(byomeicd_3, '6900011', '6900012');
UPDATE 7152
orca=> update tbl_ptbyomei set byomeicd_4=replace(byomeicd_4, '6900011', '6900012');
UPDATE 7152
orca=> update tbl_ptbyomei set byomei=replace(byomei,'脂漏性湿疹','脂漏性皮膚炎');
UPDATE 7152
orca=> update tbl_ptbyomei set manseikbn='4' where khnbyomeicd='6900012';
UPDATE 171

« 2009年3月 | トップページ | 2009年6月 »