From 347fa6ba844d1c1264523dc14db93bc64a7ec175 Mon Sep 17 00:00:00 2001 From: Christian Ohr Date: Wed, 20 Dec 2023 11:13:35 +0100 Subject: [PATCH] #414: fix extensions and profiles --- .../commons/ihe/fhir/mhd/MhdConstants.java | 64 --- .../ipf/commons/ihe/fhir/mhd/MhdProfile.java | 105 +++-- .../mhd/model/AbstractDocumentReference.java | 53 +++ .../model/AbstractProvideDocumentBundle.java | 19 +- .../model/ComprehensiveDocumentReference.java | 9 +- .../mhd/model/ComprehensiveFolderList.java | 7 + .../ComprehensiveProvideDocumentBundle.java | 7 +- .../model/ComprehensiveSubmissionSetList.java | 9 +- .../DocumentReferencePatchParameters.java | 9 +- .../fhir/mhd/model/EntryUuidIdentifier.java | 9 +- ...nsiveDocumentReferencesResponseBundle.java | 7 + .../FindDocumentListsResponseBundle.java | 7 + ...nimalDocumentReferencesResponseBundle.java | 7 + .../ihe/fhir/mhd/model/FolderList.java | 5 +- .../model/GenerateMetadataInParameters.java | 7 + .../model/GenerateMetadataOutParameters.java | 7 + .../commons/ihe/fhir/mhd/model/MhdList.java | 25 +- .../mhd/model/MinimalDocumentReference.java | 31 +- .../ihe/fhir/mhd/model/MinimalFolderList.java | 7 + .../model/MinimalProvideDocumentBundle.java | 7 + .../mhd/model/MinimalSubmissionSetList.java | 8 + .../model/ProvideDocumentBundleResponse.java | 9 +- .../SimplifiedPublishDocumentReference.java | 7 +- .../commons/ihe/fhir/mhd/model/Source.java | 45 +- .../ihe/fhir/mhd/model/SubmissionSetList.java | 27 +- .../SubmissionSetUniqueIdIdentifier.java | 9 +- ...ntainedComprehensiveDocumentReference.java | 9 +- ...nedComprehensiveProvideDocumentBundle.java | 7 + ...ntainedComprehensiveSubmissionSetList.java | 10 +- .../fhir/mhd/model/UniqueIdIdentifier.java | 10 +- .../ihe/fhir/mhd/MhdValidatorTest.java | 5 +- .../fhir/r4/mhd/src/test/resources/test.json | 414 +++++++++++------- 32 files changed, 640 insertions(+), 321 deletions(-) delete mode 100644 commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/MhdConstants.java create mode 100644 commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/AbstractDocumentReference.java diff --git a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/MhdConstants.java b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/MhdConstants.java deleted file mode 100644 index e2cede2b82..0000000000 --- a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/MhdConstants.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2023 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.openehealth.ipf.commons.ihe.fhir.mhd; - -interface MhdConstants { - - // Bundle Profiles V4 - - String ITI65_MINIMAL_BUNDLE_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.Minimal.ProvideBundle"; - String ITI65_COMPREHENSIVE_BUNDLE_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.Comprehensive.ProvideBundle"; - String ITI65_UNCONTAINED_COMPREHENSIVE_BUNDLE_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.UnContained.Comprehensive.ProvideBundle"; - String ITI65_PROVIDE_DOCUMENT_BUNDLE_RESPONSE_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.ProvideDocumentBundleResponse"; - String ITI66_FIND_DOCUMENT_LISTS_RESPONSE_BUNDLE_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.FindDocumentListsResponseMessage"; - String ITI67_FIND_DOCUMENT_REFERENCES_RESPONSE_BUNDLE_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.FindDocumentReferencesResponseMessage"; - String ITI67_FIND_DOCUMENT_REFERENCES_COMPREHENSIVE_RESPONSE_BUNDLE_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.FindDocumentReferencesComprehensiveResponseMessage"; - - // DocumentManifest/List profiles - - String MHD_LIST_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.List"; - String COMPREHENSIVE_SUBMISSIONSET_TYPE_LIST_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.Comprehensive.SubmissionSet"; - String UNCONTAINED_COMPREHENSIVE_SUBMISSIONSET_TYPE_LIST_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.UnContained.Comprehensive.SubmissionSet"; - String MINIMAL_SUBMISSIONSET_TYPE_LIST_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.Minimal.SubmissionSet"; - - // List Profile - - String MINIMAL_FOLDER_TYPE_LIST_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.Minimal.Folder"; - String COMPREHENSIVE_FOLDER_TYPE_LIST_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.Comprehensive.Folder"; - - // DocumentReference profiles - - String COMPREHENSIVE_DOCUMENT_REFERENCE_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.Comprehensive.DocumentReference"; - String UNCONTAINED_COMPREHENSIVE_DOCUMENT_REFERENCE_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.UnContained.Comprehensive.DocumentReference"; - String MINIMAL_DOCUMENT_REFERENCE_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.Minimal.DocumentReference"; - String SIMPLIFIED_PUBLISH_DOCUMENT_REFERENCE_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.SimplifiedPublish.DocumentReference"; - - // Parameters - - String DOCUMENT_REFERENCE_PATCH_PARAMETERS_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.Patch.Parameters"; - String GENERATE_METADATA_PARAMETERS_IN_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.GenerateMetadata.Parameters.In"; - String GENERATE_METADATA_PARAMETERS_OUT_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.GenerateMetadata.Parameters.Out"; - - // Datatypes - - String DESIGNATION_TYPE_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/ihe-designationType"; - String AUTHOR_ORG_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/ihe-authorOrg"; - String INTENDED_RECIPIENT_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/ihe-intendedRecipient"; - String SOURCE_ID_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/ihe-sourceId"; - String SUBMISSIONSET_UNIQUE_IDENTIFIER_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.SubmissionSetUniqueIdIdentifier"; - String UNIQUE_ID_IDENTIFIER_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.UniqueIdIdentifier"; - String ENTRY_UUID_IDENTIFIER_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.EntryUUID.Identifier"; -} diff --git a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/MhdProfile.java b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/MhdProfile.java index f2172f039a..7ee7b2d285 100644 --- a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/MhdProfile.java +++ b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/MhdProfile.java @@ -27,155 +27,201 @@ import java.util.List; import java.util.Optional; -public enum MhdProfile implements MhdConstants, Mhd421 { +public enum MhdProfile implements Mhd421 { // Bundle Profiles V421 ITI65_MINIMAL_BUNDLE( - ITI65_MINIMAL_BUNDLE_PROFILE, + MhdProfile.ITI65_MINIMAL_BUNDLE_PROFILE, MinimalProvideDocumentBundle.class, "IHE.MHD.Minimal.ProvideBundle"), ITI65_COMPREHENSIVE_BUNDLE( - ITI65_COMPREHENSIVE_BUNDLE_PROFILE, + MhdProfile.ITI65_COMPREHENSIVE_BUNDLE_PROFILE, ComprehensiveProvideDocumentBundle.class, "IHE.MHD.Comprehensive.ProvideBundle"), ITI65_UNCONTAINED_COMPREHENSIVE_BUNDLE( - ITI65_UNCONTAINED_COMPREHENSIVE_BUNDLE_PROFILE, + MhdProfile.ITI65_UNCONTAINED_COMPREHENSIVE_BUNDLE_PROFILE, UncontainedComprehensiveProvideDocumentBundle.class, "IHE.MHD.UnContained.Comprehensive.ProvideBundle"), ITI65_PROVIDE_DOCUMENT_BUNDLE_RESPONSE( - ITI65_PROVIDE_DOCUMENT_BUNDLE_RESPONSE_PROFILE, + MhdProfile.ITI65_PROVIDE_DOCUMENT_BUNDLE_RESPONSE_PROFILE, ProvideDocumentBundleResponse.class, "IHE.MHD.ProvideDocumentBundleResponse"), ITI66_FIND_DOCUMENT_LISTS_RESPONSE_BUNDLE( - ITI66_FIND_DOCUMENT_LISTS_RESPONSE_BUNDLE_PROFILE, + MhdProfile.ITI66_FIND_DOCUMENT_LISTS_RESPONSE_BUNDLE_PROFILE, FindDocumentListsResponseBundle.class, "IHE.MHD.FindDocumentListsResponseMessage"), ITI67_FIND_DOCUMENT_REFERENCES_RESPONSE_BUNDLE( - ITI67_FIND_DOCUMENT_REFERENCES_RESPONSE_BUNDLE_PROFILE, + MhdProfile.ITI67_FIND_DOCUMENT_REFERENCES_RESPONSE_BUNDLE_PROFILE, FindMinimalDocumentReferencesResponseBundle.class, "IHE.MHD.FindDocumentReferencesResponseMessage" ), ITI67_FIND_DOCUMENT_REFERENCES_COMPREHENSIVE_RESPONSE_BUNDLE( - ITI67_FIND_DOCUMENT_REFERENCES_COMPREHENSIVE_RESPONSE_BUNDLE_PROFILE, + MhdProfile.ITI67_FIND_DOCUMENT_REFERENCES_COMPREHENSIVE_RESPONSE_BUNDLE_PROFILE, FindComprehensiveDocumentReferencesResponseBundle.class, "IHE.MHD.FindDocumentReferencesComprehensiveResponseMessage"), // List profiles v421 MHD_LIST( - MHD_LIST_PROFILE, + MhdProfile.MHD_LIST_PROFILE, MhdList.class, "IHE.MHD.List"), COMPREHENSIVE_SUBMISSIONSET_TYPE_LIST( - COMPREHENSIVE_SUBMISSIONSET_TYPE_LIST_PROFILE, + MhdProfile.COMPREHENSIVE_SUBMISSIONSET_TYPE_LIST_PROFILE, ComprehensiveSubmissionSetList.class, "IHE.MHD.Comprehensive.SubmissionSet"), UNCONTAINED_COMPREHENSIVE_SUBMISSIONSET_TYPE_LIST( - UNCONTAINED_COMPREHENSIVE_SUBMISSIONSET_TYPE_LIST_PROFILE, + MhdProfile.UNCONTAINED_COMPREHENSIVE_SUBMISSIONSET_TYPE_LIST_PROFILE, UncontainedComprehensiveProvideDocumentBundle.class, "IHE.MHD.UnContained.Comprehensive.SubmissionSet"), MINIMAL_SUBMISSIONSET_TYPE_LIST( - MINIMAL_SUBMISSIONSET_TYPE_LIST_PROFILE, + MhdProfile.MINIMAL_SUBMISSIONSET_TYPE_LIST_PROFILE, MinimalSubmissionSetList.class, "IHE.MHD.Minimal.SubmissionSet"), MINIMAL_FOLDER_TYPE_LIST( - MINIMAL_FOLDER_TYPE_LIST_PROFILE, + MhdProfile.MINIMAL_FOLDER_TYPE_LIST_PROFILE, MinimalFolderList.class, "IHE.MHD.Minimal.Folder"), COMPREHENSIVE_FOLDER_TYPE_LIST( - COMPREHENSIVE_FOLDER_TYPE_LIST_PROFILE, + MhdProfile.COMPREHENSIVE_FOLDER_TYPE_LIST_PROFILE, ComprehensiveFolderList.class, "IHE.MHD.Comprehensive.Folder"), // DocumentReference profiles v421 COMPREHENSIVE_DOCUMENT_REFERENCE( - COMPREHENSIVE_DOCUMENT_REFERENCE_PROFILE, + MhdProfile.COMPREHENSIVE_DOCUMENT_REFERENCE_PROFILE, ComprehensiveDocumentReference.class, "IHE.MHD.Comprehensive.DocumentReference"), UNCONTAINED_COMPREHENSIVE_DOCUMENT_REFERENCE( - UNCONTAINED_COMPREHENSIVE_DOCUMENT_REFERENCE_PROFILE, + MhdProfile.UNCONTAINED_COMPREHENSIVE_DOCUMENT_REFERENCE_PROFILE, UncontainedComprehensiveDocumentReference.class, "IHE.MHD.UnContained.Comprehensive.DocumentReference"), MINIMAL_DOCUMENT_REFERENCE( - MINIMAL_DOCUMENT_REFERENCE_PROFILE, + MhdProfile.MINIMAL_DOCUMENT_REFERENCE_PROFILE, MinimalDocumentReference.class, "IHE.MHD.Minimal.DocumentReference"), SIMPLIFIED_PUBLISH_DOCUMENT_REFERENCE( - SIMPLIFIED_PUBLISH_DOCUMENT_REFERENCE_PROFILE, + MhdProfile.SIMPLIFIED_PUBLISH_DOCUMENT_REFERENCE_PROFILE, SimplifiedPublishDocumentReference.class, "IHE.MHD.SimplifiedPublish.DocumentReference"), // Parameters DOCUMENT_REFERENCE_PATCH_PARAMETERS( - DOCUMENT_REFERENCE_PATCH_PARAMETERS_PROFILE, + MhdProfile.DOCUMENT_REFERENCE_PATCH_PARAMETERS_PROFILE, DocumentReferencePatchParameters.class, "IHE.MHD.Patch.Parameters"), GENERATE_METADATA_PARAMETERS_IN( - GENERATE_METADATA_PARAMETERS_IN_PROFILE, + MhdProfile.GENERATE_METADATA_PARAMETERS_IN_PROFILE, GenerateMetadataInParameters.class, "IHE.MHD.GenerateMetadata.Parameters.In"), GENERATE_METADATA_PARAMETERS_OUT( - GENERATE_METADATA_PARAMETERS_OUT_PROFILE, + MhdProfile.GENERATE_METADATA_PARAMETERS_OUT_PROFILE, GenerateMetadataOutParameters.class, "IHE.MHD.GenerateMetadata.Parameters.Out"), // Datatypes etc. DESIGNATION_TYPE( - DESIGNATION_TYPE_PROFILE, + MhdProfile.DESIGNATION_TYPE_PROFILE, null, "ihe-designationType"), AUTHOR_ORG( - AUTHOR_ORG_PROFILE, + MhdProfile.AUTHOR_ORG_PROFILE, null, "ihe-authorOrg"), INTENDED_RECIPIENT( - INTENDED_RECIPIENT_PROFILE, + MhdProfile.INTENDED_RECIPIENT_PROFILE, null, "ihe-intendedRecipient"), SOURCE_ID( - SOURCE_ID_PROFILE, + MhdProfile.SOURCE_ID_PROFILE, null, "ihe-sourceId"), SUBMISSIONSET_UNIQUE_IDENTIFIER( - SUBMISSIONSET_UNIQUE_IDENTIFIER_PROFILE, + MhdProfile.SUBMISSIONSET_UNIQUE_IDENTIFIER_PROFILE, null, "IHE.MHD.SubmissionSetUniqueIdIdentifier"), UNIQUE_ID_IDENTIFIER( - UNIQUE_ID_IDENTIFIER_PROFILE, + MhdProfile.UNIQUE_ID_IDENTIFIER_PROFILE, null, "IHE.MHD.UniqueIdIdentifier"), ENTRY_UUID_IDENTIFIER( - ENTRY_UUID_IDENTIFIER_PROFILE, + MhdProfile.ENTRY_UUID_IDENTIFIER_PROFILE, null, "IHE.MHD.EntryUUID.Identifier"); + // Bundle Profiles V4 + + public static final String ITI65_MINIMAL_BUNDLE_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.Minimal.ProvideBundle"; + public static final String ITI65_COMPREHENSIVE_BUNDLE_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.Comprehensive.ProvideBundle"; + public static final String ITI65_UNCONTAINED_COMPREHENSIVE_BUNDLE_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.UnContained.Comprehensive.ProvideBundle"; + public static final String ITI65_PROVIDE_DOCUMENT_BUNDLE_RESPONSE_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.ProvideDocumentBundleResponse"; + public static final String ITI66_FIND_DOCUMENT_LISTS_RESPONSE_BUNDLE_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.FindDocumentListsResponseMessage"; + public static final String ITI67_FIND_DOCUMENT_REFERENCES_RESPONSE_BUNDLE_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.FindDocumentReferencesResponseMessage"; + public static final String ITI67_FIND_DOCUMENT_REFERENCES_COMPREHENSIVE_RESPONSE_BUNDLE_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.FindDocumentReferencesComprehensiveResponseMessage"; + + // DocumentManifest/List profiles + + public static final String MHD_LIST_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.List"; + public static final String COMPREHENSIVE_SUBMISSIONSET_TYPE_LIST_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.Comprehensive.SubmissionSet"; + public static final String UNCONTAINED_COMPREHENSIVE_SUBMISSIONSET_TYPE_LIST_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.UnContained.Comprehensive.SubmissionSet"; + public static final String MINIMAL_SUBMISSIONSET_TYPE_LIST_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.Minimal.SubmissionSet"; + + // List Profile + + public static final String MINIMAL_FOLDER_TYPE_LIST_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.Minimal.Folder"; + public static final String COMPREHENSIVE_FOLDER_TYPE_LIST_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.Comprehensive.Folder"; + + // DocumentReference profiles + + public static final String COMPREHENSIVE_DOCUMENT_REFERENCE_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.Comprehensive.DocumentReference"; + public static final String UNCONTAINED_COMPREHENSIVE_DOCUMENT_REFERENCE_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.UnContained.Comprehensive.DocumentReference"; + public static final String MINIMAL_DOCUMENT_REFERENCE_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.Minimal.DocumentReference"; + public static final String SIMPLIFIED_PUBLISH_DOCUMENT_REFERENCE_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.SimplifiedPublish.DocumentReference"; + + // Parameters + + public static final String DOCUMENT_REFERENCE_PATCH_PARAMETERS_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.Patch.Parameters"; + public static final String GENERATE_METADATA_PARAMETERS_IN_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.GenerateMetadata.Parameters.In"; + public static final String GENERATE_METADATA_PARAMETERS_OUT_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.GenerateMetadata.Parameters.Out"; + + // Datatypes + + public static final String DESIGNATION_TYPE_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/ihe-designationType"; + public static final String AUTHOR_ORG_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/ihe-authorOrg"; + public static final String INTENDED_RECIPIENT_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/ihe-intendedRecipient"; + public static final String SOURCE_ID_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/ihe-sourceId"; + public static final String SUBMISSIONSET_UNIQUE_IDENTIFIER_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.SubmissionSetUniqueIdIdentifier"; + public static final String UNIQUE_ID_IDENTIFIER_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.UniqueIdIdentifier"; + public static final String ENTRY_UUID_IDENTIFIER_PROFILE = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.EntryUUID.Identifier"; + + @Getter private final String url; @@ -218,7 +264,8 @@ public static void registerDefaultTypes(FhirContext fhirContext) { .filter(profile -> profile.resourceClass != null) .forEach(profile -> fhirContext.setDefaultTypeForProfile(profile.url, profile.resourceClass)); fhirContext.registerCustomTypes(Arrays.asList( - Source.class, EntryUuidIdentifier.class, SubmissionSetUniqueIdIdentifier.class, UniqueIdIdentifier.class + EntryUuidIdentifier.class, SubmissionSetUniqueIdIdentifier.class, UniqueIdIdentifier.class + // , Source.class )); } diff --git a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/AbstractDocumentReference.java b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/AbstractDocumentReference.java new file mode 100644 index 0000000000..89487591b2 --- /dev/null +++ b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/AbstractDocumentReference.java @@ -0,0 +1,53 @@ +/* + * Copyright 2023 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.openehealth.ipf.commons.ihe.fhir.mhd.model; + +import org.hl7.fhir.r4.model.DocumentReference; +import org.openehealth.ipf.commons.ihe.fhir.mhd.Mhd421; + +import java.util.UUID; + +abstract class AbstractDocumentReference> + extends DocumentReference + implements Mhd421 { + + /** + * Sets the MasterIdentifier to be a Unique Id as required by the profile + * + * @param system system value + * @param value identifier value + * @return this object + */ + @SuppressWarnings("unchecked") + public T setUniqueIdIdentifier(String system, String value) { + setMasterIdentifier(new UniqueIdIdentifier() + .setSystem(system) + .setValue(value)); + return (T)this; + } + + /** + * Adds an identifier to be a EntryUuid as required by the profile + * @param uuid UUID + * @return this object + */ + @SuppressWarnings("unchecked") + public T setEntryUuidIdentifier(UUID uuid) { + getIdentifier().add(new EntryUuidIdentifier(uuid)); + return (T)this; + } + +} diff --git a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/AbstractProvideDocumentBundle.java b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/AbstractProvideDocumentBundle.java index da0712cf44..dafe0c503b 100644 --- a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/AbstractProvideDocumentBundle.java +++ b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/AbstractProvideDocumentBundle.java @@ -1,10 +1,25 @@ +/* + * Copyright 2023 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.openehealth.ipf.commons.ihe.fhir.mhd.model; import org.hl7.fhir.r4.model.Binary; import org.hl7.fhir.r4.model.Bundle; import org.hl7.fhir.r4.model.Resource; -public class AbstractProvideDocumentBundle> extends Bundle { +abstract class AbstractProvideDocumentBundle> extends Bundle { public T addEntry(String fullUrl, Resource resource) { addEntry() @@ -17,7 +32,7 @@ public T addEntry(String fullUrl, Resource resource) { return (T)this; } - public T addFolder(String fullUrl, FolderList folderList) { + public T addFolderList(String fullUrl, FolderList folderList) { return addEntry(fullUrl, folderList); } diff --git a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/ComprehensiveDocumentReference.java b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/ComprehensiveDocumentReference.java index f6bb5270c9..758dac54fb 100644 --- a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/ComprehensiveDocumentReference.java +++ b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/ComprehensiveDocumentReference.java @@ -23,7 +23,7 @@ @ResourceDef(name = "DocumentReference", id = "mhdComprehensiveDocumentReference", profile = COMPREHENSIVE_DOCUMENT_REFERENCE_PROFILE) -public class ComprehensiveDocumentReference extends UncontainedComprehensiveDocumentReference { +public class ComprehensiveDocumentReference extends AbstractDocumentReference { public ComprehensiveDocumentReference() { super(); @@ -80,4 +80,11 @@ public ComprehensiveDocumentReference setSourcePatientInfo(Patient patient) { return this; } + @Override + public ComprehensiveDocumentReference copy() { + var dst = new ComprehensiveDocumentReference(); + copyValues(dst); + return dst; + } + } diff --git a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/ComprehensiveFolderList.java b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/ComprehensiveFolderList.java index 891ee59d6c..9473842c4a 100644 --- a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/ComprehensiveFolderList.java +++ b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/ComprehensiveFolderList.java @@ -27,4 +27,11 @@ public ComprehensiveFolderList() { super(); COMPREHENSIVE_FOLDER_TYPE_LIST.setProfile(this); } + + @Override + public ComprehensiveFolderList copy() { + var dst = new ComprehensiveFolderList(); + copyValues(dst); + return dst; + } } diff --git a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/ComprehensiveProvideDocumentBundle.java b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/ComprehensiveProvideDocumentBundle.java index d785f3d555..b92ecf3705 100644 --- a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/ComprehensiveProvideDocumentBundle.java +++ b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/ComprehensiveProvideDocumentBundle.java @@ -63,5 +63,10 @@ public List getFolders() { return FhirUtils.getResources(this, FolderList.class); } - + @Override + public ComprehensiveProvideDocumentBundle copy() { + var dst = new ComprehensiveProvideDocumentBundle(); + copyValues(dst); + return dst; + } } diff --git a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/ComprehensiveSubmissionSetList.java b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/ComprehensiveSubmissionSetList.java index 9810e28f65..a555c2d3ec 100644 --- a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/ComprehensiveSubmissionSetList.java +++ b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/ComprehensiveSubmissionSetList.java @@ -21,10 +21,17 @@ import static org.openehealth.ipf.commons.ihe.fhir.mhd.MhdProfile.COMPREHENSIVE_SUBMISSIONSET_TYPE_LIST_PROFILE; @ResourceDef(name = "List", id = "mhdComprehensiveSubmissionSet", profile = COMPREHENSIVE_SUBMISSIONSET_TYPE_LIST_PROFILE) -public class ComprehensiveSubmissionSetList extends UncontainedComprehensiveSubmissionSetList { +public class ComprehensiveSubmissionSetList extends SubmissionSetList { public ComprehensiveSubmissionSetList() { super(); COMPREHENSIVE_SUBMISSIONSET_TYPE_LIST.setProfile(this); } + + @Override + public ComprehensiveSubmissionSetList copy() { + var dst = new ComprehensiveSubmissionSetList(); + copyValues(dst); + return dst; + } } diff --git a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/DocumentReferencePatchParameters.java b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/DocumentReferencePatchParameters.java index 4fe0ae484e..467ac6a923 100644 --- a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/DocumentReferencePatchParameters.java +++ b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/DocumentReferencePatchParameters.java @@ -18,8 +18,8 @@ import ca.uhn.fhir.model.api.annotation.ResourceDef; import org.hl7.fhir.r4.model.Parameters; -import static org.openehealth.ipf.commons.ihe.fhir.mhd.MhdProfile.DOCUMENT_REFERENCE_PATCH_PARAMETERS_PROFILE; import static org.openehealth.ipf.commons.ihe.fhir.mhd.MhdProfile.DOCUMENT_REFERENCE_PATCH_PARAMETERS; +import static org.openehealth.ipf.commons.ihe.fhir.mhd.MhdProfile.DOCUMENT_REFERENCE_PATCH_PARAMETERS_PROFILE; @ResourceDef(name = "Parameters", id = "mhdDocumentReferencePatchParameters", profile = DOCUMENT_REFERENCE_PATCH_PARAMETERS_PROFILE) public class DocumentReferencePatchParameters extends Parameters { @@ -28,4 +28,11 @@ public DocumentReferencePatchParameters() { DOCUMENT_REFERENCE_PATCH_PARAMETERS.setProfile(this); } + @Override + public DocumentReferencePatchParameters copy() { + var dst = new DocumentReferencePatchParameters(); + copyValues(dst); + return dst; + } + } diff --git a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/EntryUuidIdentifier.java b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/EntryUuidIdentifier.java index a4e830bd38..b435511f70 100644 --- a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/EntryUuidIdentifier.java +++ b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/EntryUuidIdentifier.java @@ -24,7 +24,7 @@ // https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.EntryUUID.Identifier -@DatatypeDef(name = "EntryUuidIdentifier", profileOf = Identifier.class) +@DatatypeDef(name = "EntryUuidIdentifier", profileOf = Identifier.class, isSpecialization = true) public class EntryUuidIdentifier extends Identifier { public EntryUuidIdentifier() { @@ -42,4 +42,11 @@ public EntryUuidIdentifier setValue(UUID uuid) { setValue(new URN(uuid).toString()); return this; } + + @Override + public EntryUuidIdentifier copy() { + var dst = new EntryUuidIdentifier(); + copyValues(dst); + return dst; + } } diff --git a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/FindComprehensiveDocumentReferencesResponseBundle.java b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/FindComprehensiveDocumentReferencesResponseBundle.java index 3460fcb36d..312c3bb179 100644 --- a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/FindComprehensiveDocumentReferencesResponseBundle.java +++ b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/FindComprehensiveDocumentReferencesResponseBundle.java @@ -38,4 +38,11 @@ public List getComprehensiveDocumentReferences() return getResources(this, ComprehensiveDocumentReference.class); } + @Override + public FindComprehensiveDocumentReferencesResponseBundle copy() { + var dst = new FindComprehensiveDocumentReferencesResponseBundle(); + copyValues(dst); + return dst; + } + } diff --git a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/FindDocumentListsResponseBundle.java b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/FindDocumentListsResponseBundle.java index a53ac18931..b9e668b714 100644 --- a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/FindDocumentListsResponseBundle.java +++ b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/FindDocumentListsResponseBundle.java @@ -42,4 +42,11 @@ public List getFolders() { return getResources(this, FolderList.class); } + @Override + public FindDocumentListsResponseBundle copy() { + var dst = new FindDocumentListsResponseBundle(); + copyValues(dst); + return dst; + } + } diff --git a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/FindMinimalDocumentReferencesResponseBundle.java b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/FindMinimalDocumentReferencesResponseBundle.java index a2c815d3aa..e517716f5d 100644 --- a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/FindMinimalDocumentReferencesResponseBundle.java +++ b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/FindMinimalDocumentReferencesResponseBundle.java @@ -38,4 +38,11 @@ public List getMinimalDocumentReferences() { return getResources(this, MinimalDocumentReference.class); } + @Override + public FindMinimalDocumentReferencesResponseBundle copy() { + var dst = new FindMinimalDocumentReferencesResponseBundle(); + copyValues(dst); + return dst; + } + } diff --git a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/FolderList.java b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/FolderList.java index c5c821e553..3a658e25c6 100644 --- a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/FolderList.java +++ b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/FolderList.java @@ -17,9 +17,10 @@ import org.hl7.fhir.r4.model.CodeableConcept; import org.hl7.fhir.r4.model.Coding; +import org.hl7.fhir.r4.model.ListResource; import org.ietf.jgss.Oid; -public class FolderList> extends MhdList { +public abstract class FolderList> extends MhdList { public FolderList() { super(); @@ -40,7 +41,7 @@ public T setUniqueIdIdentifier(String system, String value) { return (T)this; } - private static final Coding FOLDER_LIST_CODING = new Coding( + public static final Coding FOLDER_LIST_CODING = new Coding( "https://profiles.ihe.net/ITI/MHD/CodeSystem/MHDlistTypes", "folder", "folder" diff --git a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/GenerateMetadataInParameters.java b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/GenerateMetadataInParameters.java index a0204e3e18..5396ab550d 100644 --- a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/GenerateMetadataInParameters.java +++ b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/GenerateMetadataInParameters.java @@ -29,4 +29,11 @@ public GenerateMetadataInParameters() { GENERATE_METADATA_PARAMETERS_IN.setProfile(this); } + @Override + public GenerateMetadataInParameters copy() { + var dst = new GenerateMetadataInParameters(); + copyValues(dst); + return dst; + } + } diff --git a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/GenerateMetadataOutParameters.java b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/GenerateMetadataOutParameters.java index f225716969..14955b0ca2 100644 --- a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/GenerateMetadataOutParameters.java +++ b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/GenerateMetadataOutParameters.java @@ -29,4 +29,11 @@ public GenerateMetadataOutParameters() { GENERATE_METADATA_PARAMETERS_OUT.setProfile(this); } + @Override + public GenerateMetadataOutParameters copy() { + var dst = new GenerateMetadataOutParameters(); + copyValues(dst); + return dst; + } + } diff --git a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/MhdList.java b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/MhdList.java index 3f25b986e8..d4d538991c 100644 --- a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/MhdList.java +++ b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/MhdList.java @@ -20,20 +20,18 @@ import ca.uhn.fhir.model.api.annotation.Extension; import ca.uhn.fhir.model.api.annotation.ResourceDef; import ca.uhn.fhir.util.ElementUtil; +import org.hl7.fhir.r4.model.Base; import org.hl7.fhir.r4.model.CodeableConcept; -import org.hl7.fhir.r4.model.Identifier; import org.hl7.fhir.r4.model.ListResource; -import org.ietf.jgss.Oid; -import org.openehealth.ipf.commons.core.URN; -import org.openehealth.ipf.commons.ihe.fhir.Constants; import org.openehealth.ipf.commons.ihe.fhir.mhd.Mhd421; import java.util.Date; import java.util.UUID; -import static org.openehealth.ipf.commons.ihe.fhir.mhd.MhdProfile.MHD_LIST_PROFILE; import static org.openehealth.ipf.commons.ihe.fhir.mhd.MhdProfile.MHD_LIST; +import static org.openehealth.ipf.commons.ihe.fhir.mhd.MhdProfile.MHD_LIST_PROFILE; +@SuppressWarnings("unchecked") @ResourceDef(name = "List", id = "mhdList", profile = MHD_LIST_PROFILE) public class MhdList> extends ListResource implements Mhd421 { @@ -84,10 +82,25 @@ public boolean hasDesignationType() { * @param uuid uuid * @return this object */ - @SuppressWarnings("unchecked") public T setEntryUuidIdentifier(UUID uuid) { getIdentifier().add(new EntryUuidIdentifier(uuid)); return (T)this; } + @Override + public void copyValues(ListResource dst) { + super.copyValues(dst); + ((MhdList)dst).designationType = designationType == null ? null : designationType.copy(); + } + + @Override + public boolean equalsDeep(Base other_) { + if (!super.equalsDeep(other_)) + return false; + if (!(other_ instanceof MhdList)) + return false; + MhdList o = (MhdList) other_; + return compareDeep(designationType, o.designationType, true); + } + } diff --git a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/MinimalDocumentReference.java b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/MinimalDocumentReference.java index eabfb4941a..783a338505 100644 --- a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/MinimalDocumentReference.java +++ b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/MinimalDocumentReference.java @@ -27,7 +27,7 @@ import static org.openehealth.ipf.commons.ihe.fhir.mhd.MhdProfile.MINIMAL_DOCUMENT_REFERENCE_PROFILE; @ResourceDef(name = "DocumentReference", id = "mhdMinimalDocumentReference", profile = MINIMAL_DOCUMENT_REFERENCE_PROFILE) -public class MinimalDocumentReference> extends DocumentReference implements Mhd421 { +public class MinimalDocumentReference extends AbstractDocumentReference { public MinimalDocumentReference() { super(); @@ -36,29 +36,10 @@ public MinimalDocumentReference() { setStatus(Enumerations.DocumentReferenceStatus.CURRENT); } - /** - * Sets the MasterIdentifier to be a Unique Id as required by the profile - * - * @param system system value - * @param value identifier value - * @return this object - */ - @SuppressWarnings("unchecked") - public T setUniqueIdIdentifier(String system, String value) { - setMasterIdentifier(new UniqueIdIdentifier() - .setSystem(system) - .setValue(value)); - return (T)this; - } - - /** - * Adds an identifier to be a EntryUuid as required by the profile - * @param uuid UUID - * @return this object - */ - @SuppressWarnings("unchecked") - public T setEntryUuidIdentifier(UUID uuid) { - getIdentifier().add(new EntryUuidIdentifier(uuid)); - return (T)this; + @Override + public MinimalDocumentReference copy() { + var dst = new MinimalDocumentReference(); + copyValues(dst); + return dst; } } diff --git a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/MinimalFolderList.java b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/MinimalFolderList.java index 608dc794bf..d329e3855f 100644 --- a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/MinimalFolderList.java +++ b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/MinimalFolderList.java @@ -27,4 +27,11 @@ public MinimalFolderList() { super(); MINIMAL_FOLDER_TYPE_LIST.setProfile(this); } + + @Override + public MinimalFolderList copy() { + var dst = new MinimalFolderList(); + copyValues(dst); + return dst; + } } diff --git a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/MinimalProvideDocumentBundle.java b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/MinimalProvideDocumentBundle.java index c1cec6536f..8136914281 100644 --- a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/MinimalProvideDocumentBundle.java +++ b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/MinimalProvideDocumentBundle.java @@ -51,4 +51,11 @@ public Optional getBinary() { public List getFolders() { return FhirUtils.getResources(this, FolderList.class); } + + @Override + public MinimalProvideDocumentBundle copy() { + var dst = new MinimalProvideDocumentBundle(); + copyValues(dst); + return dst; + } } diff --git a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/MinimalSubmissionSetList.java b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/MinimalSubmissionSetList.java index 2f13447fb0..6fc0c11ba4 100644 --- a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/MinimalSubmissionSetList.java +++ b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/MinimalSubmissionSetList.java @@ -16,6 +16,7 @@ package org.openehealth.ipf.commons.ihe.fhir.mhd.model; import ca.uhn.fhir.model.api.annotation.ResourceDef; +import org.hl7.fhir.r4.model.ListResource; import static org.openehealth.ipf.commons.ihe.fhir.mhd.MhdProfile.MINIMAL_SUBMISSIONSET_TYPE_LIST; import static org.openehealth.ipf.commons.ihe.fhir.mhd.MhdProfile.MINIMAL_SUBMISSIONSET_TYPE_LIST_PROFILE; @@ -27,4 +28,11 @@ public MinimalSubmissionSetList() { super(); MINIMAL_SUBMISSIONSET_TYPE_LIST.setProfile(this); } + + @Override + public MinimalSubmissionSetList copy() { + var dst = new MinimalSubmissionSetList(); + copyValues(dst); + return dst; + } } diff --git a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/ProvideDocumentBundleResponse.java b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/ProvideDocumentBundleResponse.java index 8729bf4ab5..59abe2d9ae 100644 --- a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/ProvideDocumentBundleResponse.java +++ b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/ProvideDocumentBundleResponse.java @@ -22,7 +22,7 @@ import static org.openehealth.ipf.commons.ihe.fhir.mhd.MhdProfile.ITI65_PROVIDE_DOCUMENT_BUNDLE_RESPONSE; import static org.openehealth.ipf.commons.ihe.fhir.mhd.MhdProfile.ITI65_PROVIDE_DOCUMENT_BUNDLE_RESPONSE_PROFILE; -@ResourceDef(name = "Bundle", id = "mhdMinimalBundle", profile = ITI65_PROVIDE_DOCUMENT_BUNDLE_RESPONSE_PROFILE) +@ResourceDef(name = "Bundle", id = "mhdProvideDocumentBundleResponse", profile = ITI65_PROVIDE_DOCUMENT_BUNDLE_RESPONSE_PROFILE) public class ProvideDocumentBundleResponse extends Bundle implements Mhd421 { public ProvideDocumentBundleResponse() { @@ -31,4 +31,11 @@ public ProvideDocumentBundleResponse() { ITI65_PROVIDE_DOCUMENT_BUNDLE_RESPONSE.setProfile(this); } + @Override + public ProvideDocumentBundleResponse copy() { + var dst = new ProvideDocumentBundleResponse(); + copyValues(dst); + return dst; + } + } diff --git a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/SimplifiedPublishDocumentReference.java b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/SimplifiedPublishDocumentReference.java index 071696387a..0feed1fbaa 100644 --- a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/SimplifiedPublishDocumentReference.java +++ b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/SimplifiedPublishDocumentReference.java @@ -67,5 +67,10 @@ public SimplifiedPublishDocumentReference setContent(String contentType, byte[] } } - + @Override + public SimplifiedPublishDocumentReference copy() { + var dst = new SimplifiedPublishDocumentReference(); + copyValues(dst); + return dst; + } } diff --git a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/Source.java b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/Source.java index 2435b41dc9..f1e461b667 100644 --- a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/Source.java +++ b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/Source.java @@ -20,19 +20,26 @@ import ca.uhn.fhir.model.api.annotation.Extension; import ca.uhn.fhir.util.ElementUtil; import lombok.Getter; +import org.hl7.fhir.r4.model.Base; import org.hl7.fhir.r4.model.Reference; -@Getter -@DatatypeDef(name = "Source", profileOf = Reference.class) +import static org.openehealth.ipf.commons.ihe.fhir.mhd.MhdProfile.AUTHOR_ORG_PROFILE; + +/** + * Source data type extension. Unfortunately we cannot register this datatype with the FhirCOntext + * right now as parsing/rendering won't work anymore afterwards. It can be used, however, to + * assemble resources. + */ +@DatatypeDef(name = "Source", profileOf = Reference.class, isSpecialization = true) public class Source extends Reference { @Child(name = "authorOrg") - @Extension(url = "https://profiles.ihe.net/ITI/MHD/StructureDefinition/ihe-authorOrg", definedLocally = false) + @Extension(url = AUTHOR_ORG_PROFILE, definedLocally = false) private Reference authorOrg; @Override public boolean isEmpty() { - return super.isEmpty() && ElementUtil.isEmpty(authorOrg, reference); + return super.isEmpty() && ElementUtil.isEmpty(authorOrg); } public Source setAuthorOrg(Reference authorOrg) { @@ -40,14 +47,34 @@ public Source setAuthorOrg(Reference authorOrg) { return this; } + public boolean hasAuthorOrg() { + return authorOrg != null && !authorOrg.isEmpty(); + } + + public Reference getAuthorOrg() { + return authorOrg; + } + @Override - public Source setReference(String value) { - super.setReference(value); - return this; + public Source copy() { + var dst = new Source(); + copyValues(dst); + return dst; } - public boolean hasAuthorOrg() { - return authorOrg != null && !authorOrg.isEmpty(); + @Override + public boolean equalsDeep(Base other_) { + if (!super.equalsDeep(other_)) + return false; + if (!(other_ instanceof Source)) + return false; + Source o = (Source) other_; + return compareDeep(authorOrg, o.authorOrg, true); } + @Override + public void copyValues(Reference dst) { + super.copyValues(dst); + ((Source)dst).authorOrg = authorOrg == null ? null : authorOrg.copy(); + } } diff --git a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/SubmissionSetList.java b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/SubmissionSetList.java index 1ee30125f9..be9ff04bb3 100644 --- a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/SubmissionSetList.java +++ b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/SubmissionSetList.java @@ -19,17 +19,15 @@ import ca.uhn.fhir.model.api.annotation.Description; import ca.uhn.fhir.model.api.annotation.Extension; import ca.uhn.fhir.util.ElementUtil; -import org.hl7.fhir.r4.model.CodeableConcept; -import org.hl7.fhir.r4.model.Coding; -import org.hl7.fhir.r4.model.Identifier; -import org.hl7.fhir.r4.model.Reference; +import org.hl7.fhir.r4.model.*; import org.ietf.jgss.Oid; import org.openehealth.ipf.commons.core.URN; import java.util.ArrayList; import java.util.List; -public class SubmissionSetList> extends MhdList { +@SuppressWarnings("unchecked") +public abstract class SubmissionSetList> extends MhdList { public SubmissionSetList() { super(); @@ -58,7 +56,6 @@ public Identifier getSourceId() { return sourceId; } - @SuppressWarnings("unchecked") public T setSourceId(Identifier sourceId) { this.sourceId = sourceId; return (T)this; @@ -74,7 +71,6 @@ public T setSourceId(Oid oid) { * @param oid oid * @return this object */ - @SuppressWarnings("unchecked") public T setSubmissionSetUniqueIdIdentifier(Oid oid) { getIdentifier().add(new SubmissionSetUniqueIdIdentifier(oid)); return (T)this; @@ -95,7 +91,6 @@ public Reference getIntendedRecipientFirstRep() { return this.getIntendedRecipient().get(0); } - @SuppressWarnings("unchecked") public T setIntendedRecipient(List intendedRecipient) { this.intendedRecipient = intendedRecipient; return (T)this; @@ -109,7 +104,6 @@ public Reference addIntendedRecipient() { return r; } - @SuppressWarnings("unchecked") public T addIntendedRecipient(Reference r) { if (r == null) return (T)this; @@ -119,7 +113,6 @@ public T addIntendedRecipient(Reference r) { return (T)this; } - @SuppressWarnings("unchecked") public T linkDocumentReference(String fullUrl) { addEntry().setItem(new Reference(fullUrl)); return (T)this; @@ -134,7 +127,19 @@ public boolean hasIntendedRecipient() { return false; } - private static final Coding SUBMISSIONSET_LIST_CODING = new Coding( + @Override + public void copyValues(ListResource dst) { + super.copyValues(dst); + var submissionSetList = (SubmissionSetList)dst; + submissionSetList.sourceId = sourceId == null ? null : sourceId.copy(); + if (intendedRecipient != null) { + submissionSetList.intendedRecipient = new ArrayList<>(); + for (Reference r : intendedRecipient) + ((SubmissionSetList) dst).intendedRecipient.add(r.copy()); + } + } + + public static final Coding SUBMISSIONSET_LIST_CODING = new Coding( "https://profiles.ihe.net/ITI/MHD/CodeSystem/MHDlistTypes", "submissionset", "submissionset" diff --git a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/SubmissionSetUniqueIdIdentifier.java b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/SubmissionSetUniqueIdIdentifier.java index dcbf2a4729..767d627cc2 100644 --- a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/SubmissionSetUniqueIdIdentifier.java +++ b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/SubmissionSetUniqueIdIdentifier.java @@ -23,7 +23,7 @@ // https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.SubmissionSetUniqueIdIdentifier -@DatatypeDef(name = "SubmissionSetUniqueIdIdentifier", profileOf = Identifier.class) +@DatatypeDef(name = "SubmissionSetUniqueIdIdentifier", profileOf = Identifier.class, isSpecialization = true) public class SubmissionSetUniqueIdIdentifier extends UniqueIdIdentifier { public SubmissionSetUniqueIdIdentifier() { @@ -40,4 +40,11 @@ public SubmissionSetUniqueIdIdentifier setValue(Oid oid) { setValue(new URN(oid).toString()); return this; } + + @Override + public SubmissionSetUniqueIdIdentifier copy() { + var dst = new SubmissionSetUniqueIdIdentifier(); + copyValues(dst); + return dst; + } } diff --git a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/UncontainedComprehensiveDocumentReference.java b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/UncontainedComprehensiveDocumentReference.java index 006b9276e7..1abef57612 100644 --- a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/UncontainedComprehensiveDocumentReference.java +++ b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/UncontainedComprehensiveDocumentReference.java @@ -21,11 +21,18 @@ import static org.openehealth.ipf.commons.ihe.fhir.mhd.MhdProfile.UNCONTAINED_COMPREHENSIVE_DOCUMENT_REFERENCE_PROFILE; @ResourceDef(name = "DocumentReference", id = "mhdUncontainedComprehensiveDocumentReference", profile = UNCONTAINED_COMPREHENSIVE_DOCUMENT_REFERENCE_PROFILE) -public class UncontainedComprehensiveDocumentReference> extends MinimalDocumentReference { +public class UncontainedComprehensiveDocumentReference extends AbstractDocumentReference { public UncontainedComprehensiveDocumentReference() { super(); UNCONTAINED_COMPREHENSIVE_DOCUMENT_REFERENCE.setProfile(this); } + @Override + public UncontainedComprehensiveDocumentReference copy() { + var dst = new UncontainedComprehensiveDocumentReference(); + copyValues(dst); + return dst; + } + } diff --git a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/UncontainedComprehensiveProvideDocumentBundle.java b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/UncontainedComprehensiveProvideDocumentBundle.java index aebc8e528f..26b47f6627 100644 --- a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/UncontainedComprehensiveProvideDocumentBundle.java +++ b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/UncontainedComprehensiveProvideDocumentBundle.java @@ -53,4 +53,11 @@ public List getFolders() { return FhirUtils.getResources(this, FolderList.class); } + @Override + public UncontainedComprehensiveProvideDocumentBundle copy() { + var dst = new UncontainedComprehensiveProvideDocumentBundle(); + copyValues(dst); + return dst; + } + } diff --git a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/UncontainedComprehensiveSubmissionSetList.java b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/UncontainedComprehensiveSubmissionSetList.java index 14faa37ec0..b0ef23da82 100644 --- a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/UncontainedComprehensiveSubmissionSetList.java +++ b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/UncontainedComprehensiveSubmissionSetList.java @@ -16,15 +16,23 @@ package org.openehealth.ipf.commons.ihe.fhir.mhd.model; import ca.uhn.fhir.model.api.annotation.ResourceDef; +import org.hl7.fhir.r4.model.ListResource; import static org.openehealth.ipf.commons.ihe.fhir.mhd.MhdProfile.UNCONTAINED_COMPREHENSIVE_SUBMISSIONSET_TYPE_LIST; import static org.openehealth.ipf.commons.ihe.fhir.mhd.MhdProfile.UNCONTAINED_COMPREHENSIVE_SUBMISSIONSET_TYPE_LIST_PROFILE; @ResourceDef(name = "List", id = "mhdUncontainedComprehensiveSubmissionSet", profile = UNCONTAINED_COMPREHENSIVE_SUBMISSIONSET_TYPE_LIST_PROFILE) -public class UncontainedComprehensiveSubmissionSetList> extends SubmissionSetList { +public class UncontainedComprehensiveSubmissionSetList extends SubmissionSetList { public UncontainedComprehensiveSubmissionSetList() { super(); UNCONTAINED_COMPREHENSIVE_SUBMISSIONSET_TYPE_LIST.setProfile(this); } + + @Override + public UncontainedComprehensiveSubmissionSetList copy() { + var dst = new UncontainedComprehensiveSubmissionSetList(); + copyValues(dst); + return dst; + } } diff --git a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/UniqueIdIdentifier.java b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/UniqueIdIdentifier.java index 03c6455a4e..e948604373 100644 --- a/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/UniqueIdIdentifier.java +++ b/commons/ihe/fhir/r4/mhd/src/main/java/org/openehealth/ipf/commons/ihe/fhir/mhd/model/UniqueIdIdentifier.java @@ -16,16 +16,22 @@ package org.openehealth.ipf.commons.ihe.fhir.mhd.model; import ca.uhn.fhir.model.api.annotation.DatatypeDef; -import lombok.Getter; import org.hl7.fhir.r4.model.Identifier; // https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.UniqueIdIdentifier -@DatatypeDef(name = "UniqueIdIdentifier", profileOf = Identifier.class) +@DatatypeDef(name = "UniqueIdIdentifier", profileOf = Identifier.class, isSpecialization = true) public class UniqueIdIdentifier extends Identifier { public UniqueIdIdentifier() { super(); setUse(IdentifierUse.USUAL); } + + @Override + public UniqueIdIdentifier copy() { + var dst = new UniqueIdIdentifier(); + copyValues(dst); + return dst; + } } diff --git a/commons/ihe/fhir/r4/mhd/src/test/java/org/openehealth/ipf/commons/ihe/fhir/mhd/MhdValidatorTest.java b/commons/ihe/fhir/r4/mhd/src/test/java/org/openehealth/ipf/commons/ihe/fhir/mhd/MhdValidatorTest.java index d607c331b6..f6f45b2d10 100644 --- a/commons/ihe/fhir/r4/mhd/src/test/java/org/openehealth/ipf/commons/ihe/fhir/mhd/MhdValidatorTest.java +++ b/commons/ihe/fhir/r4/mhd/src/test/java/org/openehealth/ipf/commons/ihe/fhir/mhd/MhdValidatorTest.java @@ -25,6 +25,7 @@ import org.openehealth.ipf.commons.ihe.fhir.mhd.model.ComprehensiveDocumentReference; import org.openehealth.ipf.commons.ihe.fhir.mhd.model.ComprehensiveProvideDocumentBundle; import org.openehealth.ipf.commons.ihe.fhir.mhd.model.ComprehensiveSubmissionSetList; +import org.openehealth.ipf.commons.ihe.fhir.mhd.model.Source; import java.security.MessageDigest; import java.util.Collections; @@ -46,6 +47,7 @@ public class MhdValidatorTest { @Test public void testBundle() throws Exception { var context = FhirContext.forR4(); + MhdProfile.registerDefaultTypes(context); var bundle = provideAndRegister(); try { var iti65Validator = new MhdValidator(context); @@ -78,7 +80,8 @@ private Bundle provideAndRegister() throws Exception { )) .addIntendedRecipient(new Reference(practitioner)) .setSubject(new Reference("Patient/a2")) - .setTitle("description"); + .setTitle("description") + .setSource(new Source().setAuthorOrg(new Reference("Organization/4711")).setReference("Practitioner/1234")); submissionSetList.getText().setStatus(Narrative.NarrativeStatus.EMPTY); submissionSetList.getText().setDivAsString("
empty
"); diff --git a/commons/ihe/fhir/r4/mhd/src/test/resources/test.json b/commons/ihe/fhir/r4/mhd/src/test/resources/test.json index e913316018..5436b2b7dc 100644 --- a/commons/ihe/fhir/r4/mhd/src/test/resources/test.json +++ b/commons/ihe/fhir/r4/mhd/src/test/resources/test.json @@ -1,184 +1,278 @@ { - "resourceType" : "Bundle", - "id" : "ex-comprehensiveProvideDocumentBundleSimple", - "meta" : { - "profile" : ["https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.Comprehensive.ProvideBundle"], - "security" : [{ - "system" : "http://terminology.hl7.org/CodeSystem/v3-ActReason", - "code" : "HTEST" - }] + "resourceType": "Bundle", + "id": "ex-comprehensiveProvideDocumentBundleSimple", + "meta": { + "profile": [ + "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.Comprehensive.ProvideBundle" + ], + "security": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActReason", + "code": "HTEST" + } + ] }, - "type" : "transaction", - "timestamp" : "2004-10-25T23:50:50-05:00", - "entry" : [{ - "fullUrl" : "urn:uuid:aaaaaaaa-bbbb-cccc-dddd-e00333300001", - "resource" : { - "resourceType" : "List", - "id" : "aaaaaaaa-bbbb-cccc-dddd-e00333300001", - "meta" : { - "profile" : ["https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.Comprehensive.SubmissionSet"], - "security" : [{ - "system" : "http://terminology.hl7.org/CodeSystem/v3-ActReason", - "code" : "HTEST" - }] - }, - "text" : { - "status" : "extensions", - "div" : "
SubmissionSet with Patient
" - }, - "extension" : [{ - "url" : "https://profiles.ihe.net/ITI/MHD/StructureDefinition/ihe-designationType", - "valueCodeableConcept" : { - "coding" : [{ - "system" : "http://snomed.info/sct", - "code" : "225728007" - }] - } - }, - { - "url" : "https://profiles.ihe.net/ITI/MHD/StructureDefinition/ihe-sourceId", - "valueIdentifier" : { - "value" : "urn:oid:1.2.3.4" + "type": "transaction", + "timestamp": "2004-10-25T23:50:50-05:00", + "entry": [ + { + "fullUrl": "urn:uuid:aaaaaaaa-bbbb-cccc-dddd-e00333300001", + "resource": { + "resourceType": "List", + "id": "aaaaaaaa-bbbb-cccc-dddd-e00333300001", + "meta": { + "profile": [ + "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.Comprehensive.SubmissionSet" + ], + "security": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActReason", + "code": "HTEST" + } + ] + }, + "text": { + "status": "extensions", + "div": "
SubmissionSet with Patient
" + }, + "contained" : [ + { + "resourceType" : "Practitioner", + "id" : "in-practitionerRecipient", + "telecom" : [ + { + "system" : "email", + "value" : "JohnMoehrke@gmail.com" + } + ] + }, + { + "resourceType" : "Practitioner", + "id" : "in-practitionerAuthor", + "telecom" : [ + { + "system" : "email", + "value" : "iti@ihe.net" + } + ] + }, + { + "resourceType" : "Organization", + "id" : "in-organizationAuthor", + "name" : "my Hospital" } - }], - "identifier" : [{ - "use" : "usual", - "system" : "urn:ietf:rfc:3986", - "value" : "urn:oid:1.2.840.113556.1.8000.2554.58783.21864.3474.19410.44358.58254.41281.46346" - }], - "status" : "current", - "mode" : "working", - "code" : { - "coding" : [{ - "system" : "https://profiles.ihe.net/ITI/MHD/CodeSystem/MHDlistTypes", - "code" : "submissionset" - }] - }, - "subject" : { - "reference" : "Patient/ex-patient" + ], + "extension": [ + { + "url": "https://profiles.ihe.net/ITI/MHD/StructureDefinition/ihe-designationType", + "valueCodeableConcept": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "225728007" + } + ] + } + }, + { + "url": "https://profiles.ihe.net/ITI/MHD/StructureDefinition/ihe-sourceId", + "valueIdentifier": { + "value": "urn:oid:1.2.3.4" + } + }, + { + "url" : "https://profiles.ihe.net/ITI/MHD/StructureDefinition/ihe-intendedRecipient", + "valueReference" : { + "reference" : "#in-practitionerRecipient" + } + } + ], + "identifier": [ + { + "use": "usual", + "system": "urn:ietf:rfc:3986", + "value": "urn:oid:1.2.840.113556.1.8000.2554.58783.21864.3474.19410.44358.58254.41281.46346" + } + ], + "status": "current", + "mode": "working", + "code": { + "coding": [ + { + "system": "https://profiles.ihe.net/ITI/MHD/CodeSystem/MHDlistTypes", + "code": "submissionset" + } + ] + }, + "subject": { + "reference": "Patient/ex-patient" + }, + "date": "2004-10-25T23:50:50-05:00", + "source" : { + "extension" : [ + { + "url" : "https://profiles.ihe.net/ITI/MHD/StructureDefinition/ihe-authorOrg", + "valueReference" : { + "reference" : "#in-organizationAuthor" + } + } + ], + "reference" : "#in-practitionerAuthor" + }, + "entry": [ + { + "item": { + "reference": "urn:uuid:aaaaaaaa-bbbb-cccc-dddd-e00333300002" + } + } + ] }, - "date" : "2004-10-25T23:50:50-05:00", - "entry" : [{ - "item" : { - "reference" : "urn:uuid:aaaaaaaa-bbbb-cccc-dddd-e00333300002" - } - }] + "request": { + "method": "POST", + "url": "List" + } }, - "request" : { - "method" : "POST", - "url" : "List" - } - }, { - "fullUrl" : "urn:uuid:aaaaaaaa-bbbb-cccc-dddd-e00333300002", - "resource" : { - "resourceType" : "DocumentReference", - "id" : "aaaaaaaa-bbbb-cccc-dddd-e00333300002", - "meta" : { - "profile" : ["https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.Comprehensive.DocumentReference"], - "security" : [{ - "system" : "http://terminology.hl7.org/CodeSystem/v3-ActReason", - "code" : "HTEST" - }] + "fullUrl": "urn:uuid:aaaaaaaa-bbbb-cccc-dddd-e00333300002", + "resource": { + "resourceType": "DocumentReference", + "id": "aaaaaaaa-bbbb-cccc-dddd-e00333300002", + "meta": { + "profile": [ + "https://profiles.ihe.net/ITI/MHD/StructureDefinition/IHE.MHD.Comprehensive.DocumentReference" + ], + "security": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActReason", + "code": "HTEST" + } + ] }, - "text" : { - "status" : "generated", - "div" : "

