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);
  }