001package org.hl7.fhir.convertors.conv10_30.resources10_30;
002
003import org.hl7.fhir.convertors.context.ConversionContext10_30;
004import org.hl7.fhir.convertors.conv10_30.datatypes10_30.Reference10_30;
005import org.hl7.fhir.convertors.conv10_30.datatypes10_30.complextypes10_30.Annotation10_30;
006import org.hl7.fhir.convertors.conv10_30.datatypes10_30.complextypes10_30.CodeableConcept10_30;
007import org.hl7.fhir.convertors.conv10_30.datatypes10_30.complextypes10_30.Identifier10_30;
008import org.hl7.fhir.convertors.conv10_30.datatypes10_30.complextypes10_30.SimpleQuantity10_30;
009import org.hl7.fhir.convertors.conv10_30.datatypes10_30.primitivetypes10_30.*;
010import org.hl7.fhir.dstu3.model.Coding;
011import org.hl7.fhir.dstu3.model.Immunization.ImmunizationPractitionerComponent;
012import org.hl7.fhir.exceptions.FHIRException;
013
014import java.util.List;
015
016public class Immunization10_30 {
017
018  public static org.hl7.fhir.dstu2.model.Immunization convertImmunization(org.hl7.fhir.dstu3.model.Immunization src) throws FHIRException {
019    if (src == null || src.isEmpty())
020      return null;
021    org.hl7.fhir.dstu2.model.Immunization tgt = new org.hl7.fhir.dstu2.model.Immunization();
022    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyDomainResource(src, tgt);
023    for (org.hl7.fhir.dstu3.model.Identifier t : src.getIdentifier())
024      tgt.addIdentifier(Identifier10_30.convertIdentifier(t));
025    tgt.setStatus(src.getStatus().toCode());
026    if (src.hasDate())
027      tgt.setDateElement(DateTime10_30.convertDateTime(src.getDateElement()));
028    if (src.hasVaccineCode())
029      tgt.setVaccineCode(CodeableConcept10_30.convertCodeableConcept(src.getVaccineCode()));
030    if (src.hasPatient())
031      tgt.setPatient(Reference10_30.convertReference(src.getPatient()));
032    if (src.hasNotGivenElement())
033      tgt.setWasNotGivenElement(Boolean10_30.convertBoolean(src.getNotGivenElement()));
034    tgt.setReported(!src.getPrimarySource());
035    tgt.setPerformer(Reference10_30.convertReference(getPerformer(src.getPractitioner())));
036    tgt.setRequester(Reference10_30.convertReference(getRequester(src.getPractitioner())));
037    if (src.hasEncounter())
038      tgt.setEncounter(Reference10_30.convertReference(src.getEncounter()));
039    if (src.hasManufacturer())
040      tgt.setManufacturer(Reference10_30.convertReference(src.getManufacturer()));
041    if (src.hasLocation())
042      tgt.setLocation(Reference10_30.convertReference(src.getLocation()));
043    if (src.hasLotNumberElement())
044      tgt.setLotNumberElement(String10_30.convertString(src.getLotNumberElement()));
045    if (src.hasExpirationDateElement())
046      tgt.setExpirationDateElement(Date10_30.convertDate(src.getExpirationDateElement()));
047    if (src.hasSite())
048      tgt.setSite(CodeableConcept10_30.convertCodeableConcept(src.getSite()));
049    if (src.hasRoute())
050      tgt.setRoute(CodeableConcept10_30.convertCodeableConcept(src.getRoute()));
051    if (src.hasDoseQuantity())
052      tgt.setDoseQuantity(SimpleQuantity10_30.convertSimpleQuantity(src.getDoseQuantity()));
053    for (org.hl7.fhir.dstu3.model.Annotation t : src.getNote()) tgt.addNote(Annotation10_30.convertAnnotation(t));
054    if (src.hasExplanation())
055      tgt.setExplanation(convertImmunizationExplanationComponent(src.getExplanation()));
056    for (org.hl7.fhir.dstu3.model.Immunization.ImmunizationReactionComponent t : src.getReaction())
057      tgt.addReaction(convertImmunizationReactionComponent(t));
058    for (org.hl7.fhir.dstu3.model.Immunization.ImmunizationVaccinationProtocolComponent t : src.getVaccinationProtocol())
059      tgt.addVaccinationProtocol(convertImmunizationVaccinationProtocolComponent(t));
060    return tgt;
061  }
062
063  public static org.hl7.fhir.dstu3.model.Immunization convertImmunization(org.hl7.fhir.dstu2.model.Immunization src) throws FHIRException {
064    if (src == null || src.isEmpty())
065      return null;
066    org.hl7.fhir.dstu3.model.Immunization tgt = new org.hl7.fhir.dstu3.model.Immunization();
067    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyDomainResource(src, tgt);
068    for (org.hl7.fhir.dstu2.model.Identifier t : src.getIdentifier())
069      tgt.addIdentifier(Identifier10_30.convertIdentifier(t));
070    try {
071      if (src.hasStatus())
072        tgt.setStatus(org.hl7.fhir.dstu3.model.Immunization.ImmunizationStatus.fromCode(src.getStatus()));
073    } catch (org.hl7.fhir.exceptions.FHIRException e) {
074      throw new FHIRException(e);
075    }
076    if (src.hasDate())
077      tgt.setDateElement(DateTime10_30.convertDateTime(src.getDateElement()));
078    if (src.hasVaccineCode())
079      tgt.setVaccineCode(CodeableConcept10_30.convertCodeableConcept(src.getVaccineCode()));
080    if (src.hasPatient())
081      tgt.setPatient(Reference10_30.convertReference(src.getPatient()));
082    if (src.hasWasNotGivenElement())
083      tgt.setNotGivenElement(Boolean10_30.convertBoolean(src.getWasNotGivenElement()));
084    tgt.setPrimarySource(!src.getReported());
085    if (src.hasPerformer())
086      tgt.addPractitioner().setActor(Reference10_30.convertReference(src.getPerformer())).setRole(new org.hl7.fhir.dstu3.model.CodeableConcept().addCoding(new Coding().setSystem("http://hl7.org/fhir/v2/0443").setCode("AP")));
087    if (src.hasRequester())
088      tgt.addPractitioner().setActor(Reference10_30.convertReference(src.getRequester())).setRole(new org.hl7.fhir.dstu3.model.CodeableConcept().addCoding(new Coding().setSystem("http://hl7.org/fhir/v2/0443").setCode("OP")));
089    if (src.hasEncounter())
090      tgt.setEncounter(Reference10_30.convertReference(src.getEncounter()));
091    if (src.hasManufacturer())
092      tgt.setManufacturer(Reference10_30.convertReference(src.getManufacturer()));
093    if (src.hasLocation())
094      tgt.setLocation(Reference10_30.convertReference(src.getLocation()));
095    if (src.hasLotNumberElement())
096      tgt.setLotNumberElement(String10_30.convertString(src.getLotNumberElement()));
097    if (src.hasExpirationDateElement())
098      tgt.setExpirationDateElement(Date10_30.convertDate(src.getExpirationDateElement()));
099    if (src.hasSite())
100      tgt.setSite(CodeableConcept10_30.convertCodeableConcept(src.getSite()));
101    if (src.hasRoute())
102      tgt.setRoute(CodeableConcept10_30.convertCodeableConcept(src.getRoute()));
103    if (src.hasDoseQuantity())
104      tgt.setDoseQuantity(SimpleQuantity10_30.convertSimpleQuantity(src.getDoseQuantity()));
105    for (org.hl7.fhir.dstu2.model.Annotation t : src.getNote()) tgt.addNote(Annotation10_30.convertAnnotation(t));
106    if (src.hasExplanation())
107      tgt.setExplanation(convertImmunizationExplanationComponent(src.getExplanation()));
108    for (org.hl7.fhir.dstu2.model.Immunization.ImmunizationReactionComponent t : src.getReaction())
109      tgt.addReaction(convertImmunizationReactionComponent(t));
110    for (org.hl7.fhir.dstu2.model.Immunization.ImmunizationVaccinationProtocolComponent t : src.getVaccinationProtocol())
111      tgt.addVaccinationProtocol(convertImmunizationVaccinationProtocolComponent(t));
112    return tgt;
113  }
114
115  public static org.hl7.fhir.dstu2.model.Immunization.ImmunizationExplanationComponent convertImmunizationExplanationComponent(org.hl7.fhir.dstu3.model.Immunization.ImmunizationExplanationComponent src) throws FHIRException {
116    if (src == null || src.isEmpty())
117      return null;
118    org.hl7.fhir.dstu2.model.Immunization.ImmunizationExplanationComponent tgt = new org.hl7.fhir.dstu2.model.Immunization.ImmunizationExplanationComponent();
119    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
120    for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getReason())
121      tgt.addReason(CodeableConcept10_30.convertCodeableConcept(t));
122    for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getReasonNotGiven())
123      tgt.addReasonNotGiven(CodeableConcept10_30.convertCodeableConcept(t));
124    return tgt;
125  }
126
127  public static org.hl7.fhir.dstu3.model.Immunization.ImmunizationExplanationComponent convertImmunizationExplanationComponent(org.hl7.fhir.dstu2.model.Immunization.ImmunizationExplanationComponent src) throws FHIRException {
128    if (src == null || src.isEmpty())
129      return null;
130    org.hl7.fhir.dstu3.model.Immunization.ImmunizationExplanationComponent tgt = new org.hl7.fhir.dstu3.model.Immunization.ImmunizationExplanationComponent();
131    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
132    for (org.hl7.fhir.dstu2.model.CodeableConcept t : src.getReason())
133      tgt.addReason(CodeableConcept10_30.convertCodeableConcept(t));
134    for (org.hl7.fhir.dstu2.model.CodeableConcept t : src.getReasonNotGiven())
135      tgt.addReasonNotGiven(CodeableConcept10_30.convertCodeableConcept(t));
136    return tgt;
137  }
138
139  public static org.hl7.fhir.dstu3.model.Immunization.ImmunizationReactionComponent convertImmunizationReactionComponent(org.hl7.fhir.dstu2.model.Immunization.ImmunizationReactionComponent src) throws FHIRException {
140    if (src == null || src.isEmpty())
141      return null;
142    org.hl7.fhir.dstu3.model.Immunization.ImmunizationReactionComponent tgt = new org.hl7.fhir.dstu3.model.Immunization.ImmunizationReactionComponent();
143    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
144    if (src.hasDate())
145      tgt.setDateElement(DateTime10_30.convertDateTime(src.getDateElement()));
146    if (src.hasDetail())
147      tgt.setDetail(Reference10_30.convertReference(src.getDetail()));
148    if (src.hasReportedElement())
149      tgt.setReportedElement(Boolean10_30.convertBoolean(src.getReportedElement()));
150    return tgt;
151  }
152
153  public static org.hl7.fhir.dstu2.model.Immunization.ImmunizationReactionComponent convertImmunizationReactionComponent(org.hl7.fhir.dstu3.model.Immunization.ImmunizationReactionComponent src) throws FHIRException {
154    if (src == null || src.isEmpty())
155      return null;
156    org.hl7.fhir.dstu2.model.Immunization.ImmunizationReactionComponent tgt = new org.hl7.fhir.dstu2.model.Immunization.ImmunizationReactionComponent();
157    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
158    if (src.hasDate())
159      tgt.setDateElement(DateTime10_30.convertDateTime(src.getDateElement()));
160    if (src.hasDetail())
161      tgt.setDetail(Reference10_30.convertReference(src.getDetail()));
162    if (src.hasReportedElement())
163      tgt.setReportedElement(Boolean10_30.convertBoolean(src.getReportedElement()));
164    return tgt;
165  }
166
167  public static org.hl7.fhir.dstu2.model.Immunization.ImmunizationVaccinationProtocolComponent convertImmunizationVaccinationProtocolComponent(org.hl7.fhir.dstu3.model.Immunization.ImmunizationVaccinationProtocolComponent src) throws FHIRException {
168    if (src == null || src.isEmpty())
169      return null;
170    org.hl7.fhir.dstu2.model.Immunization.ImmunizationVaccinationProtocolComponent tgt = new org.hl7.fhir.dstu2.model.Immunization.ImmunizationVaccinationProtocolComponent();
171    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
172    if (src.hasDoseSequenceElement())
173      tgt.setDoseSequenceElement(PositiveInt10_30.convertPositiveInt(src.getDoseSequenceElement()));
174    if (src.hasDescriptionElement())
175      tgt.setDescriptionElement(String10_30.convertString(src.getDescriptionElement()));
176    if (src.hasAuthority())
177      tgt.setAuthority(Reference10_30.convertReference(src.getAuthority()));
178    if (src.hasSeriesElement())
179      tgt.setSeriesElement(String10_30.convertString(src.getSeriesElement()));
180    if (src.hasSeriesDosesElement())
181      tgt.setSeriesDosesElement(PositiveInt10_30.convertPositiveInt(src.getSeriesDosesElement()));
182    for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getTargetDisease())
183      tgt.addTargetDisease(CodeableConcept10_30.convertCodeableConcept(t));
184    if (src.hasDoseStatus())
185      tgt.setDoseStatus(CodeableConcept10_30.convertCodeableConcept(src.getDoseStatus()));
186    if (src.hasDoseStatusReason())
187      tgt.setDoseStatusReason(CodeableConcept10_30.convertCodeableConcept(src.getDoseStatusReason()));
188    return tgt;
189  }
190
191  public static org.hl7.fhir.dstu3.model.Immunization.ImmunizationVaccinationProtocolComponent convertImmunizationVaccinationProtocolComponent(org.hl7.fhir.dstu2.model.Immunization.ImmunizationVaccinationProtocolComponent src) throws FHIRException {
192    if (src == null || src.isEmpty())
193      return null;
194    org.hl7.fhir.dstu3.model.Immunization.ImmunizationVaccinationProtocolComponent tgt = new org.hl7.fhir.dstu3.model.Immunization.ImmunizationVaccinationProtocolComponent();
195    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
196    if (src.hasDoseSequenceElement())
197      tgt.setDoseSequenceElement(PositiveInt10_30.convertPositiveInt(src.getDoseSequenceElement()));
198    if (src.hasDescriptionElement())
199      tgt.setDescriptionElement(String10_30.convertString(src.getDescriptionElement()));
200    if (src.hasAuthority())
201      tgt.setAuthority(Reference10_30.convertReference(src.getAuthority()));
202    if (src.hasSeriesElement())
203      tgt.setSeriesElement(String10_30.convertString(src.getSeriesElement()));
204    if (src.hasSeriesDosesElement())
205      tgt.setSeriesDosesElement(PositiveInt10_30.convertPositiveInt(src.getSeriesDosesElement()));
206    for (org.hl7.fhir.dstu2.model.CodeableConcept t : src.getTargetDisease())
207      tgt.addTargetDisease(CodeableConcept10_30.convertCodeableConcept(t));
208    if (src.hasDoseStatus())
209      tgt.setDoseStatus(CodeableConcept10_30.convertCodeableConcept(src.getDoseStatus()));
210    if (src.hasDoseStatusReason())
211      tgt.setDoseStatusReason(CodeableConcept10_30.convertCodeableConcept(src.getDoseStatusReason()));
212    return tgt;
213  }
214
215  static public org.hl7.fhir.dstu3.model.Reference getPerformer(List<ImmunizationPractitionerComponent> practitioner) {
216    for (ImmunizationPractitionerComponent p : practitioner) {
217      if (CodeableConcept10_30.hasConcept(p.getRole(), "http://hl7.org/fhir/v2/0443", "AP"))
218        return p.getActor();
219    }
220    return null;
221  }
222
223  static public org.hl7.fhir.dstu3.model.Reference getRequester(List<ImmunizationPractitionerComponent> practitioner) {
224    for (ImmunizationPractitionerComponent p : practitioner) {
225      if (CodeableConcept10_30.hasConcept(p.getRole(), "http://hl7.org/fhir/v2/0443", "OP"))
226        return p.getActor();
227    }
228    return null;
229  }
230}