diff --git a/hapi-fhir-base/src/main/java/ca/uhn/fhir/parser/JsonParser.java b/hapi-fhir-base/src/main/java/ca/uhn/fhir/parser/JsonParser.java index 9acdaced037..d42d7e67718 100644 --- a/hapi-fhir-base/src/main/java/ca/uhn/fhir/parser/JsonParser.java +++ b/hapi-fhir-base/src/main/java/ca/uhn/fhir/parser/JsonParser.java @@ -743,6 +743,44 @@ public class JsonParser extends BaseParser implements IJsonLikeParser { theEventWriter.endArray(); } + private void addExtensionMetadata(List, Object>> extensionMetadataKeys, JsonLikeWriter theEventWriter) throws IOException { + if (extensionMetadataKeys.isEmpty()) { + return; + } + + List, Object>> extensionKeys = new ArrayList<>(extensionMetadataKeys.size()); + List, Object>> modifierExtensionKeys = new ArrayList<>(extensionKeys.size()); + for (Map.Entry, Object> entry : extensionMetadataKeys) { + if (!((ExtensionDt) entry.getValue()).isModifier()) { + extensionKeys.add(entry); + } else { + modifierExtensionKeys.add(entry); + } + } + + writeMetadataExtensions(extensionKeys, "extension", theEventWriter); + writeMetadataExtensions(extensionKeys, "modifierExtension", theEventWriter); + } + + private void writeMetadataExtensions(List, Object>> extensions, String arrayName, JsonLikeWriter theEventWriter) throws IOException { + if (extensions.isEmpty()) { + return; + } + beginArray(theEventWriter, arrayName); + for (Map.Entry, Object> key : extensions) { + ExtensionDt extension = (ExtensionDt) key.getValue(); + if (!extension.getAllUndeclaredExtensions().isEmpty()) { + throw new IllegalArgumentException("Sub-extensions on metadata isn't supported"); + } + theEventWriter.beginObject(); + writeOptionalTagWithTextNode(theEventWriter, "url", extension.getUrl()); + String extensionDatatype = myContext.getRuntimeChildUndeclaredExtensionDefinition().getChildNameByDatatype(extension.getValue().getClass()); + writeOptionalTagWithTextNode(theEventWriter, extensionDatatype, extension.getValueAsPrimitive()); + theEventWriter.endObject(); + } + theEventWriter.endArray(); + } + /** * This is useful only for the two cases where extensions are encoded as direct children (e.g. not in some object * called _name): resource extensions, and extension extensions diff --git a/hapi-fhir-structures-dstu3/src/main/java/org/hl7/fhir/dstu3/model/codesystems/DeviceStatus.java b/hapi-fhir-structures-dstu3/src/main/java/org/hl7/fhir/dstu3/model/codesystems/DeviceStatus.java index d5ccb36916d..1c0e0c83fba 100644 --- a/hapi-fhir-structures-dstu3/src/main/java/org/hl7/fhir/dstu3/model/codesystems/DeviceStatus.java +++ b/hapi-fhir-structures-dstu3/src/main/java/org/hl7/fhir/dstu3/model/codesystems/DeviceStatus.java @@ -1,105 +1,105 @@ -package org.hl7.fhir.dstu3.model.codesystems; - -/* - Copyright (c) 2011+, HL7, Inc. - All rights reserved. - - Redistribution and use in source and binary forms, with or without modification, - are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name of HL7 nor the names of its contributors may be used to - endorse or promote products derived from this software without specific - prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - -*/ - -// Generated on Sat, Mar 25, 2017 21:03-0400 for FHIR v3.0.0 - - -import org.hl7.fhir.exceptions.FHIRException; - -public enum DeviceStatus { - - /** - * The Device is available for use. Note: This means for *implanted devices* the device is implanted in the patient. - */ - ACTIVE, - /** - * The Device is no longer available for use (e.g. lost, expired, damaged). Note: This means for *implanted devices* the device has been removed from the patient. - */ - INACTIVE, - /** - * The Device was entered in error and voided. - */ - ENTEREDINERROR, - /** - * The status of the device has not been determined. - */ - UNKNOWN, - /** - * added to help the parsers - */ - NULL; - public static DeviceStatus fromCode(String codeString) throws FHIRException { - if (codeString == null || "".equals(codeString)) - return null; - if ("active".equals(codeString)) - return ACTIVE; - if ("inactive".equals(codeString)) - return INACTIVE; - if ("entered-in-error".equals(codeString)) - return ENTEREDINERROR; - if ("unknown".equals(codeString)) - return UNKNOWN; - throw new FHIRException("Unknown DeviceStatus code '"+codeString+"'"); - } - public String toCode() { - switch (this) { - case ACTIVE: return "active"; - case INACTIVE: return "inactive"; - case ENTEREDINERROR: return "entered-in-error"; - case UNKNOWN: return "unknown"; - default: return "?"; - } - } - public String getSystem() { - return "http://hl7.org/fhir/device-status"; - } - public String getDefinition() { - switch (this) { - case ACTIVE: return "The Device is available for use. Note: This means for *implanted devices* the device is implanted in the patient."; - case INACTIVE: return "The Device is no longer available for use (e.g. lost, expired, damaged). Note: This means for *implanted devices* the device has been removed from the patient."; - case ENTEREDINERROR: return "The Device was entered in error and voided."; - case UNKNOWN: return "The status of the device has not been determined."; - default: return "?"; - } - } - public String getDisplay() { - switch (this) { - case ACTIVE: return "Active"; - case INACTIVE: return "Inactive"; - case ENTEREDINERROR: return "Entered in Error"; - case UNKNOWN: return "Unknown"; - default: return "?"; - } - } - - -} - +package org.hl7.fhir.dstu3.model.codesystems; + +/* + Copyright (c) 2011+, HL7, Inc. + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of HL7 nor the names of its contributors may be used to + endorse or promote products derived from this software without specific + prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + +*/ + +// Generated on Sat, Mar 25, 2017 21:03-0400 for FHIR v3.0.0 + + +import org.hl7.fhir.exceptions.FHIRException; + +public enum DeviceStatus { + + /** + * The Device is available for use. Note: This means for *implanted devices* the device is implanted in the patient. + */ + ACTIVE, + /** + * The Device is no longer available for use (e.g. lost, expired, damaged). Note: This means for *implanted devices* the device has been removed from the patient. + */ + INACTIVE, + /** + * The Device was entered in error and voided. + */ + ENTEREDINERROR, + /** + * The status of the device has not been determined. + */ + UNKNOWN, + /** + * added to help the parsers + */ + NULL; + public static DeviceStatus fromCode(String codeString) throws FHIRException { + if (codeString == null || "".equals(codeString)) + return null; + if ("active".equals(codeString)) + return ACTIVE; + if ("inactive".equals(codeString)) + return INACTIVE; + if ("entered-in-error".equals(codeString)) + return ENTEREDINERROR; + if ("unknown".equals(codeString)) + return UNKNOWN; + throw new FHIRException("Unknown DeviceStatus code '"+codeString+"'"); + } + public String toCode() { + switch (this) { + case ACTIVE: return "active"; + case INACTIVE: return "inactive"; + case ENTEREDINERROR: return "entered-in-error"; + case UNKNOWN: return "unknown"; + default: return "?"; + } + } + public String getSystem() { + return "http://hl7.org/fhir/device-status"; + } + public String getDefinition() { + switch (this) { + case ACTIVE: return "The Device is available for use. Note: This means for *implanted devices* the device is implanted in the patient."; + case INACTIVE: return "The Device is no longer available for use (e.g. lost, expired, damaged). Note: This means for *implanted devices* the device has been removed from the patient."; + case ENTEREDINERROR: return "The Device was entered in error and voided."; + case UNKNOWN: return "The status of the device has not been determined."; + default: return "?"; + } + } + public String getDisplay() { + switch (this) { + case ACTIVE: return "Active"; + case INACTIVE: return "Inactive"; + case ENTEREDINERROR: return "Entered in Error"; + case UNKNOWN: return "Unknown"; + default: return "?"; + } + } + + +} + diff --git a/hapi-fhir-structures-dstu3/src/main/java/org/hl7/fhir/dstu3/model/codesystems/DeviceStatusEnumFactory.java b/hapi-fhir-structures-dstu3/src/main/java/org/hl7/fhir/dstu3/model/codesystems/DeviceStatusEnumFactory.java new file mode 100644 index 00000000000..d667f0338d2 --- /dev/null +++ b/hapi-fhir-structures-dstu3/src/main/java/org/hl7/fhir/dstu3/model/codesystems/DeviceStatusEnumFactory.java @@ -0,0 +1,70 @@ +package org.hl7.fhir.dstu3.model.codesystems; + +/* + Copyright (c) 2011+, HL7, Inc. + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of HL7 nor the names of its contributors may be used to + endorse or promote products derived from this software without specific + prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + +*/ + +// Generated on Sat, Mar 25, 2017 21:03-0400 for FHIR v3.0.0 + + +import org.hl7.fhir.dstu3.model.EnumFactory; + +public class DeviceStatusEnumFactory implements EnumFactory { + + public DeviceStatus fromCode(String codeString) throws IllegalArgumentException { + if (codeString == null || "".equals(codeString)) + return null; + if ("active".equals(codeString)) + return DeviceStatus.ACTIVE; + if ("inactive".equals(codeString)) + return DeviceStatus.INACTIVE; + if ("entered-in-error".equals(codeString)) + return DeviceStatus.ENTEREDINERROR; + if ("unknown".equals(codeString)) + return DeviceStatus.UNKNOWN; + throw new IllegalArgumentException("Unknown DeviceStatus code '"+codeString+"'"); + } + + public String toCode(DeviceStatus code) { + if (code == DeviceStatus.ACTIVE) + return "active"; + if (code == DeviceStatus.INACTIVE) + return "inactive"; + if (code == DeviceStatus.ENTEREDINERROR) + return "entered-in-error"; + if (code == DeviceStatus.UNKNOWN) + return "unknown"; + return "?"; + } + + public String toSystem(DeviceStatus code) { + return code.getSystem(); + } + +} +