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.Reference30_50;
005import org.hl7.fhir.convertors.conv30_50.datatypes30_50.primitivetypes30_50.Boolean30_50;
006import org.hl7.fhir.exceptions.FHIRException;
007import org.hl7.fhir.r5.model.Enumeration;
008import org.hl7.fhir.r5.model.Linkage;
009
010public class Linkage30_50 {
011
012  public static org.hl7.fhir.r5.model.Linkage convertLinkage(org.hl7.fhir.dstu3.model.Linkage src) throws FHIRException {
013    if (src == null)
014      return null;
015    org.hl7.fhir.r5.model.Linkage tgt = new org.hl7.fhir.r5.model.Linkage();
016    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyDomainResource(src, tgt);
017    if (src.hasActive())
018      tgt.setActiveElement(Boolean30_50.convertBoolean(src.getActiveElement()));
019    if (src.hasAuthor())
020      tgt.setAuthor(Reference30_50.convertReference(src.getAuthor()));
021    for (org.hl7.fhir.dstu3.model.Linkage.LinkageItemComponent t : src.getItem())
022      tgt.addItem(convertLinkageItemComponent(t));
023    return tgt;
024  }
025
026  public static org.hl7.fhir.dstu3.model.Linkage convertLinkage(org.hl7.fhir.r5.model.Linkage src) throws FHIRException {
027    if (src == null)
028      return null;
029    org.hl7.fhir.dstu3.model.Linkage tgt = new org.hl7.fhir.dstu3.model.Linkage();
030    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyDomainResource(src, tgt);
031    if (src.hasActive())
032      tgt.setActiveElement(Boolean30_50.convertBoolean(src.getActiveElement()));
033    if (src.hasAuthor())
034      tgt.setAuthor(Reference30_50.convertReference(src.getAuthor()));
035    for (org.hl7.fhir.r5.model.Linkage.LinkageItemComponent t : src.getItem())
036      tgt.addItem(convertLinkageItemComponent(t));
037    return tgt;
038  }
039
040  public static org.hl7.fhir.dstu3.model.Linkage.LinkageItemComponent convertLinkageItemComponent(org.hl7.fhir.r5.model.Linkage.LinkageItemComponent src) throws FHIRException {
041    if (src == null)
042      return null;
043    org.hl7.fhir.dstu3.model.Linkage.LinkageItemComponent tgt = new org.hl7.fhir.dstu3.model.Linkage.LinkageItemComponent();
044    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyBackboneElement(src,tgt);
045    if (src.hasType())
046      tgt.setTypeElement(convertLinkageType(src.getTypeElement()));
047    if (src.hasResource())
048      tgt.setResource(Reference30_50.convertReference(src.getResource()));
049    return tgt;
050  }
051
052  public static org.hl7.fhir.r5.model.Linkage.LinkageItemComponent convertLinkageItemComponent(org.hl7.fhir.dstu3.model.Linkage.LinkageItemComponent src) throws FHIRException {
053    if (src == null)
054      return null;
055    org.hl7.fhir.r5.model.Linkage.LinkageItemComponent tgt = new org.hl7.fhir.r5.model.Linkage.LinkageItemComponent();
056    ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyBackboneElement(src,tgt);
057    if (src.hasType())
058      tgt.setTypeElement(convertLinkageType(src.getTypeElement()));
059    if (src.hasResource())
060      tgt.setResource(Reference30_50.convertReference(src.getResource()));
061    return tgt;
062  }
063
064  static public org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.Linkage.LinkageType> convertLinkageType(org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.Linkage.LinkageType> src) throws FHIRException {
065      if (src == null || src.isEmpty())
066          return null;
067      Enumeration<Linkage.LinkageType> tgt = new Enumeration<>(new Linkage.LinkageTypeEnumFactory());
068      ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyElement(src, tgt);
069      if (src.getValue() == null) {
070          tgt.setValue(null);
071      } else {
072          switch (src.getValue()) {
073              case SOURCE:
074                  tgt.setValue(Linkage.LinkageType.SOURCE);
075                  break;
076              case ALTERNATE:
077                  tgt.setValue(Linkage.LinkageType.ALTERNATE);
078                  break;
079              case HISTORICAL:
080                  tgt.setValue(Linkage.LinkageType.HISTORICAL);
081                  break;
082              default:
083                  tgt.setValue(Linkage.LinkageType.NULL);
084                  break;
085          }
086      }
087      return tgt;
088  }
089
090  static public org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.Linkage.LinkageType> convertLinkageType(org.hl7.fhir.r5.model.Enumeration<org.hl7.fhir.r5.model.Linkage.LinkageType> src) throws FHIRException {
091      if (src == null || src.isEmpty())
092          return null;
093      org.hl7.fhir.dstu3.model.Enumeration<org.hl7.fhir.dstu3.model.Linkage.LinkageType> tgt = new org.hl7.fhir.dstu3.model.Enumeration<>(new org.hl7.fhir.dstu3.model.Linkage.LinkageTypeEnumFactory());
094      ConversionContext30_50.INSTANCE.getVersionConvertor_30_50().copyElement(src, tgt);
095      if (src.getValue() == null) {
096          tgt.setValue(null);
097      } else {
098          switch (src.getValue()) {
099              case SOURCE:
100                  tgt.setValue(org.hl7.fhir.dstu3.model.Linkage.LinkageType.SOURCE);
101                  break;
102              case ALTERNATE:
103                  tgt.setValue(org.hl7.fhir.dstu3.model.Linkage.LinkageType.ALTERNATE);
104                  break;
105              case HISTORICAL:
106                  tgt.setValue(org.hl7.fhir.dstu3.model.Linkage.LinkageType.HISTORICAL);
107                  break;
108              default:
109                  tgt.setValue(org.hl7.fhir.dstu3.model.Linkage.LinkageType.NULL);
110                  break;
111          }
112      }
113      return tgt;
114  }
115}