public DischargeSupplementaryNotesVo getSupplementary(CareContextRefVo voCareContextRefVo) {
    if (voCareContextRefVo == null)
      throw new CodingRuntimeException("voCareContextRefVo Filter not provided for list call. ");

    if (voCareContextRefVo != null) {
      DomainFactory factory = getDomainFactory();
      StringBuffer hql = new StringBuffer(" from DischargeSupplementaryNotes ds where ");
      String andStr = " ";

      ArrayList<String> markers = new ArrayList<String>();
      ArrayList<Serializable> values = new ArrayList<Serializable>();

      hql.append(andStr + " ds.careContext.id = :careContextId");
      markers.add("careContextId");
      values.add(voCareContextRefVo.getID_CareContext());
      andStr = " and ";

      List list = factory.find(hql.toString(), markers, values);
      if (list != null && list.size() > 0) {
        DischargeSupplementaryNotesVoCollection voColl =
            DischargeSupplementaryNotesVoAssembler
                .createDischargeSupplementaryNotesVoCollectionFromDischargeSupplementaryNotes(list);
        if (voColl != null && voColl.size() > 0) return voColl.get(0);
      }
    }
    return null;
  }
  public DischargeSupplementaryNotesVo saveSupplementaryAndDD(
      DischargeSupplementaryNotesVo voDischSupp, DischargeDetailsVo voDD)
      throws DomainInterfaceException, StaleObjectException {
    if (voDischSupp == null)
      throw new CodingRuntimeException("DischargeSupplementaryNotesVo is null");

    if (!voDischSupp.isValidated())
      throw new CodingRuntimeException(
          "DischargeSupplementaryNotesVo Value Object has not been validated");

    DomainFactory factory = getDomainFactory();
    DischargeSupplementaryNotes doDSN =
        DischargeSupplementaryNotesVoAssembler.extractDischargeSupplementaryNotes(
            factory, voDischSupp);

    // WDEV-8813
    // Workaround for the case when 2 users save in the same time a new
    // DischargeSupplementaryNotesVO
    // In this case the domain.save call doesn't throw a StaleObjectExeption, even if it is the case
    if (!voDischSupp.getID_DischargeSupplementaryNotesIsNotNull()) {
      DischargeSupplementaryNotesVo voDischargeSupp =
          getSupplementary(voDischSupp.getCareContext());
      if (voDischargeSupp != null) {
        throw new StaleObjectException(
            doDSN, "A DischargeSupplementaryNotesVo was already saved by another user");
      }
    }

    factory.save(doDSN);

    if (voDD != null) {
      DischargeDetails doDD = DischargeDetailsVoAssembler.extractDischargeDetails(factory, voDD);
      factory.save(doDD);
    }
    return DischargeSupplementaryNotesVoAssembler.create(doDSN);
  }