001package org.hl7.fhir.convertors.conv10_30.resources10_30;
002
003import org.hl7.fhir.convertors.advisors.impl.BaseAdvisor_10_30;
004import org.hl7.fhir.convertors.context.ConversionContext10_30;
005import org.hl7.fhir.convertors.conv10_30.VersionConvertor_10_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.Coding10_30;
008import org.hl7.fhir.convertors.conv10_30.datatypes10_30.complextypes10_30.ContactPoint10_30;
009import org.hl7.fhir.convertors.conv10_30.datatypes10_30.complextypes10_30.Identifier10_30;
010import org.hl7.fhir.convertors.conv10_30.datatypes10_30.primitivetypes10_30.*;
011import org.hl7.fhir.dstu2.model.ValueSet;
012import org.hl7.fhir.dstu3.model.CodeSystem;
013import org.hl7.fhir.dstu3.model.CodeSystem.CodeSystemContentMode;
014import org.hl7.fhir.dstu3.model.CodeSystem.ConceptDefinitionComponent;
015import org.hl7.fhir.dstu3.terminologies.CodeSystemUtilities;
016import org.hl7.fhir.exceptions.FHIRException;
017
018import java.util.List;
019
020public class ValueSet10_30 {
021
022  public static org.hl7.fhir.dstu2.model.ValueSet.ConceptReferenceComponent convertConceptReferenceComponent(org.hl7.fhir.dstu3.model.ValueSet.ConceptReferenceComponent src) throws FHIRException {
023    if (src == null || src.isEmpty())
024      return null;
025    org.hl7.fhir.dstu2.model.ValueSet.ConceptReferenceComponent tgt = new org.hl7.fhir.dstu2.model.ValueSet.ConceptReferenceComponent();
026    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
027    if (src.hasCodeElement())
028      tgt.setCodeElement(Code10_30.convertCode(src.getCodeElement()));
029    if (src.hasDisplayElement())
030      tgt.setDisplayElement(String10_30.convertString(src.getDisplayElement()));
031    for (org.hl7.fhir.dstu3.model.ValueSet.ConceptReferenceDesignationComponent t : src.getDesignation())
032      tgt.addDesignation(convertConceptReferenceDesignationComponent(t));
033    return tgt;
034  }
035
036  public static org.hl7.fhir.dstu3.model.ValueSet.ConceptReferenceComponent convertConceptReferenceComponent(org.hl7.fhir.dstu2.model.ValueSet.ConceptReferenceComponent src) throws FHIRException {
037    if (src == null || src.isEmpty())
038      return null;
039    org.hl7.fhir.dstu3.model.ValueSet.ConceptReferenceComponent tgt = new org.hl7.fhir.dstu3.model.ValueSet.ConceptReferenceComponent();
040    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
041    if (src.hasCodeElement())
042      tgt.setCodeElement(Code10_30.convertCode(src.getCodeElement()));
043    if (src.hasDisplayElement())
044      tgt.setDisplayElement(String10_30.convertString(src.getDisplayElement()));
045    for (org.hl7.fhir.dstu2.model.ValueSet.ConceptDefinitionDesignationComponent t : src.getDesignation())
046      tgt.addDesignation(convertConceptReferenceDesignationComponent(t));
047    return tgt;
048  }
049
050  public static org.hl7.fhir.dstu3.model.ValueSet.ConceptReferenceDesignationComponent convertConceptReferenceDesignationComponent(org.hl7.fhir.dstu2.model.ValueSet.ConceptDefinitionDesignationComponent src) throws FHIRException {
051    if (src == null || src.isEmpty())
052      return null;
053    org.hl7.fhir.dstu3.model.ValueSet.ConceptReferenceDesignationComponent tgt = new org.hl7.fhir.dstu3.model.ValueSet.ConceptReferenceDesignationComponent();
054    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
055    if (src.hasLanguageElement())
056      tgt.setLanguageElement(Code10_30.convertCode(src.getLanguageElement()));
057    if (src.hasUse())
058      tgt.setUse(Coding10_30.convertCoding(src.getUse()));
059    if (src.hasValueElement())
060      tgt.setValueElement(String10_30.convertString(src.getValueElement()));
061    return tgt;
062  }
063
064  public static org.hl7.fhir.dstu2.model.ValueSet.ConceptDefinitionDesignationComponent convertConceptReferenceDesignationComponent(org.hl7.fhir.dstu3.model.ValueSet.ConceptReferenceDesignationComponent src) throws FHIRException {
065    if (src == null || src.isEmpty())
066      return null;
067    org.hl7.fhir.dstu2.model.ValueSet.ConceptDefinitionDesignationComponent tgt = new org.hl7.fhir.dstu2.model.ValueSet.ConceptDefinitionDesignationComponent();
068    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
069    if (src.hasLanguageElement())
070      tgt.setLanguageElement(Code10_30.convertCode(src.getLanguageElement()));
071    if (src.hasUse())
072      tgt.setUse(Coding10_30.convertCoding(src.getUse()));
073    if (src.hasValueElement())
074      tgt.setValueElement(String10_30.convertString(src.getValueElement()));
075    return tgt;
076  }
077
078  public static org.hl7.fhir.dstu2.model.ValueSet.ConceptSetComponent convertConceptSetComponent(org.hl7.fhir.dstu3.model.ValueSet.ConceptSetComponent src) throws FHIRException {
079    if (src == null || src.isEmpty())
080      return null;
081    org.hl7.fhir.dstu2.model.ValueSet.ConceptSetComponent tgt = new org.hl7.fhir.dstu2.model.ValueSet.ConceptSetComponent();
082    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
083    if (src.hasSystemElement())
084      tgt.setSystemElement(Uri10_30.convertUri(src.getSystemElement()));
085    if (src.hasVersionElement())
086      tgt.setVersionElement(String10_30.convertString(src.getVersionElement()));
087    for (org.hl7.fhir.dstu3.model.ValueSet.ConceptReferenceComponent t : src.getConcept())
088      tgt.addConcept(convertConceptReferenceComponent(t));
089    for (org.hl7.fhir.dstu3.model.ValueSet.ConceptSetFilterComponent t : src.getFilter())
090      tgt.addFilter(convertConceptSetFilterComponent(t));
091    return tgt;
092  }
093
094  public static org.hl7.fhir.dstu3.model.ValueSet.ConceptSetComponent convertConceptSetComponent(org.hl7.fhir.dstu2.model.ValueSet.ConceptSetComponent src) throws FHIRException {
095    if (src == null || src.isEmpty())
096      return null;
097    org.hl7.fhir.dstu3.model.ValueSet.ConceptSetComponent tgt = new org.hl7.fhir.dstu3.model.ValueSet.ConceptSetComponent();
098    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
099    if (src.hasSystemElement())
100      tgt.setSystemElement(Uri10_30.convertUri(src.getSystemElement()));
101    if (src.hasVersionElement())
102      tgt.setVersionElement(String10_30.convertString(src.getVersionElement()));
103    for (org.hl7.fhir.dstu2.model.ValueSet.ConceptReferenceComponent t : src.getConcept())
104      tgt.addConcept(convertConceptReferenceComponent(t));
105    for (org.hl7.fhir.dstu2.model.ValueSet.ConceptSetFilterComponent t : src.getFilter())
106      tgt.addFilter(convertConceptSetFilterComponent(t));
107    return tgt;
108  }
109
110  public static org.hl7.fhir.dstu3.model.ValueSet.ConceptSetFilterComponent convertConceptSetFilterComponent(org.hl7.fhir.dstu2.model.ValueSet.ConceptSetFilterComponent src) throws FHIRException {
111    if (src == null || src.isEmpty())
112      return null;
113    org.hl7.fhir.dstu3.model.ValueSet.ConceptSetFilterComponent tgt = new org.hl7.fhir.dstu3.model.ValueSet.ConceptSetFilterComponent();
114    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
115    if (src.hasPropertyElement())
116      tgt.setPropertyElement(Code10_30.convertCode(src.getPropertyElement()));
117    if (src.hasOp())
118      tgt.setOpElement(convertFilterOperator(src.getOpElement()));
119    if (src.hasValueElement())
120      tgt.setValueElement(Code10_30.convertCode(src.getValueElement()));
121    return tgt;
122  }
123
124  public static org.hl7.fhir.dstu2.model.ValueSet.ConceptSetFilterComponent convertConceptSetFilterComponent(org.hl7.fhir.dstu3.model.ValueSet.ConceptSetFilterComponent src) throws FHIRException {
125    if (src == null || src.isEmpty())
126      return null;
127    org.hl7.fhir.dstu2.model.ValueSet.ConceptSetFilterComponent tgt = new org.hl7.fhir.dstu2.model.ValueSet.ConceptSetFilterComponent();
128    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
129    if (src.hasPropertyElement())
130      tgt.setPropertyElement(Code10_30.convertCode(src.getPropertyElement()));
131    if (src.hasOp())
132      tgt.setOpElement(convertFilterOperator(src.getOpElement()));
133    if (src.hasValueElement())
134      tgt.setValueElement(Code10_30.convertCode(src.getValueElement()));
135    return tgt;
136  }
137
138  static public org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.ValueSet.FilterOperator> convertFilterOperator(org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.ValueSet.FilterOperator> src) throws FHIRException {
139    if (src == null || src.isEmpty())
140      return null;
141    org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.ValueSet.FilterOperator> tgt = new org.hl7.fhir.dstu3.model.Enumeration<>(new org.hl7.fhir.dstu3.model.ValueSet.FilterOperatorEnumFactory());
142    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
143    switch (src.getValue()) {
144      case EQUAL:
145        tgt.setValue(org.hl7.fhir.dstu3.model.ValueSet.FilterOperator.EQUAL);
146        break;
147      case ISA:
148        tgt.setValue(org.hl7.fhir.dstu3.model.ValueSet.FilterOperator.ISA);
149        break;
150      case ISNOTA:
151        tgt.setValue(org.hl7.fhir.dstu3.model.ValueSet.FilterOperator.ISNOTA);
152        break;
153      case REGEX:
154        tgt.setValue(org.hl7.fhir.dstu3.model.ValueSet.FilterOperator.REGEX);
155        break;
156      case IN:
157        tgt.setValue(org.hl7.fhir.dstu3.model.ValueSet.FilterOperator.IN);
158        break;
159      case NOTIN:
160        tgt.setValue(org.hl7.fhir.dstu3.model.ValueSet.FilterOperator.NOTIN);
161        break;
162      default:
163        tgt.setValue(org.hl7.fhir.dstu3.model.ValueSet.FilterOperator.NULL);
164        break;
165    }
166    return tgt;
167  }
168
169  static public org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.ValueSet.FilterOperator> convertFilterOperator(org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.ValueSet.FilterOperator> src) throws FHIRException {
170    if (src == null || src.isEmpty())
171      return null;
172    org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.ValueSet.FilterOperator> tgt = new org.hl7.fhir.dstu2.model.Enumeration<>(new org.hl7.fhir.dstu2.model.ValueSet.FilterOperatorEnumFactory());
173    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
174    switch (src.getValue()) {
175      case EQUAL:
176        tgt.setValue(org.hl7.fhir.dstu2.model.ValueSet.FilterOperator.EQUAL);
177        break;
178      case ISA:
179        tgt.setValue(org.hl7.fhir.dstu2.model.ValueSet.FilterOperator.ISA);
180        break;
181      case ISNOTA:
182        tgt.setValue(org.hl7.fhir.dstu2.model.ValueSet.FilterOperator.ISNOTA);
183        break;
184      case REGEX:
185        tgt.setValue(org.hl7.fhir.dstu2.model.ValueSet.FilterOperator.REGEX);
186        break;
187      case IN:
188        tgt.setValue(org.hl7.fhir.dstu2.model.ValueSet.FilterOperator.IN);
189        break;
190      case NOTIN:
191        tgt.setValue(org.hl7.fhir.dstu2.model.ValueSet.FilterOperator.NOTIN);
192        break;
193      default:
194        tgt.setValue(org.hl7.fhir.dstu2.model.ValueSet.FilterOperator.NULL);
195        break;
196    }
197    return tgt;
198  }
199
200  public static org.hl7.fhir.dstu3.model.ValueSet convertValueSet(org.hl7.fhir.dstu2.model.ValueSet src, BaseAdvisor_10_30 advisor) throws FHIRException {
201    if (src == null || src.isEmpty())
202      return null;
203    org.hl7.fhir.dstu3.model.ValueSet tgt = new org.hl7.fhir.dstu3.model.ValueSet();
204    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyDomainResource(src, tgt);
205    if (src.hasUrlElement())
206      tgt.setUrlElement(Uri10_30.convertUri(src.getUrlElement()));
207    if (src.hasIdentifier())
208      tgt.addIdentifier(Identifier10_30.convertIdentifier(src.getIdentifier()));
209    if (src.hasVersionElement())
210      tgt.setVersionElement(String10_30.convertString(src.getVersionElement()));
211    if (src.hasNameElement())
212      tgt.setNameElement(String10_30.convertString(src.getNameElement()));
213    if (src.hasStatus())
214      tgt.setStatusElement(Enumerations10_30.convertConformanceResourceStatus(src.getStatusElement()));
215    if (src.hasExperimental())
216      tgt.setExperimentalElement(Boolean10_30.convertBoolean(src.getExperimentalElement()));
217    if (src.hasPublisherElement())
218      tgt.setPublisherElement(String10_30.convertString(src.getPublisherElement()));
219    for (org.hl7.fhir.dstu2.model.ValueSet.ValueSetContactComponent t : src.getContact())
220      tgt.addContact(convertValueSetContactComponent(t));
221    if (src.hasDate())
222      tgt.setDateElement(DateTime10_30.convertDateTime(src.getDateElement()));
223    if (src.hasDescription())
224      tgt.setDescription(src.getDescription());
225    for (org.hl7.fhir.dstu2.model.CodeableConcept t : src.getUseContext())
226      if (VersionConvertor_10_30.isJurisdiction(t))
227        tgt.addJurisdiction(CodeableConcept10_30.convertCodeableConcept(t));
228      else
229        tgt.addUseContext(CodeableConcept10_30.convertCodeableConceptToUsageContext(t));
230    if (src.hasImmutableElement())
231      tgt.setImmutableElement(Boolean10_30.convertBoolean(src.getImmutableElement()));
232    if (src.hasRequirements())
233      tgt.setPurpose(src.getRequirements());
234    if (src.hasCopyright())
235      tgt.setCopyright(src.getCopyright());
236    if (src.hasExtensibleElement())
237      tgt.setExtensibleElement(Boolean10_30.convertBoolean(src.getExtensibleElement()));
238    if (src.hasCompose()) {
239      if (src.hasCompose())
240        tgt.setCompose(convertValueSetComposeComponent(src.getCompose()));
241      tgt.getCompose().setLockedDate(src.getLockedDate());
242    }
243    //TODO
244    if (src.hasCodeSystem() && advisor != null) {
245      org.hl7.fhir.dstu3.model.CodeSystem tgtcs = new org.hl7.fhir.dstu3.model.CodeSystem();
246      ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyDomainResource(src, tgtcs);
247      tgtcs.setUrl(src.getCodeSystem().getSystem());
248      tgtcs.setIdentifier(Identifier10_30.convertIdentifier(src.getIdentifier()));
249      tgtcs.setVersion(src.getCodeSystem().getVersion());
250      tgtcs.setName(src.getName() + " Code System");
251      tgtcs.setStatusElement(Enumerations10_30.convertConformanceResourceStatus(src.getStatusElement()));
252      if (src.hasExperimental())
253        tgtcs.setExperimental(src.getExperimental());
254      tgtcs.setPublisher(src.getPublisher());
255      for (org.hl7.fhir.dstu2.model.ValueSet.ValueSetContactComponent t : src.getContact())
256        tgtcs.addContact(convertValueSetContactComponent(t));
257      if (src.hasDate())
258        tgtcs.setDate(src.getDate());
259      tgtcs.setDescription(src.getDescription());
260      for (org.hl7.fhir.dstu2.model.CodeableConcept t : src.getUseContext())
261        if (VersionConvertor_10_30.isJurisdiction(t))
262          tgtcs.addJurisdiction(CodeableConcept10_30.convertCodeableConcept(t));
263        else
264          tgtcs.addUseContext(CodeableConcept10_30.convertCodeableConceptToUsageContext(t));
265      tgtcs.setPurpose(src.getRequirements());
266      tgtcs.setCopyright(src.getCopyright());
267      tgtcs.setContent(CodeSystemContentMode.COMPLETE);
268      tgtcs.setCaseSensitive(src.getCodeSystem().getCaseSensitive());
269      for (org.hl7.fhir.dstu2.model.ValueSet.ConceptDefinitionComponent cs : src.getCodeSystem().getConcept())
270        processConcept(tgtcs.getConcept(), cs, tgtcs);
271      advisor.handleCodeSystem(tgtcs, tgt);
272      tgt.setUserData("r2-cs", tgtcs);
273      tgt.getCompose().addInclude().setSystem(tgtcs.getUrl());
274    }
275    if (src.hasExpansion())
276      tgt.setExpansion(convertValueSetExpansionComponent(src.getExpansion()));
277    return tgt;
278  }
279
280  public static org.hl7.fhir.dstu2.model.ValueSet convertValueSet(org.hl7.fhir.dstu3.model.ValueSet src, BaseAdvisor_10_30 advisor) throws FHIRException {
281    if (src == null || src.isEmpty())
282      return null;
283    org.hl7.fhir.dstu2.model.ValueSet tgt = new org.hl7.fhir.dstu2.model.ValueSet();
284    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyDomainResource(src, tgt);
285    if (src.hasUrlElement())
286      tgt.setUrlElement(Uri10_30.convertUri(src.getUrlElement()));
287    for (org.hl7.fhir.dstu3.model.Identifier i : src.getIdentifier())
288      tgt.setIdentifier(Identifier10_30.convertIdentifier(i));
289    if (src.hasVersionElement())
290      tgt.setVersionElement(String10_30.convertString(src.getVersionElement()));
291    if (src.hasNameElement())
292      tgt.setNameElement(String10_30.convertString(src.getNameElement()));
293    if (src.hasStatus())
294      tgt.setStatusElement(Enumerations10_30.convertConformanceResourceStatus(src.getStatusElement()));
295    if (src.hasExperimental())
296      tgt.setExperimentalElement(Boolean10_30.convertBoolean(src.getExperimentalElement()));
297    if (src.hasPublisherElement())
298      tgt.setPublisherElement(String10_30.convertString(src.getPublisherElement()));
299    for (org.hl7.fhir.dstu3.model.ContactDetail t : src.getContact())
300      tgt.addContact(convertValueSetContactComponent(t));
301    if (src.hasDate())
302      tgt.setDateElement(DateTime10_30.convertDateTime(src.getDateElement()));
303    tgt.setLockedDate(src.getCompose().getLockedDate());
304    if (src.hasDescription())
305      tgt.setDescription(src.getDescription());
306    for (org.hl7.fhir.dstu3.model.UsageContext t : src.getUseContext())
307      if (t.hasValueCodeableConcept())
308        tgt.addUseContext(CodeableConcept10_30.convertCodeableConcept(t.getValueCodeableConcept()));
309    for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getJurisdiction())
310      tgt.addUseContext(CodeableConcept10_30.convertCodeableConcept(t));
311    if (src.hasImmutableElement())
312      tgt.setImmutableElement(Boolean10_30.convertBoolean(src.getImmutableElement()));
313    if (src.hasPurpose())
314      tgt.setRequirements(src.getPurpose());
315    if (src.hasCopyright())
316      tgt.setCopyright(src.getCopyright());
317    if (src.hasExtensibleElement())
318      tgt.setExtensibleElement(Boolean10_30.convertBoolean(src.getExtensibleElement()));
319    org.hl7.fhir.dstu3.model.CodeSystem srcCS = (CodeSystem) src.getUserData("r2-cs");
320    if (srcCS == null)
321      srcCS = advisor.getCodeSystem(src);
322    if (srcCS != null) {
323      tgt.getCodeSystem().setSystem(srcCS.getUrl());
324      tgt.getCodeSystem().setVersion(srcCS.getVersion());
325      tgt.getCodeSystem().setCaseSensitive(srcCS.getCaseSensitive());
326      for (org.hl7.fhir.dstu3.model.CodeSystem.ConceptDefinitionComponent cs : srcCS.getConcept())
327        processConcept(tgt.getCodeSystem().getConcept(), cs, srcCS);
328    }
329    if (src.hasCompose())
330      tgt.setCompose(convertValueSetComposeComponent(src.getCompose(), srcCS == null ? null : srcCS.getUrl()));
331    if (src.hasExpansion())
332      tgt.setExpansion(convertValueSetExpansionComponent(src.getExpansion()));
333    return tgt;
334  }
335
336  public static org.hl7.fhir.dstu3.model.ValueSet convertValueSet(org.hl7.fhir.dstu2.model.ValueSet src) throws FHIRException {
337    return convertValueSet(src, null);
338  }
339
340  public static org.hl7.fhir.dstu2.model.ValueSet convertValueSet(org.hl7.fhir.dstu3.model.ValueSet src) throws FHIRException {
341    return convertValueSet(src, null);
342  }
343
344  public static org.hl7.fhir.dstu3.model.ValueSet.ValueSetComposeComponent convertValueSetComposeComponent(org.hl7.fhir.dstu2.model.ValueSet.ValueSetComposeComponent src) throws FHIRException {
345    if (src == null || src.isEmpty())
346      return null;
347    org.hl7.fhir.dstu3.model.ValueSet.ValueSetComposeComponent tgt = new org.hl7.fhir.dstu3.model.ValueSet.ValueSetComposeComponent();
348    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
349    for (org.hl7.fhir.dstu2.model.UriType t : src.getImport()) tgt.addInclude().addValueSet(t.getValue());
350    for (org.hl7.fhir.dstu2.model.ValueSet.ConceptSetComponent t : src.getInclude())
351      tgt.addInclude(convertConceptSetComponent(t));
352    for (org.hl7.fhir.dstu2.model.ValueSet.ConceptSetComponent t : src.getExclude())
353      tgt.addExclude(convertConceptSetComponent(t));
354    return tgt;
355  }
356
357  public static org.hl7.fhir.dstu2.model.ValueSet.ValueSetComposeComponent convertValueSetComposeComponent(org.hl7.fhir.dstu3.model.ValueSet.ValueSetComposeComponent src, String noSystem) throws FHIRException {
358    if (src == null || src.isEmpty())
359      return null;
360    org.hl7.fhir.dstu2.model.ValueSet.ValueSetComposeComponent tgt = new org.hl7.fhir.dstu2.model.ValueSet.ValueSetComposeComponent();
361    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
362    for (org.hl7.fhir.dstu3.model.ValueSet.ConceptSetComponent t : src.getInclude()) {
363      for (org.hl7.fhir.dstu3.model.UriType ti : t.getValueSet()) tgt.addImport(ti.getValue());
364      if (noSystem == null || !t.getSystem().equals(noSystem))
365        tgt.addInclude(convertConceptSetComponent(t));
366    }
367    for (org.hl7.fhir.dstu3.model.ValueSet.ConceptSetComponent t : src.getExclude())
368      tgt.addExclude(convertConceptSetComponent(t));
369    return tgt;
370  }
371
372  public static org.hl7.fhir.dstu2.model.ValueSet.ValueSetContactComponent convertValueSetContactComponent(org.hl7.fhir.dstu3.model.ContactDetail src) throws FHIRException {
373    if (src == null || src.isEmpty())
374      return null;
375    org.hl7.fhir.dstu2.model.ValueSet.ValueSetContactComponent tgt = new org.hl7.fhir.dstu2.model.ValueSet.ValueSetContactComponent();
376    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
377    if (src.hasNameElement())
378      tgt.setNameElement(String10_30.convertString(src.getNameElement()));
379    for (org.hl7.fhir.dstu3.model.ContactPoint t : src.getTelecom())
380      tgt.addTelecom(ContactPoint10_30.convertContactPoint(t));
381    return tgt;
382  }
383
384  public static org.hl7.fhir.dstu3.model.ContactDetail convertValueSetContactComponent(org.hl7.fhir.dstu2.model.ValueSet.ValueSetContactComponent src) throws FHIRException {
385    if (src == null || src.isEmpty())
386      return null;
387    org.hl7.fhir.dstu3.model.ContactDetail tgt = new org.hl7.fhir.dstu3.model.ContactDetail();
388    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
389    if (src.hasNameElement())
390      tgt.setNameElement(String10_30.convertString(src.getNameElement()));
391    for (org.hl7.fhir.dstu2.model.ContactPoint t : src.getTelecom())
392      tgt.addTelecom(ContactPoint10_30.convertContactPoint(t));
393    return tgt;
394  }
395
396  public static org.hl7.fhir.dstu3.model.ValueSet.ValueSetExpansionComponent convertValueSetExpansionComponent(org.hl7.fhir.dstu2.model.ValueSet.ValueSetExpansionComponent src) throws FHIRException {
397    if (src == null || src.isEmpty())
398      return null;
399    org.hl7.fhir.dstu3.model.ValueSet.ValueSetExpansionComponent tgt = new org.hl7.fhir.dstu3.model.ValueSet.ValueSetExpansionComponent();
400    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
401    if (src.hasIdentifierElement())
402      tgt.setIdentifierElement(Uri10_30.convertUri(src.getIdentifierElement()));
403    if (src.hasTimestampElement())
404      tgt.setTimestampElement(DateTime10_30.convertDateTime(src.getTimestampElement()));
405    if (src.hasTotalElement())
406      tgt.setTotalElement(Integer10_30.convertInteger(src.getTotalElement()));
407    if (src.hasOffsetElement())
408      tgt.setOffsetElement(Integer10_30.convertInteger(src.getOffsetElement()));
409    for (org.hl7.fhir.dstu2.model.ValueSet.ValueSetExpansionParameterComponent t : src.getParameter())
410      tgt.addParameter(convertValueSetExpansionParameterComponent(t));
411    for (org.hl7.fhir.dstu2.model.ValueSet.ValueSetExpansionContainsComponent t : src.getContains())
412      tgt.addContains(convertValueSetExpansionContainsComponent(t));
413    return tgt;
414  }
415
416  public static org.hl7.fhir.dstu2.model.ValueSet.ValueSetExpansionComponent convertValueSetExpansionComponent(org.hl7.fhir.dstu3.model.ValueSet.ValueSetExpansionComponent src) throws FHIRException {
417    if (src == null || src.isEmpty())
418      return null;
419    org.hl7.fhir.dstu2.model.ValueSet.ValueSetExpansionComponent tgt = new org.hl7.fhir.dstu2.model.ValueSet.ValueSetExpansionComponent();
420    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
421    if (src.hasIdentifierElement())
422      tgt.setIdentifierElement(Uri10_30.convertUri(src.getIdentifierElement()));
423    if (src.hasTimestampElement())
424      tgt.setTimestampElement(DateTime10_30.convertDateTime(src.getTimestampElement()));
425    if (src.hasTotalElement())
426      tgt.setTotalElement(Integer10_30.convertInteger(src.getTotalElement()));
427    if (src.hasOffsetElement())
428      tgt.setOffsetElement(Integer10_30.convertInteger(src.getOffsetElement()));
429    for (org.hl7.fhir.dstu3.model.ValueSet.ValueSetExpansionParameterComponent t : src.getParameter())
430      tgt.addParameter(convertValueSetExpansionParameterComponent(t));
431    for (org.hl7.fhir.dstu3.model.ValueSet.ValueSetExpansionContainsComponent t : src.getContains())
432      tgt.addContains(convertValueSetExpansionContainsComponent(t));
433    return tgt;
434  }
435
436  public static org.hl7.fhir.dstu2.model.ValueSet.ValueSetExpansionContainsComponent convertValueSetExpansionContainsComponent(org.hl7.fhir.dstu3.model.ValueSet.ValueSetExpansionContainsComponent src) throws FHIRException {
437    if (src == null || src.isEmpty())
438      return null;
439    org.hl7.fhir.dstu2.model.ValueSet.ValueSetExpansionContainsComponent tgt = new org.hl7.fhir.dstu2.model.ValueSet.ValueSetExpansionContainsComponent();
440    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
441    if (src.hasSystemElement())
442      tgt.setSystemElement(Uri10_30.convertUri(src.getSystemElement()));
443    if (src.hasAbstractElement())
444      tgt.setAbstractElement(Boolean10_30.convertBoolean(src.getAbstractElement()));
445    if (src.hasVersionElement())
446      tgt.setVersionElement(String10_30.convertString(src.getVersionElement()));
447    if (src.hasCodeElement())
448      tgt.setCodeElement(Code10_30.convertCode(src.getCodeElement()));
449    if (src.hasDisplayElement())
450      tgt.setDisplayElement(String10_30.convertString(src.getDisplayElement()));
451    for (org.hl7.fhir.dstu3.model.ValueSet.ValueSetExpansionContainsComponent t : src.getContains())
452      tgt.addContains(convertValueSetExpansionContainsComponent(t));
453    return tgt;
454  }
455
456  public static org.hl7.fhir.dstu3.model.ValueSet.ValueSetExpansionContainsComponent convertValueSetExpansionContainsComponent(org.hl7.fhir.dstu2.model.ValueSet.ValueSetExpansionContainsComponent src) throws FHIRException {
457    if (src == null || src.isEmpty())
458      return null;
459    org.hl7.fhir.dstu3.model.ValueSet.ValueSetExpansionContainsComponent tgt = new org.hl7.fhir.dstu3.model.ValueSet.ValueSetExpansionContainsComponent();
460    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
461    if (src.hasSystemElement())
462      tgt.setSystemElement(Uri10_30.convertUri(src.getSystemElement()));
463    if (src.hasAbstractElement())
464      tgt.setAbstractElement(Boolean10_30.convertBoolean(src.getAbstractElement()));
465    if (src.hasVersionElement())
466      tgt.setVersionElement(String10_30.convertString(src.getVersionElement()));
467    if (src.hasCodeElement())
468      tgt.setCodeElement(Code10_30.convertCode(src.getCodeElement()));
469    if (src.hasDisplayElement())
470      tgt.setDisplayElement(String10_30.convertString(src.getDisplayElement()));
471    for (org.hl7.fhir.dstu2.model.ValueSet.ValueSetExpansionContainsComponent t : src.getContains())
472      tgt.addContains(convertValueSetExpansionContainsComponent(t));
473    return tgt;
474  }
475
476  public static org.hl7.fhir.dstu2.model.ValueSet.ValueSetExpansionParameterComponent convertValueSetExpansionParameterComponent(org.hl7.fhir.dstu3.model.ValueSet.ValueSetExpansionParameterComponent src) throws FHIRException {
477    if (src == null || src.isEmpty())
478      return null;
479    org.hl7.fhir.dstu2.model.ValueSet.ValueSetExpansionParameterComponent tgt = new org.hl7.fhir.dstu2.model.ValueSet.ValueSetExpansionParameterComponent();
480    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
481    if (src.hasNameElement())
482      tgt.setNameElement(String10_30.convertString(src.getNameElement()));
483    if (src.hasValue())
484      tgt.setValue(ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().convertType(src.getValue()));
485    return tgt;
486  }
487
488  public static org.hl7.fhir.dstu3.model.ValueSet.ValueSetExpansionParameterComponent convertValueSetExpansionParameterComponent(org.hl7.fhir.dstu2.model.ValueSet.ValueSetExpansionParameterComponent src) throws FHIRException {
489    if (src == null || src.isEmpty())
490      return null;
491    org.hl7.fhir.dstu3.model.ValueSet.ValueSetExpansionParameterComponent tgt = new org.hl7.fhir.dstu3.model.ValueSet.ValueSetExpansionParameterComponent();
492    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
493    if (src.hasNameElement())
494      tgt.setNameElement(String10_30.convertString(src.getNameElement()));
495    if (src.hasValue())
496      tgt.setValue(ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().convertType(src.getValue()));
497    return tgt;
498  }
499
500  static public void processConcept(List<ConceptDefinitionComponent> concepts, org.hl7.fhir.dstu2.model.ValueSet.ConceptDefinitionComponent cs, CodeSystem tgtcs) throws FHIRException {
501    org.hl7.fhir.dstu3.model.CodeSystem.ConceptDefinitionComponent ct = new org.hl7.fhir.dstu3.model.CodeSystem.ConceptDefinitionComponent();
502    concepts.add(ct);
503    ct.setCode(cs.getCode());
504    ct.setDisplay(cs.getDisplay());
505    ct.setDefinition(cs.getDefinition());
506    if (cs.getAbstract())
507      CodeSystemUtilities.setNotSelectable(tgtcs, ct);
508    for (org.hl7.fhir.dstu2.model.ValueSet.ConceptDefinitionDesignationComponent csd : cs.getDesignation()) {
509      org.hl7.fhir.dstu3.model.CodeSystem.ConceptDefinitionDesignationComponent cst = new org.hl7.fhir.dstu3.model.CodeSystem.ConceptDefinitionDesignationComponent();
510      cst.setLanguage(csd.getLanguage());
511      cst.setUse(Coding10_30.convertCoding(csd.getUse()));
512      cst.setValue(csd.getValue());
513    }
514    for (org.hl7.fhir.dstu2.model.ValueSet.ConceptDefinitionComponent csc : cs.getConcept())
515      processConcept(ct.getConcept(), csc, tgtcs);
516  }
517
518  static public void processConcept(List<ValueSet.ConceptDefinitionComponent> concepts, ConceptDefinitionComponent cs, CodeSystem srcCS) throws FHIRException {
519    org.hl7.fhir.dstu2.model.ValueSet.ConceptDefinitionComponent ct = new org.hl7.fhir.dstu2.model.ValueSet.ConceptDefinitionComponent();
520    concepts.add(ct);
521    ct.setCode(cs.getCode());
522    ct.setDisplay(cs.getDisplay());
523    ct.setDefinition(cs.getDefinition());
524    if (CodeSystemUtilities.isNotSelectable(srcCS, cs))
525      ct.setAbstract(true);
526    for (org.hl7.fhir.dstu3.model.CodeSystem.ConceptDefinitionDesignationComponent csd : cs.getDesignation()) {
527      org.hl7.fhir.dstu2.model.ValueSet.ConceptDefinitionDesignationComponent cst = new org.hl7.fhir.dstu2.model.ValueSet.ConceptDefinitionDesignationComponent();
528      cst.setLanguage(csd.getLanguage());
529      cst.setUse(Coding10_30.convertCoding(csd.getUse()));
530      cst.setValue(csd.getValue());
531    }
532    for (ConceptDefinitionComponent csc : cs.getConcept()) processConcept(ct.getConcept(), csc, srcCS);
533  }
534
535  public static ValueSet.ValueSetCodeSystemComponent convertCodeSystem(CodeSystem src) throws FHIRException {
536    if (src == null || src.isEmpty()) return null;
537    ValueSet.ValueSetCodeSystemComponent tgt = new ValueSet.ValueSetCodeSystemComponent();
538    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
539    if (src.hasUrlElement()) tgt.setSystemElement(Uri10_30.convertUri(src.getUrlElement()));
540    if (src.hasVersionElement()) tgt.setVersionElement(String10_30.convertString(src.getVersionElement()));
541    if (src.hasCaseSensitiveElement())
542      tgt.setCaseSensitiveElement(Boolean10_30.convertBoolean(src.getCaseSensitiveElement()));
543    for (ConceptDefinitionComponent cc : src.getConcept()) tgt.addConcept(convertCodeSystemConcept(src, cc));
544    return tgt;
545  }
546
547  public static ValueSet.ConceptDefinitionComponent convertCodeSystemConcept(CodeSystem cs, ConceptDefinitionComponent src) throws FHIRException {
548    if (src == null || src.isEmpty()) return null;
549    ValueSet.ConceptDefinitionComponent tgt = new ValueSet.ConceptDefinitionComponent();
550    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
551    tgt.setAbstract(CodeSystemUtilities.isNotSelectable(cs, src));
552    tgt.setCode(src.getCode());
553    tgt.setDefinition(src.getDefinition());
554    tgt.setDisplay(src.getDisplay());
555    for (ConceptDefinitionComponent cc : src.getConcept()) tgt.addConcept(convertCodeSystemConcept(cs, cc));
556    for (CodeSystem.ConceptDefinitionDesignationComponent cc : src.getDesignation())
557      tgt.addDesignation(convertCodeSystemDesignation(cc));
558    return tgt;
559  }
560
561  public static ValueSet.ConceptDefinitionDesignationComponent convertCodeSystemDesignation(CodeSystem.ConceptDefinitionDesignationComponent src) throws FHIRException {
562    if (src == null || src.isEmpty()) return null;
563    ValueSet.ConceptDefinitionDesignationComponent tgt = new ValueSet.ConceptDefinitionDesignationComponent();
564    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
565    tgt.setUse(Coding10_30.convertCoding(src.getUse()));
566    tgt.setLanguage(src.getLanguage());
567    tgt.setValue(src.getValue());
568    return tgt;
569  }
570}