001package org.hl7.fhir.convertors.conv40_50.datatypes40_50;
002
003import org.hl7.fhir.convertors.VersionConvertorConstants;
004import org.hl7.fhir.r5.model.CodeType;
005import org.hl7.fhir.r5.model.Enumerations.FHIRTypes;
006import org.hl7.fhir.r5.model.Extension;
007import org.hl7.fhir.utilities.Utilities;
008
009public class Utilities40_50 {
010
011  public static void convertType(org.hl7.fhir.r4.model.CodeType src, org.hl7.fhir.r5.model.Enumeration<FHIRTypes> tgt) {
012    if (Utilities.existsInList(src.primitiveValue(), "Media")) {
013      setType(tgt, src.primitiveValue(), "DocumentReference");
014    
015    } else if (Utilities.existsInList(src.primitiveValue(), "DeviceUseStatement")) {
016      setType(tgt, src.primitiveValue(), "DeviceUsage");
017    
018    } else if (Utilities.existsInList(src.primitiveValue(), "DocumentManifest")) {
019      setType(tgt, src.primitiveValue(), "List");
020    
021    } else if (Utilities.existsInList(src.primitiveValue(), "MedicinalProduct")) {
022      setType(tgt, src.primitiveValue(), "MedicinalProductDefinition");
023    
024    } else if (Utilities.existsInList(src.primitiveValue(), "MedicinalProductAuthorization")) {
025      setType(tgt, src.primitiveValue(), "RegulatedAuthorization");
026    
027    } else if (Utilities.existsInList(src.primitiveValue(), "RequestGroup")) {
028      setType(tgt, src.primitiveValue(), "RequestOrchestration");
029
030    } else if (Utilities.existsInList(src.primitiveValue(), "MedicinalProductIngredient")) {
031      setType(tgt, src.primitiveValue(), "Ingredient");
032
033    } else if (Utilities.existsInList(src.primitiveValue(), "MedicinalProductManufactured")) {
034      setType(tgt, src.primitiveValue(), "ManufacturedItemDefinition");
035
036    } else if (Utilities.existsInList(src.primitiveValue(), "MedicinalProductPackaged")) {
037      setType(tgt, src.primitiveValue(), "PackagedProductDefinition");
038
039    } else if (Utilities.existsInList(src.primitiveValue(), "MedicinalProductPharmaceutical")) {
040      setType(tgt, src.primitiveValue(), "AdministrableProductDefinition");
041
042    } else if (Utilities.existsInList(src.primitiveValue(), "SubstanceSpecification")) {
043      setType(tgt, src.primitiveValue(), "SubstanceDefinition");
044
045    } else if (Utilities.existsInList(src.primitiveValue(), "MedicinalProductContraindication", "MedicinalProductIndication", "MedicinalProductInteraction", "MedicinalProductUndesirableEffect", "ClinicalUseDefinition")) {
046      setType(tgt, src.primitiveValue(), "SubstanceDefinition");
047
048    } else if (Utilities.existsInList(src.primitiveValue(), "EffectEvidenceSynthesis", "CatalogEntry", "ResearchDefinition", "ResearchElementDefinition", "RiskEvidenceSynthesis",
049        "Contributor", "ProdCharacteristic", "SubstanceAmount")) {
050      setType(tgt, src.primitiveValue(), "Basic");
051    
052    } else {
053      tgt.setValue(org.hl7.fhir.r5.model.Enumerations.FHIRTypes.fromCode(src.primitiveValue()));
054    }
055  }
056
057  private static void setType(org.hl7.fhir.r5.model.Enumeration<FHIRTypes> tgt, String original, String value) {
058    tgt.setValueAsString(value);
059    tgt.addExtension(new Extension().setUrl(VersionConvertorConstants.EXT_OPDEF_ORIGINAL_TYPE).setValue(new CodeType(original))); 
060  }
061
062  public static void convertType(org.hl7.fhir.r5.model.Enumeration<FHIRTypes> src, org.hl7.fhir.r4.model.CodeType tgt) {
063    if (src.hasExtension(VersionConvertorConstants.EXT_OPDEF_ORIGINAL_TYPE)) {
064      tgt.setValueAsString(src.getExtensionString(VersionConvertorConstants.EXT_OPDEF_ORIGINAL_TYPE));
065    } else {
066      tgt.setValue(src.asStringValue());
067    }
068    
069  }
070
071}