« ORCA から送られてきた「診療内容」を反映する | トップページ | byomeiCount の永続化 »

2010年7月 1日 (木)

待ち時間表示

受付リストに,待ち人数と待ち時間(次に診察する患者さんが待っていた時間)を表示するようにした。インスペクタにはその患者さんの待ち時間が出るようにした。

Waiting1

Waiting2

plugin/WatingListImpl.java

 ・
 ・
public void updateState(final PatientVisitModel updated) {
 ・
 ・
//pns
  setPvtCount(pvtTableModel.getObjectCount());
}
 ・
 ・
//pns^
/**
 * 来院数を設定する。
 * @param cnt 来院数
 */
public void setPvtCount(int cnt) {
  pvtCount = cnt;
  //String text = ClientContext.getString("watingList.state.pvtCountText");
  //text += String.valueOf(pvtCount); // 来院数:20
  //view.getCountLbl().setText(text);
  setPvtCount();
}
/**
 * 来院数,待人数,待時間表示
 */
private void setPvtCount() {
  int waitingCount = 0;
  String waitingTime = "00:00";
  List dataList = pvtTableModel.getObjectList();

  if (pvtCount > 0) {
    boolean found = false;
    for (int i = 0; i < pvtCount; i++) {
      PatientVisitModel pvt = (PatientVisitModel) dataList.get(i);
      int state = pvt.getState();
      if (state == ChartImpl.CLOSE_NONE || state == ChartImpl.OPEN_NONE) {
        // 診察未終了レコードをカウント,最初に見つかった未終了レコードの時間から待ち時間を計算
        waitingCount++;
        if (!found) {
          Date pvtDate = ModelUtils.getDateTimeAsObject(pvt.getPvtDate());
          waitingTime = DurationFormatUtils.formatPeriod(pvtDate.getTime(), new Date().getTime(), "HH:mm");
          found = true;
        }
      }
    }
  }
  StringBuilder sb = new StringBuilder();
  sb.append("来院数");
  sb.append(String.valueOf(pvtCount));
  sb.append("人,待ち");
  sb.append(String.valueOf(waitingCount));
  sb.append("人,待ち時間 ");
  sb.append(waitingTime);
  view.getCountLbl().setText(sb.toString());
}
//pns$

plugin/RowTipsTable.java

public String getToolTipText(MouseEvent e) {
        
  ObjectReflectTableModel model = (ObjectReflectTableModel) getModel();
  int row = rowAtPoint(e.getPoint());
  PatientVisitModel pvt = (PatientVisitModel) model.getObject(row);

//pns^  待ち時間表示
  Date pvtDate = ModelUtils.getDateTimeAsObject(pvt.getPvtDate());
  int pvtState = pvt.getState();
  String waitingTime = "";
  if (pvtDate != null &&
    (pvtState == ChartImpl.CLOSE_NONE || pvtState ==ChartImpl.OPEN_NONE)) {
    waitingTime = " - 待ち時間 " + DurationFormatUtils.formatPeriod(pvtDate.getTime(), new Date().getTime(), "HH:mm");
  }

  String patientName = pvt != null ? pvt.getPatient().getKanaName() : null;
  return patientName + waitingTime;
//pns$

// return pvt != null ? pvt.getPatient().getKanaName() : null;
}

client/ChartImpl.java

public void initComponents() {
 ・
 ・
  statusPanel.setRightInfo(rdPrifix + created); // カルテ登録日:yyyy/mm/dd
//pns^待ち時間表示
  Date pvtDate = ModelUtils.getDateTimeAsObject(pvt.getPvtDate());
  if (pvtDate != null && pvt.getState() == CLOSE_NONE) { // window open 前に呼ばれる
    String waitingTime = DurationFormatUtils.formatPeriod(pvtDate.getTime(), new Date().getTime(), "HH:mm");
  statusPanel.setRightInfo(rdPrifix + created + "待ち時間 " + waitingTime);
  }
//pns$

« ORCA から送られてきた「診療内容」を反映する | トップページ | byomeiCount の永続化 »

OpenDolphin」カテゴリの記事