public function saveModel(\WorklistPatient $model)
{
// extract the values to be passed to the manager instance for mapping
$patient = $this->mapPatient($model);
$when = $this->mapWhen($model);
$attributes = $this->mapAttributes($model);
// allow the suppression of errors for appointments received prior to the ignore date
if ($warning_limit = $this->worklist_manager->getWorklistIgnoreDate()) {
if ($when < $warning_limit) {
$this->warn_errors = true;
}
}
if ($model->isNewRecord) {
if (!($model = $this->worklist_manager->mapPatientToWorklistDefinition($patient, $when, $attributes))) {
foreach ($this->worklist_manager->getErrors() as $err) {
$this->addError($err);
}
if ($this->warn_errors) {
return false;
}
throw new \Exception('Could not add patient to worklist');
}
} else {
$model->patient_id = $patient->id;
if (!$this->worklist_manager->updateWorklistPatientFromMapping($model, $when, $attributes, !$this->partial_record)) {
foreach ($this->worklist_manager->getErrors() as $err) {
$this->addError($err);
}
if ($this->warn_errors) {
return false;
}
throw new \Exception('Could not update patient worklist entry');
}
}
return $model;
}