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