public int addOneBatchHeaderRecord(BillingBatchHeaderData val) {
    BillingONHeader b = new BillingONHeader();
    b.setDiskId(Integer.parseInt(val.disk_id));
    b.setTransactionId(val.transc_id);
    b.setRecordId(val.rec_id);
    b.setSpecId(val.spec_id);
    b.setMohOffice(val.moh_office);
    b.setBatchId(val.batch_id);
    b.setOperator(val.operator);
    b.setGroupNum(val.group_num);
    b.setProviderRegNum(val.provider_reg_num);
    b.setSpecialty(val.specialty);
    b.sethCount(val.h_count);
    b.setrCount(val.r_count);
    b.settCount(val.t_count);
    b.setBatchDate(new Date());
    b.setCreateDateTime(new Date());
    b.setUpdateDateTime(new Date());
    b.setCreator(val.creator);
    b.setAction(val.action);
    b.setComment(val.comment);

    dao.persist(b);

    return b.getId();
  }
  // TODO more update data
  public boolean updateBatchHeaderRecord(BillingBatchHeaderData val) {
    BillingONHeader b = dao.find(Integer.parseInt(val.getId()));
    if (b != null) {
      b.setMohOffice(val.moh_office);
      b.setBatchId(val.batch_id);
      b.setSpecialty(val.specialty);
      b.setCreator(val.creator);
      b.setUpdateDateTime(new Date());
      b.setAction(val.action);
      b.setComment(val.comment);
      dao.merge(b);
    }

    return true;
  }