« カルテ検索機能 | トップページ | カルテ保存後ウインドウを閉じる »

2009年6月29日 (月)

新規カルテにテキストスタンプ挿入

新規カルテにテキストスタンプを自動的に挿入できるようにした。「テンプレート(初診)」「テンプレート(再診)」というテキストスタンプを作っておくと,新規カルテ作成時に自動的に挿入される。

 

client/StampTreeModules.java

/**
 * テキストスタンプから title のスタンプを取ってきて返す
 * @return ModuleModel
 */
public ModuleModel getTextStamp(String title) {

    ModuleModel mModel = new ModuleModel();
    ModuleInfoBean stamp = null;
    StampTree tree =  mediator.getStampTree("text");

    for (int i=0; i<tree.getRowCount(); i++) {
        StampTreeNode sn = (StampTreeNode) tree.getPathForRow(i).getLastPathComponent();
        if (sn.isLeaf()) {
            ModuleInfoBean bean = sn.getStampInfo();
            String name = bean.getStampName();
            if (name.equals(title)) {
                stamp = bean;
                break;
            }
        }
    }

    if (stamp != null) {
        StampDelegater sdl = new StampDelegater();
        // Stamp モデルをデータベースから取ってくる
        StampModel sModel = sdl.getStamp(stamp.getStampId());
        // Stamp モデルから info モデルを作る
        IInfoModel iModel = (IInfoModel) BeanUtils.xmlDecode(sModel.getStampBytes());
        // info モデル(実体)と stamp(情報) を module model にセット
        mModel.setModel(iModel);
        mModel.setModuleInfo(stamp);
        mModel.getModuleInfo().setStampRole(IInfoModel.ROLE_SOA);
    } else mModel = null;

    return mModel;
}

client/ChartImpl.java

/**
 * 新規カルテを作成する。
 */    
public void newKarte() {
 ・
 ・
  // Baseになるカルテがあるかどうかでモデルの生成が異なる
  if (params.getCreateMode() == Chart.NewKarteMode.EMPTY_NEW) {
    logger.debug("empty new is selected");
    editModel = getKarteModelToEdit(params);
  } else {
    logger.debug("copy new is selected");
    editModel = getKarteModelToEdit(base.getModel(), params);
  }

////↓   新規カルテにいろいろモジュールを入れる
  StampTreeModules stm = new StampTreeModules(this);
  // 初診・再診 stampTreeModule を自動入力する
  ModuleModel mm = stm.getBaseCharge();
  if (mm != null) editModel.addModule(mm);

  // 初期テキストスタンプ挿入
  if (stm.isShoshin()) {
      mm = stm.getTextStamp("テンプレート(初診)");
      if (mm != null) editModel.addModule(mm);
  } else {
      mm = stm.getTextStamp("テンプレート(再診)");
      if (mm != null) editModel.addModule(mm);
  }
}
////↑
 ・
 ・

client/KartePane.java

/**
 * このペインに Stamp を挿入する。
 */
public void stamp(final ModuleModel stamp) {
   if (stamp != null) {
////↓       text stamp がここに入った時の対策(新規カルテにテキストスタンプ挿入するときここに来る)
   if (stamp.getModuleInfo().getEntity().equals(IInfoModel.ENTITY_TEXT)) {
       insertTextStamp(stamp.getModel().toString());
       return;
   }
////↑
   EventQueue.invokeLater(new Runnable() {
 ・
 ・

« カルテ検索機能 | トップページ | カルテ保存後ウインドウを閉じる »

OpenDolphin」カテゴリの記事