From 01e9d769ad94897cdc856a9c235c743ed373f931 Mon Sep 17 00:00:00 2001 From: reagan-meant Date: Tue, 5 Nov 2019 09:47:56 +0300 Subject: [PATCH] META-268: Enabled saving Term-B before importing ConceptReferenceTermMaps --- .../impl/ConceptReferenceTermHandler.java | 3 + .../impl/ConceptReferenceTermMapHandler.java | 40 +++++ .../impl/ConceptReferenceTermHandlerTest.java | 70 ++++++++ .../mds-concept-reference-terms-header.xml | 132 ++++++++++++++ .../mds-concept-reference-terms-metadata.xml | 161 ++++++++++++++++++ 5 files changed, 406 insertions(+) create mode 100644 api-common/src/main/java/org/openmrs/module/metadatasharing/handler/impl/ConceptReferenceTermMapHandler.java create mode 100644 api-test/src/test/java/org/openmrs/module/metadatasharing/handler/impl/ConceptReferenceTermHandlerTest.java create mode 100644 api-test/src/test/resources/mds-concept-reference-terms-header.xml create mode 100644 api-test/src/test/resources/mds-concept-reference-terms-metadata.xml diff --git a/api-common/src/main/java/org/openmrs/module/metadatasharing/handler/impl/ConceptReferenceTermHandler.java b/api-common/src/main/java/org/openmrs/module/metadatasharing/handler/impl/ConceptReferenceTermHandler.java index 39d11bfd..257a63bb 100644 --- a/api-common/src/main/java/org/openmrs/module/metadatasharing/handler/impl/ConceptReferenceTermHandler.java +++ b/api-common/src/main/java/org/openmrs/module/metadatasharing/handler/impl/ConceptReferenceTermHandler.java @@ -42,6 +42,9 @@ public List getPriorityDependencies(ConceptReferenceTerm object) { if (object.getConceptSource() != null) { result.add(object.getConceptSource()); } + if(object.getConceptReferenceTermMaps() != null) { + result.addAll(object.getConceptReferenceTermMaps()); + } return result; } diff --git a/api-common/src/main/java/org/openmrs/module/metadatasharing/handler/impl/ConceptReferenceTermMapHandler.java b/api-common/src/main/java/org/openmrs/module/metadatasharing/handler/impl/ConceptReferenceTermMapHandler.java new file mode 100644 index 00000000..f4896d5a --- /dev/null +++ b/api-common/src/main/java/org/openmrs/module/metadatasharing/handler/impl/ConceptReferenceTermMapHandler.java @@ -0,0 +1,40 @@ +/** + * The contents of this file are subject to the OpenMRS Public License + * Version 1.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://license.openmrs.org + * + * Software distributed under the License is distributed on an "AS IS" + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + * License for the specific language governing rights and limitations + * under the License. + * + * Copyright (C) OpenMRS, LLC. All Rights Reserved. + */ +package org.openmrs.module.metadatasharing.handler.impl; + +import java.util.ArrayList; +import java.util.List; + +import org.openmrs.ConceptReferenceTermMap; +import org.openmrs.module.metadatasharing.handler.MetadataPriorityDependenciesHandler; +import org.springframework.stereotype.Component; + +@Component("metadatasharing.ConceptReferenceTermMapHandler") +public class ConceptReferenceTermMapHandler implements MetadataPriorityDependenciesHandler { + + @Override + public int getPriority() { + return 0; + } + + @Override + public List getPriorityDependencies(ConceptReferenceTermMap object) { + Listresult=new ArrayList(); + if (object.getTermB() != null) { + result.add(object.getTermB()); + } + return result; + } + +} diff --git a/api-test/src/test/java/org/openmrs/module/metadatasharing/handler/impl/ConceptReferenceTermHandlerTest.java b/api-test/src/test/java/org/openmrs/module/metadatasharing/handler/impl/ConceptReferenceTermHandlerTest.java new file mode 100644 index 00000000..aee81a25 --- /dev/null +++ b/api-test/src/test/java/org/openmrs/module/metadatasharing/handler/impl/ConceptReferenceTermHandlerTest.java @@ -0,0 +1,70 @@ +package org.openmrs.module.metadatasharing.handler.impl; + +import java.io.File; +import java.io.IOException; +import java.util.UUID; + +import org.apache.commons.io.FileUtils; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.openmrs.api.ConceptService; +import org.openmrs.api.context.Context; +import org.openmrs.module.metadatasharing.MetadataSharing; +import org.openmrs.module.metadatasharing.SerializedPackage; +import org.openmrs.module.metadatasharing.wrapper.PackageImporter; +import org.openmrs.test.BaseModuleContextSensitiveTest; + +public class ConceptReferenceTermHandlerTest extends BaseModuleContextSensitiveTest { + + private ConceptService conceptService; + + public static final String CONCEPT_SOURCE_UUID = UUID.randomUUID().toString(); + + public static final String CONCEPT_REFERENCE_TERMS_HEADER = "mds-concept-reference-terms-header.xml"; + + public static final String CONCEPT_REFERENCE_TERMS_METADATA = "mds-concept-reference-terms-metadata.xml"; + + private String headerXml; + + private String contentXml; + + @Before + public void before() throws IOException { + File file1 = new File(ClassLoader.getSystemResource(CONCEPT_REFERENCE_TERMS_HEADER).getPath()); + File file2 = new File(ClassLoader.getSystemResource(CONCEPT_REFERENCE_TERMS_METADATA).getPath()); + + headerXml = FileUtils.readFileToString(file1, "UTF-8"); + contentXml = FileUtils.readFileToString(file2, "UTF-8"); + + conceptService = Context.getConceptService(); + + PackageImporter metadataImporter = MetadataSharing.getInstance().newPackageImporter(); + metadataImporter.loadSerializedPackage(new SerializedPackage(headerXml, contentXml)); + metadataImporter.importPackage(); + } + + @Test + public void shouldImport() { + Assert.assertNotNull("useless concept exists?", conceptService.getConcept("useless")); + Assert.assertEquals("useless", conceptService.getConcept("useless").getName().getName()); + + } + + @Test + public void shouldSaveTermA(){ + Assert.assertEquals("name-1", + conceptService.getConceptReferenceTermByUuid("e6be7ef5-29bd-487e-b13f-6749f7e6616b").getName()); + Assert.assertEquals("CODE-1", + conceptService.getConceptReferenceTermByUuid("e6be7ef5-29bd-487e-b13f-6749f7e6616b").getCode()); + } + + @Test + public void shouldSaveTermB() { + Assert.assertEquals("name-2", + conceptService.getConceptReferenceTermByUuid("a26bea69-1102-4b38-9f7e-4aaf28a2ae44").getName()); + Assert.assertEquals("CODE-2", + conceptService.getConceptReferenceTermByUuid("a26bea69-1102-4b38-9f7e-4aaf28a2ae44").getCode()); + } + +} diff --git a/api-test/src/test/resources/mds-concept-reference-terms-header.xml b/api-test/src/test/resources/mds-concept-reference-terms-header.xml new file mode 100644 index 00000000..8dac7d65 --- /dev/null +++ b/api-test/src/test/resources/mds-concept-reference-terms-header.xml @@ -0,0 +1,132 @@ + + + 2012-08-29 12:04:32 + useless-concept + useless concept export + 1.9.0 Build 27760 + 1 + 1d181738-f2b2-4ed8-a087-da2a67092f14 + + + htmlwidgets + 1.6.0 + + + reportingcompatibility + 1.5.7 + + + xforms + 4.0.9.5 + + + htmlformentry + 1.9.3 + + + htmlformentry19ext + 0.9 + + + metadatasharing + 1.1-SNAPSHOT + + + patientflags + 1.3.4 + + + reporting + 0.7.1.1 + + + logic + 0.5.2 + + + serialization.xstream + 0.2.5 + + + + + 6099 + org.openmrs.Concept + 2012-08-29 12:03:49 + false + + + + + 4 + org.openmrs.ConceptDatatype + 2004-02-02 00:00:00 + false + + + 1 + org.openmrs.ConceptClass + 2004-02-02 00:00:00 + false + + + 3461 + org.openmrs.ConceptName + 2012-08-29 12:03:49 + + + 3462 + org.openmrs.ConceptName + 2012-08-29 12:03:49 + + + 3464 + org.openmrs.ConceptName + 2012-08-29 12:03:49 + + + 3463 + org.openmrs.ConceptName + 2012-08-29 12:03:49 + + + 2425 + org.openmrs.ConceptDescription + 2012-08-29 12:03:49 + + + 1 + org.openmrs.ConceptMap + 2012-08-29 12:03:49 + + + 1 + org.openmrs.ConceptMapType + 2011-11-04 00:00:00 + false + + + 1 + org.openmrs.ConceptReferenceTerm + 2012-08-29 12:01:20 + false + + + 1 + org.openmrs.ConceptSource + 2012-08-29 11:54:40 + false + + + 1 + org.openmrs.ConceptReferenceTermMap + 2012-08-29 12:02:56 + + + 2 + org.openmrs.ConceptReferenceTerm + 2012-08-29 12:03:25 + false + + + diff --git a/api-test/src/test/resources/mds-concept-reference-terms-metadata.xml b/api-test/src/test/resources/mds-concept-reference-terms-metadata.xml new file mode 100644 index 00000000..3762b396 --- /dev/null +++ b/api-test/src/test/resources/mds-concept-reference-terms-metadata.xml @@ -0,0 +1,161 @@ + + + + 6099 + false + + N/A + Not associated with a datatype (e.g., term answers, sets) + + 2004-02-02 00:00:00 + false + 4 + ZZ + + + Test + Acq. during patient encounter (vitals, labs, etc.) + + 2004-02-02 00:00:00 + false + 1 + + false + 1.0 + + 2012-08-29 12:03:49 + + + 3461 + + useless short + en + + 2012-08-29 12:03:49 + false + + SHORT + false + + + 3462 + + useless + en + + 2012-08-29 12:03:49 + false + + FULLY_SPECIFIED + true + + + 3463 + + useless term + en + + 2012-08-29 12:03:49 + false + + INDEX_TERM + false + + + 3464 + + useless synonym + en + + 2012-08-29 12:03:49 + false + + false + + + + + + + 2425 + + useless description + en + + 2012-08-29 12:03:49 + + + + + + NARROWER-THAN + + 2011-11-04 00:00:00 + false + 2 + false + + + + false + + openmrs-standalone-1-9-1 + Test source for 1.9.1 + + 2012-08-29 11:54:40 + false + 1 + OSTAND-1-9-1 + + 6099 + + + + + + SAME-AS + + 2011-11-04 00:00:00 + false + 1 + false + + + 2012-08-29 12:03:49 + 1 + + + name-1 + description-1 + + 2012-08-29 12:01:20 + false + 1 + + CODE-1 + + + + + 2012-08-29 12:02:56 + 1 + + + name-2 + + 2012-08-29 12:02:16 + + 2012-08-29 12:03:25 + false + 2 + + CODE-2 + + + + + + + + +