001package org.hl7.fhir.convertors.conv10_30.resources10_30;
002
003import java.util.ArrayList;
004import java.util.List;
005
006import org.hl7.fhir.convertors.context.ConversionContext10_30;
007import org.hl7.fhir.convertors.conv10_30.VersionConvertor_10_30;
008import org.hl7.fhir.convertors.conv10_30.datatypes10_30.ElementDefinition10_30;
009import org.hl7.fhir.convertors.conv10_30.datatypes10_30.complextypes10_30.CodeableConcept10_30;
010import org.hl7.fhir.convertors.conv10_30.datatypes10_30.complextypes10_30.ContactPoint10_30;
011import org.hl7.fhir.convertors.conv10_30.datatypes10_30.complextypes10_30.Identifier10_30;
012import org.hl7.fhir.convertors.conv10_30.datatypes10_30.primitivetypes10_30.Boolean10_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.Id10_30;
015import org.hl7.fhir.convertors.conv10_30.datatypes10_30.primitivetypes10_30.String10_30;
016import org.hl7.fhir.convertors.conv10_30.datatypes10_30.primitivetypes10_30.Uri10_30;
017import org.hl7.fhir.dstu2.model.DataElement;
018import org.hl7.fhir.dstu2.model.Enumeration;
019import org.hl7.fhir.exceptions.FHIRException;
020
021public class DataElement10_30 {
022
023  public static org.hl7.fhir.dstu2.model.DataElement convertDataElement(org.hl7.fhir.dstu3.model.DataElement src) throws FHIRException {
024    if (src == null || src.isEmpty())
025      return null;
026    org.hl7.fhir.dstu2.model.DataElement tgt = new org.hl7.fhir.dstu2.model.DataElement();
027    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyDomainResource(src, tgt);
028    if (src.hasUrlElement())
029      tgt.setUrlElement(Uri10_30.convertUri(src.getUrlElement()));
030    for (org.hl7.fhir.dstu3.model.Identifier t : src.getIdentifier())
031      tgt.addIdentifier(Identifier10_30.convertIdentifier(t));
032    if (src.hasVersionElement())
033      tgt.setVersionElement(String10_30.convertString(src.getVersionElement()));
034    if (src.hasStatus())
035      tgt.setStatusElement(Enumerations10_30.convertConformanceResourceStatus(src.getStatusElement()));
036    if (src.hasExperimental())
037      tgt.setExperimentalElement(Boolean10_30.convertBoolean(src.getExperimentalElement()));
038    if (src.hasPublisherElement())
039      tgt.setPublisherElement(String10_30.convertString(src.getPublisherElement()));
040    if (src.hasDate())
041      tgt.setDateElement(DateTime10_30.convertDateTime(src.getDateElement()));
042    if (src.hasNameElement())
043      tgt.setNameElement(String10_30.convertString(src.getNameElement()));
044    for (org.hl7.fhir.dstu3.model.ContactDetail t : src.getContact())
045      tgt.addContact(convertDataElementContactComponent(t));
046    for (org.hl7.fhir.dstu3.model.UsageContext t : src.getUseContext())
047      if (t.hasValueCodeableConcept())
048        tgt.addUseContext(CodeableConcept10_30.convertCodeableConcept(t.getValueCodeableConcept()));
049    for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getJurisdiction())
050      tgt.addUseContext(CodeableConcept10_30.convertCodeableConcept(t));
051    if (src.hasCopyright())
052      tgt.setCopyright(src.getCopyright());
053    if (src.hasStringency())
054      tgt.setStringencyElement(convertDataElementStringency(src.getStringencyElement()));
055    for (org.hl7.fhir.dstu3.model.DataElement.DataElementMappingComponent t : src.getMapping())
056      tgt.addMapping(convertDataElementMappingComponent(t));
057    for (org.hl7.fhir.dstu3.model.ElementDefinition t : src.getElement())
058      tgt.addElement(ElementDefinition10_30.convertElementDefinition(t));
059    return tgt;
060  }
061
062  public static org.hl7.fhir.dstu3.model.DataElement convertDataElement(org.hl7.fhir.dstu2.model.DataElement src) throws FHIRException {
063    if (src == null || src.isEmpty())
064      return null;
065    org.hl7.fhir.dstu3.model.DataElement tgt = new org.hl7.fhir.dstu3.model.DataElement();
066    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyDomainResource(src, tgt);
067    if (src.hasUrlElement())
068      tgt.setUrlElement(Uri10_30.convertUri(src.getUrlElement()));
069    for (org.hl7.fhir.dstu2.model.Identifier t : src.getIdentifier())
070      tgt.addIdentifier(Identifier10_30.convertIdentifier(t));
071    if (src.hasVersionElement())
072      tgt.setVersionElement(String10_30.convertString(src.getVersionElement()));
073    if (src.hasStatus())
074      tgt.setStatusElement(Enumerations10_30.convertConformanceResourceStatus(src.getStatusElement()));
075    if (src.hasExperimental())
076      tgt.setExperimentalElement(Boolean10_30.convertBoolean(src.getExperimentalElement()));
077    if (src.hasPublisherElement())
078      tgt.setPublisherElement(String10_30.convertString(src.getPublisherElement()));
079    if (src.hasDate())
080      tgt.setDateElement(DateTime10_30.convertDateTime(src.getDateElement()));
081    if (src.hasNameElement())
082      tgt.setNameElement(String10_30.convertString(src.getNameElement()));
083    for (org.hl7.fhir.dstu2.model.DataElement.DataElementContactComponent t : src.getContact())
084      tgt.addContact(convertDataElementContactComponent(t));
085    for (org.hl7.fhir.dstu2.model.CodeableConcept t : src.getUseContext())
086      if (VersionConvertor_10_30.isJurisdiction(t))
087        tgt.addJurisdiction(CodeableConcept10_30.convertCodeableConcept(t));
088      else
089        tgt.addUseContext(CodeableConcept10_30.convertCodeableConceptToUsageContext(t));
090    if (src.hasCopyright())
091      tgt.setCopyright(src.getCopyright());
092    if (src.hasStringency())
093      tgt.setStringencyElement(convertDataElementStringency(src.getStringencyElement()));
094    for (org.hl7.fhir.dstu2.model.DataElement.DataElementMappingComponent t : src.getMapping())
095      tgt.addMapping(convertDataElementMappingComponent(t));
096    List<String> slicePaths = new ArrayList<String>();
097    for (org.hl7.fhir.dstu2.model.ElementDefinition t : src.getElement()) {
098      if (t.hasSlicing())
099        slicePaths.add(t.getPath());
100      tgt.addElement(ElementDefinition10_30.convertElementDefinition(t, slicePaths));
101    }
102    return tgt;
103  }
104
105  public static org.hl7.fhir.dstu3.model.ContactDetail convertDataElementContactComponent(org.hl7.fhir.dstu2.model.DataElement.DataElementContactComponent src) throws FHIRException {
106    if (src == null || src.isEmpty())
107      return null;
108    org.hl7.fhir.dstu3.model.ContactDetail tgt = new org.hl7.fhir.dstu3.model.ContactDetail();
109    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
110    if (src.hasNameElement())
111      tgt.setNameElement(String10_30.convertString(src.getNameElement()));
112    for (org.hl7.fhir.dstu2.model.ContactPoint t : src.getTelecom())
113      tgt.addTelecom(ContactPoint10_30.convertContactPoint(t));
114    return tgt;
115  }
116
117  public static org.hl7.fhir.dstu2.model.DataElement.DataElementContactComponent convertDataElementContactComponent(org.hl7.fhir.dstu3.model.ContactDetail src) throws FHIRException {
118    if (src == null || src.isEmpty())
119      return null;
120    org.hl7.fhir.dstu2.model.DataElement.DataElementContactComponent tgt = new org.hl7.fhir.dstu2.model.DataElement.DataElementContactComponent();
121    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
122    if (src.hasNameElement())
123      tgt.setNameElement(String10_30.convertString(src.getNameElement()));
124    for (org.hl7.fhir.dstu3.model.ContactPoint t : src.getTelecom())
125      tgt.addTelecom(ContactPoint10_30.convertContactPoint(t));
126    return tgt;
127  }
128
129  public static org.hl7.fhir.dstu3.model.DataElement.DataElementMappingComponent convertDataElementMappingComponent(org.hl7.fhir.dstu2.model.DataElement.DataElementMappingComponent src) throws FHIRException {
130    if (src == null || src.isEmpty())
131      return null;
132    org.hl7.fhir.dstu3.model.DataElement.DataElementMappingComponent tgt = new org.hl7.fhir.dstu3.model.DataElement.DataElementMappingComponent();
133    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyBackboneElement(src,tgt);
134    if (src.hasIdentityElement())
135      tgt.setIdentityElement(Id10_30.convertId(src.getIdentityElement()));
136    if (src.hasUriElement())
137      tgt.setUriElement(Uri10_30.convertUri(src.getUriElement()));
138    if (src.hasNameElement())
139      tgt.setNameElement(String10_30.convertString(src.getNameElement()));
140    if (src.hasCommentsElement())
141      tgt.setCommentElement(String10_30.convertString(src.getCommentsElement()));
142    return tgt;
143  }
144
145  public static org.hl7.fhir.dstu2.model.DataElement.DataElementMappingComponent convertDataElementMappingComponent(org.hl7.fhir.dstu3.model.DataElement.DataElementMappingComponent src) throws FHIRException {
146    if (src == null || src.isEmpty())
147      return null;
148    org.hl7.fhir.dstu2.model.DataElement.DataElementMappingComponent tgt = new org.hl7.fhir.dstu2.model.DataElement.DataElementMappingComponent();
149    ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyBackboneElement(src,tgt);
150    if (src.hasIdentityElement())
151      tgt.setIdentityElement(Id10_30.convertId(src.getIdentityElement()));
152    if (src.hasUriElement())
153      tgt.setUriElement(Uri10_30.convertUri(src.getUriElement()));
154    if (src.hasNameElement())
155      tgt.setNameElement(String10_30.convertString(src.getNameElement()));
156    if (src.hasCommentElement())
157      tgt.setCommentsElement(String10_30.convertString(src.getCommentElement()));
158    return tgt;
159  }
160
161  static public org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.DataElement.DataElementStringency> convertDataElementStringency(org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.DataElement.DataElementStringency> src) throws FHIRException {
162      if (src == null || src.isEmpty())
163          return null;
164      Enumeration<DataElement.DataElementStringency> tgt = new Enumeration<>(new DataElement.DataElementStringencyEnumFactory());
165      ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
166      if (src.getValue() == null) {
167          tgt.setValue(null);
168      } else {
169          switch (src.getValue()) {
170              case COMPARABLE:
171                  tgt.setValue(DataElement.DataElementStringency.COMPARABLE);
172                  break;
173              case FULLYSPECIFIED:
174                  tgt.setValue(DataElement.DataElementStringency.FULLYSPECIFIED);
175                  break;
176              case EQUIVALENT:
177                  tgt.setValue(DataElement.DataElementStringency.EQUIVALENT);
178                  break;
179              case CONVERTABLE:
180                  tgt.setValue(DataElement.DataElementStringency.CONVERTABLE);
181                  break;
182              case SCALEABLE:
183                  tgt.setValue(DataElement.DataElementStringency.SCALEABLE);
184                  break;
185              case FLEXIBLE:
186                  tgt.setValue(DataElement.DataElementStringency.FLEXIBLE);
187                  break;
188              default:
189                  tgt.setValue(DataElement.DataElementStringency.NULL);
190                  break;
191          }
192      }
193      return tgt;
194  }
195
196  static public org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.DataElement.DataElementStringency> convertDataElementStringency(org.hl7.fhir.dstu2.model.Enumeration<org.hl7.fhir.dstu2.model.DataElement.DataElementStringency> src) throws FHIRException {
197      if (src == null || src.isEmpty())
198          return null;
199      org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.DataElement.DataElementStringency> tgt = new org.hl7.fhir.dstu3.model.Enumeration<>(new org.hl7.fhir.dstu3.model.DataElement.DataElementStringencyEnumFactory());
200      ConversionContext10_30.INSTANCE.getVersionConvertor_10_30().copyElement(src, tgt);
201      if (src.getValue() == null) {
202          tgt.setValue(null);
203      } else {
204          switch (src.getValue()) {
205              case COMPARABLE:
206                  tgt.setValue(org.hl7.fhir.dstu3.model.DataElement.DataElementStringency.COMPARABLE);
207                  break;
208              case FULLYSPECIFIED:
209                  tgt.setValue(org.hl7.fhir.dstu3.model.DataElement.DataElementStringency.FULLYSPECIFIED);
210                  break;
211              case EQUIVALENT:
212                  tgt.setValue(org.hl7.fhir.dstu3.model.DataElement.DataElementStringency.EQUIVALENT);
213                  break;
214              case CONVERTABLE:
215                  tgt.setValue(org.hl7.fhir.dstu3.model.DataElement.DataElementStringency.CONVERTABLE);
216                  break;
217              case SCALEABLE:
218                  tgt.setValue(org.hl7.fhir.dstu3.model.DataElement.DataElementStringency.SCALEABLE);
219                  break;
220              case FLEXIBLE:
221                  tgt.setValue(org.hl7.fhir.dstu3.model.DataElement.DataElementStringency.FLEXIBLE);
222                  break;
223              default:
224                  tgt.setValue(org.hl7.fhir.dstu3.model.DataElement.DataElementStringency.NULL);
225                  break;
226          }
227      }
228      return tgt;
229  }
230}