package ch.elexis.icpc.fire.model;
import java.util.Optional;
import javax.xml.datatype.DatatypeConfigurationException;
import ch.elexis.data.Konsultation;
import ch.elexis.icpc.fire.model.TConsultation.Diagnoses;
import ch.elexis.icpc.fire.model.TConsultation.Labors;
import ch.elexis.icpc.fire.model.TConsultation.Medis;
public class ConsultationBuilder {
private Konsultation consultation;
private VitalSignsBuilder vitalsignsBuilder;
private DiagnosesBuilder diagnosesBuilder;
private LaborsBuilder laborsBuilder;
private MedisBuilder medisBuilder;
private FireConfig config;
public ConsultationBuilder(FireConfig config){
this.config = config;
vitalsignsBuilder = new VitalSignsBuilder(config);
diagnosesBuilder = new DiagnosesBuilder(config);
laborsBuilder = new LaborsBuilder(config);
medisBuilder = new MedisBuilder(config);
}
public ConsultationBuilder consultation(Konsultation consultation){
this.consultation = consultation;
return this;
}
public Optional<TConsultation> build() throws DatatypeConfigurationException{
if(consultation != null) {
TConsultation ret = config.getFactory().createTConsultation();
// vital
Optional<TVital> vital = vitalsignsBuilder.consultation(consultation).build();
vital.ifPresent(v -> ret.setVital(v));
// diagnoses
Optional<Diagnoses> diagnoses = diagnosesBuilder.consultation(consultation).build();
diagnoses.ifPresent(d -> ret.setDiagnoses(d));
// labors
Optional<Labors> labors = laborsBuilder.consultation(consultation).build();
labors.ifPresent(l -> ret.setLabors(l));
// medis
Optional<Medis> medis = medisBuilder.consultation(consultation).build();
medis.ifPresent(m -> ret.setMedis(m));
return Optional.of(ret);
}
return Optional.empty();
}
}