diff --git a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/resources43_50/SubscriptionTopic43_50.java b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/resources43_50/SubscriptionTopic43_50.java index 1b3b36124..9f332f18a 100644 --- a/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/resources43_50/SubscriptionTopic43_50.java +++ b/org.hl7.fhir.convertors/src/main/java/org/hl7/fhir/convertors/conv43_50/resources43_50/SubscriptionTopic43_50.java @@ -54,6 +54,9 @@ public class SubscriptionTopic43_50 { tgt.setPurposeElement(MarkDown43_50.convertMarkdown(src.getPurposeElement())); if (src.hasCopyright()) tgt.setCopyrightElement(MarkDown43_50.convertMarkdown(src.getCopyrightElement())); + if (src.hasCopyrightLabel()) { + tgt.addExtension("http://hl7.org/fhir/5.0/StructureDefinition/extension-SubscriptionTopic.copyrightLabel", String43_50.convertString(src.getCopyrightLabelElement())); + } if (src.hasName()) { tgt.addExtension("http://hl7.org/fhir/5.0/StructureDefinition/extension-SubscriptionTopic.name", String43_50.convertString(src.getNameElement())); } @@ -245,6 +248,9 @@ public class SubscriptionTopic43_50 { if (src.hasExtension("http://hl7.org/fhir/5.0/StructureDefinition/extension-SubscriptionTopic.name")) { tgt.setNameElement(String43_50.convertString((org.hl7.fhir.r4b.model.StringType) src.getExtensionByUrl("http://hl7.org/fhir/5.0/StructureDefinition/extension-SubscriptionTopic.name").getValue())); } + if (src.hasExtension("http://hl7.org/fhir/5.0/StructureDefinition/extension-SubscriptionTopic.copyrightLabel")) { + tgt.setCopyrightLabelElement(String43_50.convertString((org.hl7.fhir.r4b.model.StringType) src.getExtensionByUrl("http://hl7.org/fhir/5.0/StructureDefinition/extension-SubscriptionTopic.copyrightLabel").getValue())); + } if (src.hasUrl()) tgt.setUrlElement(Uri43_50.convertUri(src.getUrlElement())); for (org.hl7.fhir.r4b.model.Identifier t : src.getIdentifier()) @@ -288,6 +294,9 @@ public class SubscriptionTopic43_50 { for(org.hl7.fhir.r4b.model.SubscriptionTopic.SubscriptionTopicResourceTriggerComponent triggerComponent : src.getResourceTrigger()) { tgt.addResourceTrigger(convertResourceTrigger(triggerComponent)); } + for (org.hl7.fhir.r4b.model.SubscriptionTopic.SubscriptionTopicEventTriggerComponent eventTrigger : src.getEventTrigger()) { + tgt.addEventTrigger(convertEventTrigger(eventTrigger)); + } for (org.hl7.fhir.r4b.model.SubscriptionTopic.SubscriptionTopicCanFilterByComponent canFilterByComponent : src.getCanFilterBy()) { tgt.addCanFilterBy(convertCanFilterBy(canFilterByComponent)); } @@ -305,10 +314,27 @@ public class SubscriptionTopic43_50 { if (src.hasInclude()) { tgt.setInclude(src.getInclude().stream().map(String43_50::convertString).collect(Collectors.toList())); } + if (src.hasRevInclude()) { + tgt.setRevInclude(src.getRevInclude().stream().map(String43_50::convertString).collect(Collectors.toList())); + } return tgt; } + private static org.hl7.fhir.r5.model.SubscriptionTopic.SubscriptionTopicEventTriggerComponent convertEventTrigger(org.hl7.fhir.r4b.model.SubscriptionTopic.SubscriptionTopicEventTriggerComponent src) { + org.hl7.fhir.r5.model.SubscriptionTopic.SubscriptionTopicEventTriggerComponent tgt = new org.hl7.fhir.r5.model.SubscriptionTopic.SubscriptionTopicEventTriggerComponent(); + if (src.hasDescription()) { + tgt.setDescriptionElement(MarkDown43_50.convertMarkdown(src.getDescriptionElement())); + } + if (src.hasEvent()) { + tgt.setEvent(CodeableConcept43_50.convertCodeableConcept(src.getEvent())); + } + if (src.hasResource()) { + tgt.setResourceElement(Uri43_50.convertUri(src.getResourceElement())); + } + return tgt; + } + private static org.hl7.fhir.r5.model.SubscriptionTopic.SubscriptionTopicCanFilterByComponent convertCanFilterBy(org.hl7.fhir.r4b.model.SubscriptionTopic.SubscriptionTopicCanFilterByComponent src) { org.hl7.fhir.r5.model.SubscriptionTopic.SubscriptionTopicCanFilterByComponent tgt = new org.hl7.fhir.r5.model.SubscriptionTopic.SubscriptionTopicCanFilterByComponent(); if (src.hasDescription()) { diff --git a/org.hl7.fhir.convertors/src/test/resources/subscription_topic_50.json b/org.hl7.fhir.convertors/src/test/resources/subscription_topic_50.json index abaec7331..0a607ecd9 100644 --- a/org.hl7.fhir.convertors/src/test/resources/subscription_topic_50.json +++ b/org.hl7.fhir.convertors/src/test/resources/subscription_topic_50.json @@ -14,8 +14,44 @@ "version" : "1.0.0-beta.1", "title" : "example", "status" : "draft", + "experimental" : true, "date" : "2019-01-01", + "publisher" : "Somebody McSomeoneson", + "contact" : [ + { "contact" : "Somebody McSomeoneson"} + ], "description" : "Example topic for completed encounters", + "useContext" : [ + { + "code": { + "system": "http://hl7.org/fhir/usage-context-type", + "code": "focus" + }, + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "306206005", + "display": "Referral to service (procedure)" + } + ] + } + } + ], + "jurisdiction": [ + { + "coding": [ + { + "system": "urn:iso:std:iso:3166", + "code": "US", + "display": "United States of America (the)" + } + ] + } + ], + "purpose" : "Some purpose description [link](http://someplace.somewhere)", + "copyright": "Some copyright info [link](http://someplace.somewhere)", + "copyrightLabel": "A copyright label", "resourceTrigger" : [{ "description" : "An Encounter has been completed", "resource" : "http://hl7.org/fhir/StructureDefinition/Encounter", @@ -29,6 +65,17 @@ }, "fhirPathCriteria" : "(%previous.empty() | (%previous.status != 'completed')) and (%current.status = 'completed')" }], + "eventTrigger" : [{ + "description" : "Patient admission is covered by HL7v2 ADT^A01", + "event" : { + "coding" : [{ + "system" : "http://terminology.hl7.org/CodeSystem/v2-0003", + "code" : "A01", + "display" : "ADT/ACK - Admit/visit notification" + }] + }, + "resource" : "http://hl7.org/fhir/StructureDefinition/Encounter" + }], "canFilterBy" : [{ "description" : "Filter based on the subject of an encounter.", "resource" : "Encounter", @@ -65,6 +112,7 @@ "Encounter:account", "Encounter:diagnosis", "Encounter:observation", - "Encounter:location"] + "Encounter:location"], + "revInclude" : ["Encounter:subject"] }] } \ No newline at end of file