Generated Narrative: DocumentReference

Resource DocumentReference "aaaaaaaa-bbbb-cccc-dddd-e00333300002"

Profile: MHD DocumentReference Comprehensive

Security Labels: http://terminology.hl7.org/CodeSystem/v3-ActReason

masterIdentifier: id:\u00a0urn:oid:1.2.840.113556.1.8000.2554.53432.348.12973.17740.34205.4355.50220.62012

status: current

type: Patient summary Document (LOINC#60591-5)

category: History of Immunization Narrative (LOINC#11369-6)

subject: Patient/ex-patient " SCHMIDT"

date: Feb 1, 2020, 10:50:50 PM

securityLabel: restricted (Confidentiality#R)

content

Attachments

-ContentTypeLanguageUrlSizeHashTitleCreation
*text/plainenurn:uuid:aaaaaaaa-bbbb-cccc-dddd-e0033330000311(base64 data - 40 bytes)Hello World2020-02-01 23:50:50-0500

format: ITI XDS-SD TEXT (Details: http://ihe.net/fhir/ihe.formatcode.fhir/CodeSystem/formatcode code urn:ihe:iti:xds-sd:text:2008 = 'ITI XDS-SD TEXT', stated as 'null')

Contexts

-FacilityTypePracticeSettingSourcePatientInfo
*Children's hospital (SNOMED CT#82242000)Adult mental illness - specialty (qualifier value) (SNOMED CT#408467006)

identifier: id:\u00a0mrn-1234

name: Dee Schmidt


Dee Schmidt (no stated gender), DoB Unknown ( id:\u00a0mrn-1234)


" + "text": { + "status": "generated", + "div": "

Generated Narrative: DocumentReference

Resource DocumentReference "aaaaaaaa-bbbb-cccc-dddd-e00333300002"

Profile: MHD DocumentReference Comprehensive

Security Labels: http://terminology.hl7.org/CodeSystem/v3-ActReason

masterIdentifier: id:\u00a0urn:oid:1.2.840.113556.1.8000.2554.53432.348.12973.17740.34205.4355.50220.62012

status: current

type: Patient summary Document (LOINC#60591-5)

category: History of Immunization Narrative (LOINC#11369-6)

subject: Patient/ex-patient " SCHMIDT"

date: Feb 1, 2020, 10:50:50 PM

securityLabel: restricted (Confidentiality#R)

content

Attachments

-ContentTypeLanguageUrlSizeHashTitleCreation
*text/plainenurn:uuid:aaaaaaaa-bbbb-cccc-dddd-e0033330000311(base64 data - 40 bytes)Hello World2020-02-01 23:50:50-0500

format: ITI XDS-SD TEXT (Details: http://ihe.net/fhir/ihe.formatcode.fhir/CodeSystem/formatcode code urn:ihe:iti:xds-sd:text:2008 = 'ITI XDS-SD TEXT', stated as 'null')

Contexts

-FacilityTypePracticeSettingSourcePatientInfo
*Children's hospital (SNOMED CT#82242000)Adult mental illness - specialty (qualifier value) (SNOMED CT#408467006)

identifier: id:\u00a0mrn-1234

name: Dee Schmidt


Dee Schmidt (no stated gender), DoB Unknown ( id:\u00a0mrn-1234)


" }, - "contained" : [{ - "resourceType" : "Patient", - "id" : "aaaaaaaa-bbbb-cccc-dddd-e00333300004", - "identifier" : [{ - "system" : "http://example.org/patients", - "value" : "mrn-1234" - }], - "name" : [{ - "family" : "Schmidt", - "given" : ["Dee"] - }] - }], - "masterIdentifier" : { - "system" : "urn:ietf:rfc:3986", - "value" : "urn:oid:1.2.840.113556.1.8000.2554.53432.348.12973.17740.34205.4355.50220.62012" + "contained": [ + { + "resourceType": "Patient", + "id": "aaaaaaaa-bbbb-cccc-dddd-e00333300004", + "identifier": [ + { + "system": "http://example.org/patients", + "value": "mrn-1234" + } + ], + "name": [ + { + "family": "Schmidt", + "given": [ + "Dee" + ] + } + ] + } + ], + "masterIdentifier": { + "system": "urn:ietf:rfc:3986", + "value": "urn:oid:1.2.840.113556.1.8000.2554.53432.348.12973.17740.34205.4355.50220.62012" }, - "status" : "current", - "type" : { - "coding" : [{ - "system" : "http://loinc.org", - "code" : "60591-5" - }] + "status": "current", + "type": { + "coding": [ + { + "system": "http://loinc.org", + "code": "60591-5" + } + ] }, - "category" : [{ - "coding" : [{ - "system" : "http://loinc.org", - "code" : "11369-6" - }] - }], - "subject" : { - "reference" : "Patient/ex-patient" + "category": [ + { + "coding": [ + { + "system": "http://loinc.org", + "code": "11369-6" + } + ] + } + ], + "subject": { + "reference": "Patient/ex-patient" }, - "date" : "2020-02-01T23:50:50-05:00", - "securityLabel" : [{ - "coding" : [{ - "system" : "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", - "code" : "R" - }] - }], - "content" : [{ - "attachment" : { - "contentType" : "text/plain", - "language" : "en", - "url" : "urn:uuid:aaaaaaaa-bbbb-cccc-dddd-e00333300003", - "size" : 11, - "hash" : "MGE0ZDU1YThkNzc4ZTUwMjJmYWI3MDE5NzdjNWQ4NDBiYmM0ODZkMA==", - "title" : "Hello World", - "creation" : "2020-02-01T23:50:50-05:00" - }, - "format" : { - "system" : "http://ihe.net/fhir/ihe.formatcode.fhir/CodeSystem/formatcode", - "code" : "urn:ihe:iti:xds-sd:text:2008" + "date": "2020-02-01T23:50:50-05:00", + "securityLabel": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-Confidentiality", + "code": "R" + } + ] + } + ], + "content": [ + { + "attachment": { + "contentType": "text/plain", + "language": "en", + "url": "urn:uuid:aaaaaaaa-bbbb-cccc-dddd-e00333300003", + "size": 11, + "hash": "MGE0ZDU1YThkNzc4ZTUwMjJmYWI3MDE5NzdjNWQ4NDBiYmM0ODZkMA==", + "title": "Hello World", + "creation": "2020-02-01T23:50:50-05:00" + }, + "format": { + "system": "http://ihe.net/fhir/ihe.formatcode.fhir/CodeSystem/formatcode", + "code": "urn:ihe:iti:xds-sd:text:2008" + } } - }], - "context" : { - "facilityType" : { - "coding" : [{ - "system" : "http://snomed.info/sct", - "code" : "82242000" - }] + ], + "context": { + "facilityType": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "82242000" + } + ] }, - "practiceSetting" : { - "coding" : [{ - "system" : "http://snomed.info/sct", - "code" : "408467006" - }] + "practiceSetting": { + "coding": [ + { + "system": "http://snomed.info/sct", + "code": "408467006" + } + ] }, - "sourcePatientInfo" : { - "reference" : "#aaaaaaaa-bbbb-cccc-dddd-e00333300004" + "sourcePatientInfo": { + "reference": "#aaaaaaaa-bbbb-cccc-dddd-e00333300004" } } }, - "request" : { - "method" : "POST", - "url" : "DocumentReference" + "request": { + "method": "POST", + "url": "DocumentReference" } }, { - "fullUrl" : "urn:uuid:aaaaaaaa-bbbb-cccc-dddd-e00333300003", - "resource" : { - "resourceType" : "Binary", - "id" : "aaaaaaaa-bbbb-cccc-dddd-e00333300003", - "meta" : { - "security" : [{ - "system" : "http://terminology.hl7.org/CodeSystem/v3-ActReason", - "code" : "HTEST" - }] + "fullUrl": "urn:uuid:aaaaaaaa-bbbb-cccc-dddd-e00333300003", + "resource": { + "resourceType": "Binary", + "id": "aaaaaaaa-bbbb-cccc-dddd-e00333300003", + "meta": { + "security": [ + { + "system": "http://terminology.hl7.org/CodeSystem/v3-ActReason", + "code": "HTEST" + } + ] }, - "contentType" : "text/plain", - "data" : "SGVsbG8gV29ybGQ=" + "contentType": "text/plain", + "data": "SGVsbG8gV29ybGQ=" }, - "request" : { - "method" : "POST", - "url" : "Binary" + "request": { + "method": "POST", + "url": "Binary" } - }] + } + ] } \ No newline at end of file