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