public ims.clinical.vo.DementiaVo saveDementia(
      ims.clinical.vo.DementiaVo dementiaToSave, FormName formName)
      throws ims.domain.exceptions.StaleObjectException {
    if (dementiaToSave == null) {
      throw new CodingRuntimeException("Cannot get DementiaVo on null Id ");
    }

    // WDEV-16247
    if (dementiaToSave.getID_DementiaIsNotNull()
        && dementiaToSave.getStepOneFindIsNotNull()
        && dementiaToSave.getStepOneFind().getID_DementiaFindIsNotNull()
        && (YesNo.YES.equals(dementiaToSave.getStepOneFind().getHasFormalDiagnosisOfDementia())
            || (YesNo.NO.equals(dementiaToSave.getStepOneFind().getHasFormalDiagnosisOfDementia())
                && YesNo.NO.equals(dementiaToSave.getStepOneFind().getDeliriumConfirmed())
                && YesNo.NO.equals(dementiaToSave.getStepOneFind().getAwarenessQuestion())))
        && (dementiaToSave.getStepTwoAssessIsNotNull()
            && dementiaToSave.getStepTwoAssess().getID_DementiaAssessAndInvestigateIsNotNull())) {
      String rieMessage =
          "THIS RECORD HAS BEEN MARKED AS RECORDED IN ERROR BY MAXIMS DEMENTIA - REASON : record is not relevant because of Edit to FIND record";
      Integer patientId = dementiaToSave.getPatient().getID_Patient();

      if (dementiaToSave.getStepTwoAssess().getStepTwoAssessNoteIsNotNull()) {
        markAsRie(
            dementiaToSave.getStepTwoAssess().getStepTwoAssessNote(),
            formName,
            patientId,
            null,
            null,
            rieMessage);
      }
      markAsRie(dementiaToSave.getStepTwoAssess(), formName, patientId, null, null, rieMessage);

      dementiaToSave.setStepTwoAssess(null);
      dementiaToSave.setAMTSScore(null);
      //	dementiaToSave.setDeliriumConfirmed(null);
      //	dementiaToSave.setDementiaConfirmed(null);
      dementiaToSave.setConfirmedPatientPutOnDementiaPathway(null);
    }

    String[] arrErrors = dementiaToSave.validate();

    if (arrErrors != null)
      throw new DomainRuntimeException("Error saving voDementia - not validated correctly");

    DomainFactory factory = getDomainFactory();
    Dementia domainDementia = DementiaVoAssembler.extractDementia(factory, dementiaToSave);
    factory.save(domainDementia);
    return DementiaVoAssembler.create(domainDementia);
  }
  public DementiaVo rieDementiaRecord(
      DementiaVo voDementia,
      FormName formName,
      Integer patientId,
      Integer contactId,
      Integer careContextId,
      String rieMessage)
      throws DomainInterfaceException, StaleObjectException {
    // RIE the AMTS record
    if (voDementia.getStepOneFindIsNotNull())
      markAsRie(
          voDementia.getStepOneFind(), formName, patientId, contactId, careContextId, rieMessage);

    // RIE AMTS and its Comment
    if (voDementia.getStepTwoAssessIsNotNull()) {
      if (voDementia.getStepTwoAssess().getStepTwoAssessNoteIsNotNull())
        markAsRie(
            voDementia.getStepTwoAssess().getStepTwoAssessNote(),
            formName,
            patientId,
            contactId,
            careContextId,
            rieMessage);

      markAsRie(
          voDementia.getStepTwoAssess(), formName, patientId, contactId, careContextId, rieMessage);
    }

    // RIE HistoricalWorklistStatus records
    for (int i = 0; i < voDementia.getHistoricalWorklistStatus().size(); i++)
      markAsRie(
          voDementia.getHistoricalWorklistStatus().get(i),
          formName,
          patientId,
          contactId,
          careContextId,
          rieMessage);

    //	//RIE CurrentWorklistStatus
    //	markAsRie(voDementia.getCurrentWorklistStatus(), formName, patientId, contactId,
    // careContextId, rieMessage);

    // RIE Dementia
    markAsRie(voDementia, formName, patientId, contactId, careContextId, rieMessage);

    return null;
  }