001package org.hl7.fhir.convertors.conv30_50.resources30_50;
002
003import org.hl7.fhir.convertors.context.ConversionContext30_50;
004import org.hl7.fhir.convertors.conv30_50.datatypes30_50.ContactDetail30_50;
005import org.hl7.fhir.convertors.conv30_50.datatypes30_50.Reference30_50;
006import org.hl7.fhir.convertors.conv30_50.datatypes30_50.RelatedArtifact30_50;
007import org.hl7.fhir.convertors.conv30_50.datatypes30_50.UsageContext30_50;
008import org.hl7.fhir.convertors.conv30_50.datatypes30_50.complextypes30_50.CodeableConcept30_50;
009import org.hl7.fhir.convertors.conv30_50.datatypes30_50.complextypes30_50.Identifier30_50;
010import org.hl7.fhir.convertors.conv30_50.datatypes30_50.complextypes30_50.Period30_50;
011import org.hl7.fhir.convertors.conv30_50.datatypes30_50.primitivetypes30_50.*;
012import org.hl7.fhir.dstu3.model.ContactDetail;
013import org.hl7.fhir.dstu3.model.Contributor;
014import org.hl7.fhir.dstu3.model.Contributor.ContributorType;
015import org.hl7.fhir.exceptions.FHIRException;
016
017public class Measure30_50 {
018
019  public static org.hl7.fhir.r5.model.Measure convertMeasure(org.hl7.fhir.dstu3.model.Measure src) throws FHIRException {
020    if (src == null)
021      return null;
022    org.hl7.fhir.r5.model.Measure tgt = new org.hl7.fhir.r5.model.Measure();
023    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyDomainResource(src, tgt);
024    if (src.hasUrl())
025      tgt.setUrlElement(Uri30_50.convertUri(src.getUrlElement()));
026    for (org.hl7.fhir.dstu3.model.Identifier t : src.getIdentifier())
027      tgt.addIdentifier(Identifier30_50.convertIdentifier(t));
028    if (src.hasVersion())
029      tgt.setVersionElement(String30_50.convertString(src.getVersionElement()));
030    if (src.hasName())
031      tgt.setNameElement(String30_50.convertString(src.getNameElement()));
032    if (src.hasTitle())
033      tgt.setTitleElement(String30_50.convertString(src.getTitleElement()));
034    if (src.hasStatus())
035      tgt.setStatusElement(Enumerations30_50.convertPublicationStatus(src.getStatusElement()));
036    if (src.hasExperimental())
037      tgt.setExperimentalElement(Boolean30_50.convertBoolean(src.getExperimentalElement()));
038    if (src.hasType())
039      for (org.hl7.fhir.dstu3.model.CodeableConcept concept : src.getType())
040        tgt.addType(CodeableConcept30_50.convertCodeableConcept(concept));
041    if (src.hasDate())
042      tgt.setDateElement(DateTime30_50.convertDateTime(src.getDateElement()));
043    if (src.hasPublisher())
044      tgt.setPublisherElement(String30_50.convertString(src.getPublisherElement()));
045    for (org.hl7.fhir.dstu3.model.ContactDetail t : src.getContact())
046      tgt.addContact(ContactDetail30_50.convertContactDetail(t));
047    if (src.hasDescription())
048      tgt.setDescriptionElement(MarkDown30_50.convertMarkdown(src.getDescriptionElement()));
049    for (org.hl7.fhir.dstu3.model.UsageContext t : src.getUseContext())
050      tgt.addUseContext(UsageContext30_50.convertUsageContext(t));
051    for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getJurisdiction())
052      tgt.addJurisdiction(CodeableConcept30_50.convertCodeableConcept(t));
053    if (src.hasPurpose())
054      tgt.setPurposeElement(MarkDown30_50.convertMarkdown(src.getPurposeElement()));
055    if (src.hasUsage())
056      tgt.setUsageElement(String30_50.convertString(src.getUsageElement()));
057    if (src.hasCopyright())
058      tgt.setCopyrightElement(MarkDown30_50.convertMarkdown(src.getCopyrightElement()));
059    if (src.hasApprovalDate())
060      tgt.setApprovalDateElement(Date30_50.convertDate(src.getApprovalDateElement()));
061    if (src.hasLastReviewDate())
062      tgt.setLastReviewDateElement(Date30_50.convertDate(src.getLastReviewDateElement()));
063    if (src.hasEffectivePeriod())
064      tgt.setEffectivePeriod(Period30_50.convertPeriod(src.getEffectivePeriod()));
065    for (org.hl7.fhir.dstu3.model.Contributor t : src.getContributor()) {
066      if (t.getType() == ContributorType.AUTHOR)
067        if (t.hasContact())
068          for (ContactDetail c : t.getContact()) tgt.addAuthor(ContactDetail30_50.convertContactDetail(c));
069        else
070          tgt.addAuthor(new org.hl7.fhir.r5.model.ContactDetail().setName(t.getName()));
071      if (t.getType() == ContributorType.EDITOR)
072        if (t.hasContact())
073          for (ContactDetail c : t.getContact())
074            tgt.addEditor(ContactDetail30_50.convertContactDetail(c).setName(t.hasName() ? t.getName() : null));
075        else
076          tgt.addAuthor(new org.hl7.fhir.r5.model.ContactDetail().setName(t.getName()));
077      if (t.getType() == ContributorType.REVIEWER)
078        if (t.hasContact())
079          for (ContactDetail c : t.getContact())
080            tgt.addReviewer(ContactDetail30_50.convertContactDetail(c).setName(t.hasName() ? t.getName() : null));
081        else
082          tgt.addAuthor(new org.hl7.fhir.r5.model.ContactDetail().setName(t.getName()));
083      if (t.getType() == ContributorType.ENDORSER)
084        if (t.hasContact())
085          for (ContactDetail c : t.getContact())
086            tgt.addEndorser(ContactDetail30_50.convertContactDetail(c).setName(t.hasName() ? t.getName() : null));
087        else
088          tgt.addAuthor(new org.hl7.fhir.r5.model.ContactDetail().setName(t.getName()));
089    }
090    for (org.hl7.fhir.dstu3.model.RelatedArtifact t : src.getRelatedArtifact())
091      tgt.addRelatedArtifact(RelatedArtifact30_50.convertRelatedArtifact(t));
092    for (org.hl7.fhir.dstu3.model.Reference r : src.getLibrary()) tgt.addLibrary(r.getReference());
093    if (src.hasDisclaimer())
094      tgt.setDisclaimerElement(MarkDown30_50.convertMarkdown(src.getDisclaimerElement()));
095    if (src.hasScoring())
096      tgt.setScoring(CodeableConcept30_50.convertCodeableConcept(src.getScoring()));
097    if (src.hasCompositeScoring())
098      tgt.setCompositeScoring(CodeableConcept30_50.convertCodeableConcept(src.getCompositeScoring()));
099    if (src.hasRiskAdjustment())
100      tgt.setRiskAdjustmentElement(String30_50.convertString(src.getRiskAdjustmentElement()));
101    if (src.hasRateAggregation())
102      tgt.setRateAggregationElement(String30_50.convertString(src.getRateAggregationElement()));
103    if (src.hasRationale())
104      tgt.setRationaleElement(MarkDown30_50.convertMarkdown(src.getRationaleElement()));
105    if (src.hasClinicalRecommendationStatement())
106      tgt.setClinicalRecommendationStatementElement(MarkDown30_50.convertMarkdown(src.getClinicalRecommendationStatementElement()));
107    if (src.hasImprovementNotation()) {
108      if (src.getImprovementNotation().toLowerCase().contains("increase") || src.getImprovementNotation().toLowerCase().contains("higher"))
109        tgt.setImprovementNotation(new org.hl7.fhir.r5.model.CodeableConcept().addCoding(new org.hl7.fhir.r5.model.Coding().setCode("increase").setSystem("http://terminology.hl7.org/CodeSystem/measure-improvement-notation")).setText(src.getImprovementNotation()));
110      else if (src.getImprovementNotation().toLowerCase().contains("decrease") || src.getImprovementNotation().toLowerCase().contains("lower"))
111        tgt.setImprovementNotation(new org.hl7.fhir.r5.model.CodeableConcept().addCoding(new org.hl7.fhir.r5.model.Coding().setCode("decrease").setSystem("http://terminology.hl7.org/CodeSystem/measure-improvement-notation")).setText(src.getImprovementNotation()));
112      else
113        tgt.setImprovementNotation(new org.hl7.fhir.r5.model.CodeableConcept().setText(src.getImprovementNotation()));
114    }
115    for (org.hl7.fhir.dstu3.model.MarkdownType m : src.getDefinition()) tgt.addDefinition(m.getValue());
116    if (src.hasGuidance())
117      tgt.setGuidanceElement(MarkDown30_50.convertMarkdown(src.getGuidanceElement()));
118    for (org.hl7.fhir.dstu3.model.Measure.MeasureGroupComponent g : src.getGroup())
119      tgt.addGroup(convertMeasureGroup(g));
120    return tgt;
121  }
122
123  public static org.hl7.fhir.dstu3.model.Measure convertMeasure(org.hl7.fhir.r5.model.Measure src) throws FHIRException {
124    if (src == null)
125      return null;
126    org.hl7.fhir.dstu3.model.Measure tgt = new org.hl7.fhir.dstu3.model.Measure();
127    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyDomainResource(src, tgt);
128    if (src.hasUrl())
129      tgt.setUrlElement(Uri30_50.convertUri(src.getUrlElement()));
130    for (org.hl7.fhir.r5.model.Identifier t : src.getIdentifier())
131      tgt.addIdentifier(Identifier30_50.convertIdentifier(t));
132    if (src.hasVersion())
133      tgt.setVersionElement(String30_50.convertString(src.getVersionElement()));
134    if (src.hasName())
135      tgt.setNameElement(String30_50.convertString(src.getNameElement()));
136    if (src.hasTitle())
137      tgt.setTitleElement(String30_50.convertString(src.getTitleElement()));
138    if (src.hasStatus())
139      tgt.setStatusElement(Enumerations30_50.convertPublicationStatus(src.getStatusElement()));
140    if (src.hasExperimental())
141      tgt.setExperimentalElement(Boolean30_50.convertBoolean(src.getExperimentalElement()));
142    if (src.hasType())
143      for (org.hl7.fhir.r5.model.CodeableConcept concept : src.getType())
144        tgt.addType(CodeableConcept30_50.convertCodeableConcept(concept));
145    if (src.hasDate())
146      tgt.setDateElement(DateTime30_50.convertDateTime(src.getDateElement()));
147    if (src.hasPublisher())
148      tgt.setPublisherElement(String30_50.convertString(src.getPublisherElement()));
149    for (org.hl7.fhir.r5.model.ContactDetail t : src.getContact())
150      tgt.addContact(ContactDetail30_50.convertContactDetail(t));
151    if (src.hasDescription())
152      tgt.setDescriptionElement(MarkDown30_50.convertMarkdown(src.getDescriptionElement()));
153    for (org.hl7.fhir.r5.model.UsageContext t : src.getUseContext())
154      tgt.addUseContext(UsageContext30_50.convertUsageContext(t));
155    for (org.hl7.fhir.r5.model.CodeableConcept t : src.getJurisdiction())
156      tgt.addJurisdiction(CodeableConcept30_50.convertCodeableConcept(t));
157    if (src.hasPurpose())
158      tgt.setPurposeElement(MarkDown30_50.convertMarkdown(src.getPurposeElement()));
159    if (src.hasUsage())
160      tgt.setUsageElement(String30_50.convertString(src.getUsageElement()));
161    if (src.hasCopyright())
162      tgt.setCopyrightElement(MarkDown30_50.convertMarkdown(src.getCopyrightElement()));
163    if (src.hasApprovalDate())
164      tgt.setApprovalDateElement(Date30_50.convertDate(src.getApprovalDateElement()));
165    if (src.hasLastReviewDate())
166      tgt.setLastReviewDateElement(Date30_50.convertDate(src.getLastReviewDateElement()));
167    if (src.hasEffectivePeriod())
168      tgt.setEffectivePeriod(Period30_50.convertPeriod(src.getEffectivePeriod()));
169    if (src.hasAuthor())
170      for (org.hl7.fhir.r5.model.ContactDetail c : src.getAuthor()) {
171        ContactDetail cd = ContactDetail30_50.convertContactDetail(c);
172        Contributor con = new Contributor().setType(ContributorType.AUTHOR);
173        if (cd.hasName())
174          con.setName(cd.getName());
175        tgt.addContributor(con);
176      }
177    if (src.hasEditor())
178      for (org.hl7.fhir.r5.model.ContactDetail c : src.getAuthor()) {
179        ContactDetail cd = ContactDetail30_50.convertContactDetail(c);
180        Contributor con = new Contributor().setType(ContributorType.EDITOR);
181        if (cd.hasName())
182          con.setName(cd.getName());
183        tgt.addContributor(con);
184      }
185    if (src.hasReviewer())
186      for (org.hl7.fhir.r5.model.ContactDetail c : src.getAuthor()) {
187        ContactDetail cd = ContactDetail30_50.convertContactDetail(c);
188        Contributor con = new Contributor().setType(ContributorType.REVIEWER);
189        if (cd.hasName())
190          con.setName(cd.getName());
191        tgt.addContributor(con);
192      }
193    if (src.hasEndorser())
194      for (org.hl7.fhir.r5.model.ContactDetail c : src.getAuthor()) {
195        ContactDetail cd = ContactDetail30_50.convertContactDetail(c);
196        Contributor con = new Contributor().setType(ContributorType.ENDORSER);
197        if (cd.hasName())
198          con.setName(cd.getName());
199        tgt.addContributor(con);
200      }
201    for (org.hl7.fhir.r5.model.RelatedArtifact t : src.getRelatedArtifact())
202      tgt.addRelatedArtifact(RelatedArtifact30_50.convertRelatedArtifact(t));
203    for (org.hl7.fhir.r5.model.CanonicalType r : src.getLibrary())
204      tgt.addLibrary(Reference30_50.convertCanonicalToReference(r));
205    if (src.hasDisclaimer())
206      tgt.setDisclaimerElement(MarkDown30_50.convertMarkdown(src.getDisclaimerElement()));
207    if (src.hasScoring())
208      tgt.setScoring(CodeableConcept30_50.convertCodeableConcept(src.getScoring()));
209    if (src.hasCompositeScoring())
210      tgt.setCompositeScoring(CodeableConcept30_50.convertCodeableConcept(src.getCompositeScoring()));
211    if (src.hasRiskAdjustment())
212      tgt.setRiskAdjustmentElement(String30_50.convertString(src.getRiskAdjustmentElement()));
213    if (src.hasRateAggregation())
214      tgt.setRateAggregationElement(String30_50.convertString(src.getRateAggregationElement()));
215    if (src.hasRationale())
216      tgt.setRationaleElement(MarkDown30_50.convertMarkdown(src.getRationaleElement()));
217    if (src.hasClinicalRecommendationStatement())
218      tgt.setClinicalRecommendationStatementElement(MarkDown30_50.convertMarkdown(src.getClinicalRecommendationStatementElement()));
219    if (src.hasImprovementNotation())
220      for (org.hl7.fhir.r5.model.Coding cc : src.getImprovementNotation().getCoding()) {
221        if (cc.hasCode() && cc.getCode().equals("increase"))
222          tgt.setImprovementNotation(cc.getCode());
223        else if (cc.hasCode() && cc.getCode().equals("decrease"))
224          tgt.setImprovementNotation(cc.getCode());
225      }
226    for (org.hl7.fhir.r5.model.MarkdownType m : src.getDefinition()) tgt.addDefinition(m.getValue());
227    if (src.hasGuidance())
228      tgt.setGuidanceElement(MarkDown30_50.convertMarkdown(src.getGuidanceElement()));
229    for (org.hl7.fhir.r5.model.Measure.MeasureGroupComponent g : src.getGroup()) tgt.addGroup(convertMeasureGroup(g));
230    return tgt;
231  }
232
233  public static org.hl7.fhir.dstu3.model.Measure.MeasureGroupComponent convertMeasureGroup(org.hl7.fhir.r5.model.Measure.MeasureGroupComponent src) {
234    if (src == null)
235      return null;
236    org.hl7.fhir.dstu3.model.Measure.MeasureGroupComponent tgt = new org.hl7.fhir.dstu3.model.Measure.MeasureGroupComponent();
237    if (src.hasCode() && src.getCode().hasCoding())
238      tgt.setIdentifier(new org.hl7.fhir.dstu3.model.Identifier().setValue(src.getCode().getCodingFirstRep().getCode()));
239    if (src.hasDescription())
240      tgt.setDescriptionElement(String30_50.convertString(src.getDescriptionElement()));
241    for (org.hl7.fhir.r5.model.Measure.MeasureGroupPopulationComponent p : src.getPopulation())
242      tgt.addPopulation(convertMeasureGroupPopulation(p));
243    for (org.hl7.fhir.r5.model.Measure.MeasureGroupStratifierComponent s : src.getStratifier())
244      tgt.addStratifier(convertMeasureGroupStratifier(s));
245    return tgt;
246  }
247
248  public static org.hl7.fhir.r5.model.Measure.MeasureGroupComponent convertMeasureGroup(org.hl7.fhir.dstu3.model.Measure.MeasureGroupComponent src) {
249    if (src == null)
250      return null;
251    org.hl7.fhir.r5.model.Measure.MeasureGroupComponent tgt = new org.hl7.fhir.r5.model.Measure.MeasureGroupComponent();
252    if (src.hasIdentifier())
253      tgt.setCode(new org.hl7.fhir.r5.model.CodeableConcept().addCoding(new org.hl7.fhir.r5.model.Coding().setCode(src.getIdentifier().getValue())));
254    if (src.hasDescription())
255      tgt.setDescriptionElement(String30_50.convertString(src.getDescriptionElement()));
256    for (org.hl7.fhir.dstu3.model.Measure.MeasureGroupPopulationComponent p : src.getPopulation())
257      tgt.addPopulation(convertMeasureGroupPopulation(p));
258    for (org.hl7.fhir.dstu3.model.Measure.MeasureGroupStratifierComponent s : src.getStratifier())
259      tgt.addStratifier(convertMeasureGroupStratifier(s));
260    return tgt;
261  }
262
263  public static org.hl7.fhir.dstu3.model.Measure.MeasureGroupPopulationComponent convertMeasureGroupPopulation(org.hl7.fhir.r5.model.Measure.MeasureGroupPopulationComponent src) {
264    if (src == null)
265      return null;
266    org.hl7.fhir.dstu3.model.Measure.MeasureGroupPopulationComponent tgt = new org.hl7.fhir.dstu3.model.Measure.MeasureGroupPopulationComponent();
267    if (src.hasCode())
268      tgt.setCode(CodeableConcept30_50.convertCodeableConcept(src.getCode()));
269    if (src.hasDescription())
270      tgt.setDescriptionElement(String30_50.convertString(src.getDescriptionElement()));
271    if (src.hasCriteria() && src.getCriteria().hasExpression())
272      tgt.setCriteria(src.getCriteria().getExpression());
273    if (src.hasCriteria() && src.getCriteria().hasName()) {
274      tgt.setName(src.getCriteria().getName());
275    }
276    return tgt;
277  }
278
279  public static org.hl7.fhir.r5.model.Measure.MeasureGroupPopulationComponent convertMeasureGroupPopulation(org.hl7.fhir.dstu3.model.Measure.MeasureGroupPopulationComponent src) {
280    if (src == null)
281      return null;
282    org.hl7.fhir.r5.model.Measure.MeasureGroupPopulationComponent tgt = new org.hl7.fhir.r5.model.Measure.MeasureGroupPopulationComponent();
283    if (src.hasCode())
284      tgt.setCode(CodeableConcept30_50.convertCodeableConcept(src.getCode()));
285    if (src.hasDescription())
286      tgt.setDescriptionElement(String30_50.convertString(src.getDescriptionElement()));
287    if (src.hasCriteria())
288      tgt.setCriteria(new org.hl7.fhir.r5.model.Expression().setExpression(src.getCriteria()));
289    if (src.hasName()) {
290      if (tgt.hasCriteria())
291        tgt.getCriteria().setName(src.getName());
292      else
293        tgt.setCriteria(new org.hl7.fhir.r5.model.Expression().setName(src.getName()));
294    }
295    return tgt;
296  }
297
298  public static org.hl7.fhir.r5.model.Measure.MeasureGroupStratifierComponent convertMeasureGroupStratifier(org.hl7.fhir.dstu3.model.Measure.MeasureGroupStratifierComponent src) {
299    if (src == null)
300      return null;
301    org.hl7.fhir.r5.model.Measure.MeasureGroupStratifierComponent tgt = new org.hl7.fhir.r5.model.Measure.MeasureGroupStratifierComponent();
302    if (src.hasIdentifier())
303      tgt.setCode(new org.hl7.fhir.r5.model.CodeableConcept().addCoding(new org.hl7.fhir.r5.model.Coding().setCode(src.getIdentifier().getValue())));
304    if (src.hasCriteria())
305      tgt.setCriteria(new org.hl7.fhir.r5.model.Expression().setExpression(src.getCriteria()));
306    return tgt;
307  }
308
309  public static org.hl7.fhir.dstu3.model.Measure.MeasureGroupStratifierComponent convertMeasureGroupStratifier(org.hl7.fhir.r5.model.Measure.MeasureGroupStratifierComponent src) {
310    if (src == null)
311      return null;
312    org.hl7.fhir.dstu3.model.Measure.MeasureGroupStratifierComponent tgt = new org.hl7.fhir.dstu3.model.Measure.MeasureGroupStratifierComponent();
313    if (src.hasCode() && src.getCode().hasCoding())
314      tgt.setIdentifier(new org.hl7.fhir.dstu3.model.Identifier().setValue(src.getCode().getCodingFirstRep().getCode()));
315    if (src.hasCriteria() && src.getCriteria().hasExpression())
316      tgt.setCriteria(src.getCriteria().getExpression());
317    return tgt;
318  }
319}