/**
   * Saves ClientImmunisationSchedule (the ClientImmunisationSchedule must be non-null and
   * validated)
   */
  public ClientImmunisationScheduleVo saveClientImmunisationSchedule(
      ClientImmunisationScheduleVo clientImmunisationSchdule)
      throws DomainInterfaceException, StaleObjectException, ForeignKeyViolationException,
          UniqueKeyViolationException {
    if (clientImmunisationSchdule == null)
      throw new DomainInterfaceException("Can not save a null client immunisation schedule");

    if (!clientImmunisationSchdule.isValidated())
      throw new DomainInterfaceException(
          "The ClientImmunisationScheduleVo was not validated (RecordingSchedulingImpl.java)");

    DomainFactory factory = getDomainFactory();

    ClientImmunisationSchedule extractClientImmunisationSchedule =
        ClientImmunisationScheduleVoAssembler.extractClientImmunisationSchedule(
            factory, clientImmunisationSchdule);
    factory.save(extractClientImmunisationSchedule);
    return ClientImmunisationScheduleVoAssembler.create(extractClientImmunisationSchedule);
  }