001package org.hl7.fhir.convertors.conv30_50.resources30_50;
002
003import java.util.List;
004
005import org.hl7.fhir.convertors.context.ConversionContext30_50;
006import org.hl7.fhir.convertors.conv30_50.datatypes30_50.Reference30_50;
007import org.hl7.fhir.convertors.conv30_50.datatypes30_50.complextypes30_50.CodeableConcept30_50;
008import org.hl7.fhir.convertors.conv30_50.datatypes30_50.complextypes30_50.Coding30_50;
009import org.hl7.fhir.convertors.conv30_50.datatypes30_50.complextypes30_50.Identifier30_50;
010import org.hl7.fhir.convertors.conv30_50.datatypes30_50.primitivetypes30_50.DateTime30_50;
011import org.hl7.fhir.convertors.conv30_50.datatypes30_50.primitivetypes30_50.String30_50;
012import org.hl7.fhir.convertors.conv30_50.datatypes30_50.primitivetypes30_50.UnsignedInt30_50;
013import org.hl7.fhir.dstu3.model.Reference;
014import org.hl7.fhir.exceptions.FHIRException;
015import org.hl7.fhir.r5.model.CodeableConcept;
016import org.hl7.fhir.r5.model.CodeableReference;
017import org.hl7.fhir.r5.model.Coding;
018
019public class ImagingStudy30_50 {
020
021  private static final String URN_DICOM_UID = "urn:dicom:uid";
022
023  private static final String URN_IETF_RFC_3986 = "urn:ietf:rfc:3986";
024
025  public static org.hl7.fhir.dstu3.model.ImagingStudy convertImagingStudy(org.hl7.fhir.r5.model.ImagingStudy src) throws FHIRException {
026    if (src == null)
027      return null;
028    org.hl7.fhir.dstu3.model.ImagingStudy tgt = new org.hl7.fhir.dstu3.model.ImagingStudy();
029    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyDomainResource(src, tgt);
030    for (org.hl7.fhir.r5.model.Identifier t : src.getIdentifier()) {
031      if (URN_DICOM_UID.equals(t.getSystem())) {
032        tgt.setUid(t.getValue());
033      } else {
034        tgt.addIdentifier(Identifier30_50.convertIdentifier(t));
035      }
036    }
037    if (src.hasStatus()) {
038      org.hl7.fhir.r5.model.ImagingStudy.ImagingStudyStatus s = src.getStatus();
039      switch (s) {
040        case REGISTERED:
041          tgt.setAvailability(org.hl7.fhir.dstu3.model.ImagingStudy.InstanceAvailability.OFFLINE);
042          break;
043        case AVAILABLE:
044          tgt.setAvailability(org.hl7.fhir.dstu3.model.ImagingStudy.InstanceAvailability.ONLINE);
045          break;
046        case CANCELLED:
047          tgt.setAvailability(org.hl7.fhir.dstu3.model.ImagingStudy.InstanceAvailability.UNAVAILABLE);
048          break;
049        default:
050          break;
051      }
052    }
053    for (CodeableConcept t : src.getModality()) {
054      for (Coding tt : t.getCoding())
055      tgt.addModalityList(Coding30_50.convertCoding(tt));
056    }
057    if (src.hasSubject()) {
058      if (src.hasSubject())
059        tgt.setPatient(Reference30_50.convertReference(src.getSubject()));
060    }
061    if (src.hasEncounter()) {
062      if (src.hasEncounter())
063        tgt.setContext(Reference30_50.convertReference(src.getEncounter()));
064    }
065    if (src.hasStarted()) {
066      if (src.hasStartedElement())
067        tgt.setStartedElement(DateTime30_50.convertDateTime(src.getStartedElement()));
068    }
069    for (org.hl7.fhir.r5.model.Reference t : src.getBasedOn()) {
070      tgt.addBasedOn(Reference30_50.convertReference(t));
071    }
072    if (src.hasReferrer()) {
073      if (src.hasReferrer())
074        tgt.setReferrer(Reference30_50.convertReference(src.getReferrer()));
075    }
076//    for (org.hl7.fhir.r5.model.Reference t : src.getInterpreter()) {
077//      tgt.addInterpreter(Reference30_50.convertReference(t));
078//    }
079    for (org.hl7.fhir.r5.model.Reference t : src.getEndpoint()) {
080      tgt.addEndpoint(Reference30_50.convertReference(t));
081    }
082    if (src.hasNumberOfSeries()) {
083      if (src.hasNumberOfSeriesElement())
084        tgt.setNumberOfSeriesElement(UnsignedInt30_50.convertUnsignedInt(src.getNumberOfSeriesElement()));
085    }
086    if (src.hasNumberOfInstances()) {
087      if (src.hasNumberOfInstancesElement())
088        tgt.setNumberOfInstancesElement(UnsignedInt30_50.convertUnsignedInt(src.getNumberOfInstancesElement()));
089    }
090    for (CodeableReference t : src.getProcedure()) {
091      if (t.hasReference()) {
092        tgt.addProcedureReference(Reference30_50.convertReference(t.getReference()));
093      } else {
094        tgt.addProcedureCode(CodeableConcept30_50.convertCodeableConcept(t.getConcept()));
095      }
096    }
097    List<CodeableReference> reasonCodes = src.getReason();
098    if (reasonCodes.size() > 0) {
099      tgt.setReason(CodeableConcept30_50.convertCodeableConcept(reasonCodes.get(0).getConcept()));
100      if (reasonCodes.size() > 1) {
101      }
102    }
103    if (src.hasDescription()) {
104      if (src.hasDescriptionElement())
105        tgt.setDescriptionElement(String30_50.convertString(src.getDescriptionElement()));
106    }
107    for (org.hl7.fhir.r5.model.ImagingStudy.ImagingStudySeriesComponent t : src.getSeries()) {
108      tgt.addSeries(convertImagingStudySeriesComponent(t));
109    }
110    return tgt;
111  }
112
113  public static org.hl7.fhir.r5.model.ImagingStudy convertImagingStudy(org.hl7.fhir.dstu3.model.ImagingStudy src) throws FHIRException {
114    if (src == null)
115      return null;
116    org.hl7.fhir.r5.model.ImagingStudy tgt = new org.hl7.fhir.r5.model.ImagingStudy();
117    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyDomainResource(src, tgt);
118    if (src.hasUid()) {
119      org.hl7.fhir.r5.model.Identifier i = new org.hl7.fhir.r5.model.Identifier();
120      i.setSystem(URN_DICOM_UID);
121      i.setValue(src.getUid());
122      tgt.addIdentifier(i);
123    }
124    for (org.hl7.fhir.dstu3.model.Identifier t : src.getIdentifier()) {
125      tgt.addIdentifier(Identifier30_50.convertIdentifier(t));
126    }
127    if (src.hasAccession())
128      tgt.addIdentifier(Identifier30_50.convertIdentifier(src.getAccession()));
129    if (src.hasAvailability()) {
130      org.hl7.fhir.dstu3.model.ImagingStudy.InstanceAvailability availability = src.getAvailability();
131      switch (availability) {
132        case OFFLINE:
133          tgt.setStatus(org.hl7.fhir.r5.model.ImagingStudy.ImagingStudyStatus.REGISTERED);
134          break;
135        case UNAVAILABLE:
136          tgt.setStatus(org.hl7.fhir.r5.model.ImagingStudy.ImagingStudyStatus.CANCELLED);
137          break;
138        case ONLINE:
139        case NEARLINE:
140          tgt.setStatus(org.hl7.fhir.r5.model.ImagingStudy.ImagingStudyStatus.AVAILABLE);
141          break;
142        default:
143          break;
144      }
145    } else {
146      tgt.setStatus(org.hl7.fhir.r5.model.ImagingStudy.ImagingStudyStatus.UNKNOWN);
147    }
148    for (org.hl7.fhir.dstu3.model.Coding t : src.getModalityList()) {
149      tgt.addModality(new CodeableConcept().addCoding(Coding30_50.convertCoding(t)));
150    }
151    if (src.hasPatient())
152      tgt.setSubject(Reference30_50.convertReference(src.getPatient()));
153    if (src.hasContext()) {
154      if (src.hasContext())
155        tgt.setEncounter(Reference30_50.convertReference(src.getContext()));
156    }
157    if (src.hasStarted()) {
158      if (src.hasStartedElement())
159        tgt.setStartedElement(DateTime30_50.convertDateTime(src.getStartedElement()));
160    }
161    for (org.hl7.fhir.dstu3.model.Reference t : src.getBasedOn()) {
162      tgt.addBasedOn(Reference30_50.convertReference(t));
163    }
164    if (src.hasReferrer()) {
165      if (src.hasReferrer())
166        tgt.setReferrer(Reference30_50.convertReference(src.getReferrer()));
167    }
168//    for (org.hl7.fhir.dstu3.model.Reference t : src.getInterpreter()) {
169//      tgt.addInterpreter(Reference30_50.convertReference(t));
170//    }
171    for (org.hl7.fhir.dstu3.model.Reference t : src.getEndpoint()) {
172      tgt.addEndpoint(Reference30_50.convertReference(t));
173    }
174    if (src.hasNumberOfSeries()) {
175      if (src.hasNumberOfSeriesElement())
176        tgt.setNumberOfSeriesElement(UnsignedInt30_50.convertUnsignedInt(src.getNumberOfSeriesElement()));
177    }
178    if (src.hasNumberOfInstances()) {
179      if (src.hasNumberOfInstancesElement())
180        tgt.setNumberOfInstancesElement(UnsignedInt30_50.convertUnsignedInt(src.getNumberOfInstancesElement()));
181    }
182    List<Reference> procedureReferences = src.getProcedureReference();
183    if (procedureReferences.size() > 0) {
184      tgt.addProcedure().setReference(Reference30_50.convertReference(procedureReferences.get(0)));
185    }
186    for (org.hl7.fhir.dstu3.model.CodeableConcept t : src.getProcedureCode()) {
187      tgt.addProcedure().setConcept(CodeableConcept30_50.convertCodeableConcept(t));
188    }
189    if (src.hasReason()) {
190      if (src.hasReason())
191        tgt.addReason(Reference30_50.convertCodeableConceptToCodableReference(src.getReason()));
192    }
193    if (src.hasDescription()) {
194      if (src.hasDescriptionElement())
195        tgt.setDescriptionElement(String30_50.convertString(src.getDescriptionElement()));
196    }
197    for (org.hl7.fhir.dstu3.model.ImagingStudy.ImagingStudySeriesComponent t : src.getSeries()) {
198      tgt.addSeries(convertImagingStudySeriesComponent(t));
199    }
200    return tgt;
201  }
202
203  public static org.hl7.fhir.dstu3.model.ImagingStudy.ImagingStudySeriesComponent convertImagingStudySeriesComponent(org.hl7.fhir.r5.model.ImagingStudy.ImagingStudySeriesComponent src) throws FHIRException {
204    if (src == null)
205      return null;
206    org.hl7.fhir.dstu3.model.ImagingStudy.ImagingStudySeriesComponent tgt = new org.hl7.fhir.dstu3.model.ImagingStudy.ImagingStudySeriesComponent();
207    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyBackboneElement(src,tgt);
208    if (src.hasUid()) {
209      if (src.hasUid())
210        tgt.setUid(src.getUid());
211    }
212    if (src.hasNumber()) {
213      if (src.hasNumberElement())
214        tgt.setNumberElement(UnsignedInt30_50.convertUnsignedInt(src.getNumberElement()));
215    }
216    if (src.hasModality()) {
217      if (src.hasModality())
218        tgt.setModality(Coding30_50.convertCoding(src.getModality()));
219    }
220    if (src.hasDescription()) {
221      if (src.hasDescriptionElement())
222        tgt.setDescriptionElement(String30_50.convertString(src.getDescriptionElement()));
223    }
224    if (src.hasNumberOfInstances()) {
225      if (src.hasNumberOfInstancesElement())
226        tgt.setNumberOfInstancesElement(UnsignedInt30_50.convertUnsignedInt(src.getNumberOfInstancesElement()));
227    }
228    for (org.hl7.fhir.r5.model.Reference t : src.getEndpoint()) {
229      tgt.addEndpoint(Reference30_50.convertReference(t));
230    }
231    if (src.getBodySite().hasConcept()) {
232        tgt.setBodySite(Coding30_50.convertCoding(src.getBodySite().getConcept().getCodingFirstRep()));
233    }
234    if (src.hasLaterality()) {
235      if (src.hasLaterality())
236        tgt.setLaterality(Coding30_50.convertCoding(src.getLaterality()));
237    }
238    if (src.hasStarted()) {
239      if (src.hasStartedElement())
240        tgt.setStartedElement(DateTime30_50.convertDateTime(src.getStartedElement()));
241    }
242    for (org.hl7.fhir.r5.model.ImagingStudy.ImagingStudySeriesInstanceComponent t : src.getInstance()) {
243      tgt.addInstance(convertImagingStudySeriesInstanceComponent(t));
244    }
245    return tgt;
246  }
247
248  public static org.hl7.fhir.r5.model.ImagingStudy.ImagingStudySeriesComponent convertImagingStudySeriesComponent(org.hl7.fhir.dstu3.model.ImagingStudy.ImagingStudySeriesComponent src) throws FHIRException {
249    if (src == null)
250      return null;
251    org.hl7.fhir.r5.model.ImagingStudy.ImagingStudySeriesComponent tgt = new org.hl7.fhir.r5.model.ImagingStudy.ImagingStudySeriesComponent();
252    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyBackboneElement(src,tgt);
253    if (src.hasUid()) {
254      if (src.hasUid())
255        tgt.setUid(src.getUid());
256    }
257    if (src.hasNumber()) {
258      if (src.hasNumberElement())
259        tgt.setNumberElement(UnsignedInt30_50.convertUnsignedInt(src.getNumberElement()));
260    }
261    if (src.hasModality()) {
262      if (src.hasModality())
263        tgt.setModality(new CodeableConcept().addCoding(Coding30_50.convertCoding(src.getModality())));
264    }
265    if (src.hasDescription()) {
266      if (src.hasDescriptionElement())
267        tgt.setDescriptionElement(String30_50.convertString(src.getDescriptionElement()));
268    }
269    if (src.hasNumberOfInstances()) {
270      if (src.hasNumberOfInstancesElement())
271        tgt.setNumberOfInstancesElement(UnsignedInt30_50.convertUnsignedInt(src.getNumberOfInstancesElement()));
272    }
273    for (org.hl7.fhir.dstu3.model.Reference t : src.getEndpoint()) {
274      tgt.addEndpoint(Reference30_50.convertReference(t));
275    }
276    if (src.hasBodySite()) {
277      if (src.hasBodySite())
278        tgt.setBodySite(new CodeableReference(new CodeableConcept(Coding30_50.convertCoding(src.getBodySite()))));
279    }
280    if (src.hasLaterality()) {
281      if (src.hasLaterality())
282        tgt.setLaterality(new CodeableConcept(Coding30_50.convertCoding(src.getLaterality())));
283    }
284    if (src.hasStarted()) {
285      if (src.hasStartedElement())
286        tgt.setStartedElement(DateTime30_50.convertDateTime(src.getStartedElement()));
287    }
288    for (org.hl7.fhir.dstu3.model.ImagingStudy.ImagingStudySeriesInstanceComponent t : src.getInstance()) {
289      tgt.addInstance(convertImagingStudySeriesInstanceComponent(t));
290    }
291    return tgt;
292  }
293
294  static public org.hl7.fhir.dstu3.model.ImagingStudy.ImagingStudySeriesInstanceComponent convertImagingStudySeriesInstanceComponent(org.hl7.fhir.r5.model.ImagingStudy.ImagingStudySeriesInstanceComponent src) throws FHIRException {
295    if (src == null)
296      return null;
297    org.hl7.fhir.dstu3.model.ImagingStudy.ImagingStudySeriesInstanceComponent tgt = new org.hl7.fhir.dstu3.model.ImagingStudy.ImagingStudySeriesInstanceComponent();
298    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyBackboneElement(src,tgt);
299    if (src.hasUid()) {
300      if (src.hasUid())
301        tgt.setUid(src.getUid());
302    }
303    org.hl7.fhir.r5.model.Coding sop = src.getSopClass();
304    if (URN_IETF_RFC_3986.equals(sop.getSystem())) {
305      tgt.setSopClass(sop.getCode());
306    }
307    if (src.hasNumber()) {
308      if (src.hasNumberElement())
309        tgt.setNumberElement(UnsignedInt30_50.convertUnsignedInt(src.getNumberElement()));
310    }
311    if (src.hasTitle()) {
312      if (src.hasTitleElement())
313        tgt.setTitleElement(String30_50.convertString(src.getTitleElement()));
314    }
315    return tgt;
316  }
317
318  static public org.hl7.fhir.r5.model.ImagingStudy.ImagingStudySeriesInstanceComponent convertImagingStudySeriesInstanceComponent(org.hl7.fhir.dstu3.model.ImagingStudy.ImagingStudySeriesInstanceComponent src) throws FHIRException {
319    if (src == null)
320      return null;
321    org.hl7.fhir.r5.model.ImagingStudy.ImagingStudySeriesInstanceComponent tgt = new org.hl7.fhir.r5.model.ImagingStudy.ImagingStudySeriesInstanceComponent();
322    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyBackboneElement(src,tgt);
323    if (src.hasUid()) {
324      if (src.hasUid())
325        tgt.setUid(src.getUid());
326    }
327    if (src.hasSopClass()) {
328      org.hl7.fhir.r5.model.Coding c = new org.hl7.fhir.r5.model.Coding();
329      c.setSystem(URN_IETF_RFC_3986);
330      c.setCode(src.getSopClass());
331      tgt.setSopClass(c);
332    }
333    if (src.hasNumber()) {
334      if (src.hasNumberElement())
335        tgt.setNumberElement(UnsignedInt30_50.convertUnsignedInt(src.getNumberElement()));
336    }
337    if (src.hasTitle()) {
338      if (src.hasTitleElement())
339        tgt.setTitleElement(String30_50.convertString(src.getTitleElement()));
340    }
341    return tgt;
342  }
343}