mirror of
https://github.com/hapifhir/org.hl7.fhir.core.git
synced 2025-02-26 15:36:19 +00:00
Merge pull request #1249 from hapifhir/do-20230503-add-r5-conversion-to-cli
Add r5 + r4b conversion support in CLI
This commit is contained in:
commit
8a3fce9824
@ -908,7 +908,11 @@ public class ValidationEngine implements IValidatorResourceFetcher, IValidationP
|
|||||||
return VersionConvertor.convertVersionNativeR3(targetVer, cnt, format);
|
return VersionConvertor.convertVersionNativeR3(targetVer, cnt, format);
|
||||||
} else if (VersionUtilities.isR4Ver(version)) {
|
} else if (VersionUtilities.isR4Ver(version)) {
|
||||||
return VersionConvertor.convertVersionNativeR4(targetVer, cnt, format);
|
return VersionConvertor.convertVersionNativeR4(targetVer, cnt, format);
|
||||||
} else {
|
} else if (VersionUtilities.isR4BVer(version)) {
|
||||||
|
return VersionConvertor.convertVersionNativeR4b(targetVer, cnt, format);
|
||||||
|
} else if (VersionUtilities.isR5Ver(version)) {
|
||||||
|
return VersionConvertor.convertVersionNativeR5(targetVer, cnt, format);
|
||||||
|
}else {
|
||||||
throw new FHIRException("Source version not supported yet: " + version);
|
throw new FHIRException("Source version not supported yet: " + version);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@ -947,6 +951,13 @@ public class ValidationEngine implements IValidatorResourceFetcher, IValidationP
|
|||||||
if (VersionUtilities.isR3Ver(targetVer)) {
|
if (VersionUtilities.isR3Ver(targetVer)) {
|
||||||
return "http://hl7.org/fhir/StructureMap/" + type + "4to3";
|
return "http://hl7.org/fhir/StructureMap/" + type + "4to3";
|
||||||
}
|
}
|
||||||
|
else if (VersionUtilities.isR5Ver(targetVer)) {
|
||||||
|
return "http://hl7.org/fhir/StructureMap/" + type + "4to5";
|
||||||
|
}
|
||||||
|
} else if (VersionUtilities.isR5Ver(version)) {
|
||||||
|
if (VersionUtilities.isR4Ver(targetVer)) {
|
||||||
|
return "http://hl7.org/fhir/StructureMap/" + type + "5to4";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
throw new FHIRException("Source/Target version not supported: " + version + " -> " + targetVer);
|
throw new FHIRException("Source/Target version not supported: " + version + " -> " + targetVer);
|
||||||
}
|
}
|
||||||
|
@ -3,11 +3,7 @@ package org.hl7.fhir.validation;
|
|||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import org.hl7.fhir.convertors.factory.VersionConvertorFactory_10_30;
|
import org.hl7.fhir.convertors.factory.*;
|
||||||
import org.hl7.fhir.convertors.factory.VersionConvertorFactory_10_40;
|
|
||||||
import org.hl7.fhir.convertors.factory.VersionConvertorFactory_14_30;
|
|
||||||
import org.hl7.fhir.convertors.factory.VersionConvertorFactory_14_40;
|
|
||||||
import org.hl7.fhir.convertors.factory.VersionConvertorFactory_30_40;
|
|
||||||
import org.hl7.fhir.dstu2016may.model.Resource;
|
import org.hl7.fhir.dstu2016may.model.Resource;
|
||||||
import org.hl7.fhir.exceptions.FHIRException;
|
import org.hl7.fhir.exceptions.FHIRException;
|
||||||
import org.hl7.fhir.r5.elementmodel.Manager;
|
import org.hl7.fhir.r5.elementmodel.Manager;
|
||||||
@ -37,6 +33,8 @@ public class VersionConvertor {
|
|||||||
return getBytesDstu3(cnt, format, VersionConvertorFactory_10_30.convertResource(r2));
|
return getBytesDstu3(cnt, format, VersionConvertorFactory_10_30.convertResource(r2));
|
||||||
} else if (VersionUtilities.isR4Ver(targetVer)) {
|
} else if (VersionUtilities.isR4Ver(targetVer)) {
|
||||||
return getBytesR4(cnt, format, VersionConvertorFactory_10_40.convertResource(r2));
|
return getBytesR4(cnt, format, VersionConvertorFactory_10_40.convertResource(r2));
|
||||||
|
} else if (VersionUtilities.isR5Ver(targetVer)) {
|
||||||
|
return getBytesR5(cnt, format, VersionConvertorFactory_10_50.convertResource(r2));
|
||||||
} else {
|
} else {
|
||||||
throw new FHIRException("Target Version not supported yet: " + targetVer);
|
throw new FHIRException("Target Version not supported yet: " + targetVer);
|
||||||
}
|
}
|
||||||
@ -64,6 +62,8 @@ public class VersionConvertor {
|
|||||||
return getBytesDstu3(cnt, format, VersionConvertorFactory_14_30.convertResource(r2b));
|
return getBytesDstu3(cnt, format, VersionConvertorFactory_14_30.convertResource(r2b));
|
||||||
} else if (VersionUtilities.isR4Ver(targetVer)) {
|
} else if (VersionUtilities.isR4Ver(targetVer)) {
|
||||||
return getBytesR4(cnt, format, VersionConvertorFactory_14_40.convertResource(r2b));
|
return getBytesR4(cnt, format, VersionConvertorFactory_14_40.convertResource(r2b));
|
||||||
|
} else if (VersionUtilities.isR5Ver(targetVer)) {
|
||||||
|
return getBytesR5(cnt, format, VersionConvertorFactory_14_50.convertResource(r2b));
|
||||||
} else {
|
} else {
|
||||||
throw new FHIRException("Target Version not supported yet: " + targetVer);
|
throw new FHIRException("Target Version not supported yet: " + targetVer);
|
||||||
}
|
}
|
||||||
@ -89,6 +89,8 @@ public class VersionConvertor {
|
|||||||
return getBytesDstu3(cnt, format, r3);
|
return getBytesDstu3(cnt, format, r3);
|
||||||
} else if (VersionUtilities.isR4Ver(targetVer)) {
|
} else if (VersionUtilities.isR4Ver(targetVer)) {
|
||||||
return getBytesR4(cnt, format, VersionConvertorFactory_30_40.convertResource(r3));
|
return getBytesR4(cnt, format, VersionConvertorFactory_30_40.convertResource(r3));
|
||||||
|
} else if (VersionUtilities.isR5Ver(targetVer)) {
|
||||||
|
return getBytesR5(cnt, format, VersionConvertorFactory_30_50.convertResource(r3));
|
||||||
} else {
|
} else {
|
||||||
throw new FHIRException("Target Version not supported yet: " + targetVer);
|
throw new FHIRException("Target Version not supported yet: " + targetVer);
|
||||||
}
|
}
|
||||||
@ -114,11 +116,68 @@ public class VersionConvertor {
|
|||||||
return getBytesDstu3(cnt, format, VersionConvertorFactory_30_40.convertResource(r4));
|
return getBytesDstu3(cnt, format, VersionConvertorFactory_30_40.convertResource(r4));
|
||||||
} else if (VersionUtilities.isR4Ver(targetVer)) {
|
} else if (VersionUtilities.isR4Ver(targetVer)) {
|
||||||
return getBytesR4(cnt, format, r4);
|
return getBytesR4(cnt, format, r4);
|
||||||
} else {
|
} else if (VersionUtilities.isR5Ver(targetVer)) {
|
||||||
|
return getBytesR5(cnt, format, VersionConvertorFactory_40_50.convertResource(r4));
|
||||||
|
}
|
||||||
|
else {
|
||||||
throw new FHIRException("Target Version not supported yet: " + targetVer);
|
throw new FHIRException("Target Version not supported yet: " + targetVer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static byte[] convertVersionNativeR4b(String targetVer, Content cnt, Manager.FhirFormat format) throws IOException, Exception {
|
||||||
|
org.hl7.fhir.r4b.model.Resource r4b;
|
||||||
|
switch (cnt.getCntType()) {
|
||||||
|
case JSON:
|
||||||
|
r4b = new org.hl7.fhir.r4b.formats.JsonParser().parse(cnt.getFocus());
|
||||||
|
break;
|
||||||
|
case XML:
|
||||||
|
r4b = new org.hl7.fhir.r4b.formats.XmlParser().parse(cnt.getFocus());
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new FHIRException("Unsupported input format: " + cnt.getCntType().toString());
|
||||||
|
}
|
||||||
|
if (VersionUtilities.isR4BVer(targetVer)) {
|
||||||
|
return getBytesR4B(cnt, format, r4b);
|
||||||
|
} else if (VersionUtilities.isR5Ver(targetVer)) {
|
||||||
|
return getBytesR5(cnt, format, VersionConvertorFactory_43_50.convertResource(r4b));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
throw new FHIRException("Target Version not supported yet: " + targetVer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static byte[] convertVersionNativeR5(String targetVer, Content cnt, Manager.FhirFormat format) throws IOException, Exception {
|
||||||
|
org.hl7.fhir.r5.model.Resource r5;
|
||||||
|
switch (cnt.getCntType()) {
|
||||||
|
case JSON:
|
||||||
|
r5 = new org.hl7.fhir.r5.formats.JsonParser().parse(cnt.getFocus());
|
||||||
|
break;
|
||||||
|
case XML:
|
||||||
|
r5 = new org.hl7.fhir.r5.formats.XmlParser().parse(cnt.getFocus());
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new FHIRException("Unsupported input format: " + cnt.getCntType().toString());
|
||||||
|
}
|
||||||
|
if (VersionUtilities.isR2Ver(targetVer)) {
|
||||||
|
return getBytesDstu2(cnt, format, VersionConvertorFactory_10_50.convertResource(r5));
|
||||||
|
} else if (VersionUtilities.isR2BVer(targetVer)) {
|
||||||
|
return getBytesDstu2016(cnt, format, VersionConvertorFactory_14_50.convertResource(r5));
|
||||||
|
} else if (VersionUtilities.isR3Ver(targetVer)) {
|
||||||
|
return getBytesDstu3(cnt, format, VersionConvertorFactory_30_50.convertResource(r5));
|
||||||
|
}
|
||||||
|
else if (VersionUtilities.isR4BVer(targetVer)) {
|
||||||
|
return getBytesR4B(cnt, format, VersionConvertorFactory_43_50.convertResource(r5));
|
||||||
|
}
|
||||||
|
else if (VersionUtilities.isR4Ver(targetVer)) {
|
||||||
|
return getBytesR4(cnt, format, VersionConvertorFactory_40_50.convertResource(r5));
|
||||||
|
}
|
||||||
|
else if (VersionUtilities.isR5Ver(targetVer)) {
|
||||||
|
return getBytesR5(cnt, format, r5);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
throw new FHIRException("Target Version not supported yet: " + targetVer);
|
||||||
|
}
|
||||||
|
}
|
||||||
private static byte[] getBytesDstu2(Content cnt, Manager.FhirFormat format, org.hl7.fhir.dstu2.model.Resource r2) throws IOException {
|
private static byte[] getBytesDstu2(Content cnt, Manager.FhirFormat format, org.hl7.fhir.dstu2.model.Resource r2) throws IOException {
|
||||||
ByteArrayOutputStream bs = new ByteArrayOutputStream();
|
ByteArrayOutputStream bs = new ByteArrayOutputStream();
|
||||||
switch (format) {
|
switch (format) {
|
||||||
@ -174,4 +233,32 @@ public class VersionConvertor {
|
|||||||
throw new FHIRException("Unsupported output format: " + cnt.getCntType().toString());
|
throw new FHIRException("Unsupported output format: " + cnt.getCntType().toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static byte[] getBytesR4B(Content cnt, Manager.FhirFormat format, org.hl7.fhir.r4b.model.Resource r4b) throws IOException {
|
||||||
|
ByteArrayOutputStream bs = new ByteArrayOutputStream();
|
||||||
|
switch (format) {
|
||||||
|
case JSON:
|
||||||
|
new org.hl7.fhir.r4b.formats.JsonParser().compose(bs, r4b);
|
||||||
|
return bs.toByteArray();
|
||||||
|
case XML:
|
||||||
|
new org.hl7.fhir.r4b.formats.XmlParser().compose(bs, r4b);
|
||||||
|
return bs.toByteArray();
|
||||||
|
default:
|
||||||
|
throw new FHIRException("Unsupported output format: " + cnt.getCntType().toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static byte[] getBytesR5(Content cnt, Manager.FhirFormat format, org.hl7.fhir.r5.model.Resource r5) throws IOException {
|
||||||
|
ByteArrayOutputStream bs = new ByteArrayOutputStream();
|
||||||
|
switch (format) {
|
||||||
|
case JSON:
|
||||||
|
new org.hl7.fhir.r5.formats.JsonParser().compose(bs, r5);
|
||||||
|
return bs.toByteArray();
|
||||||
|
case XML:
|
||||||
|
new org.hl7.fhir.r5.formats.XmlParser().compose(bs, r5);
|
||||||
|
return bs.toByteArray();
|
||||||
|
default:
|
||||||
|
throw new FHIRException("Unsupported output format: " + cnt.getCntType().toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user