« カルテ未記入判定 | トップページ | 患者検索でのID入力 »

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());   ////↑

« カルテ未記入判定 | トップページ | 患者検索でのID入力 »

OpenDolphin」カテゴリの記事