1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.openehealth.ipf.commons.ihe.xds.core.transform.requests.ebxml30;
17
18 import org.junit.Before;
19 import org.junit.Test;
20 import org.openehealth.ipf.commons.ihe.xds.core.SampleData;
21 import org.openehealth.ipf.commons.ihe.xds.core.ebxml.EbXMLAdhocQueryRequest;
22 import org.openehealth.ipf.commons.ihe.xds.core.ebxml.EbXMLSlot;
23 import org.openehealth.ipf.commons.ihe.xds.core.ebxml.ebxml30.EbXMLFactory30;
24 import org.openehealth.ipf.commons.ihe.xds.core.requests.query.FindDocumentsForMultiplePatientsQuery;
25 import org.openehealth.ipf.commons.ihe.xds.core.requests.query.FindDocumentsQuery;
26 import org.openehealth.ipf.commons.ihe.xds.core.requests.query.QueryType;
27 import org.openehealth.ipf.commons.ihe.xds.core.transform.requests.QueryParameter;
28 import org.openehealth.ipf.commons.ihe.xds.core.transform.requests.query.FindDocumentsForMultiplePatientsQueryTransformer;
29 import org.openehealth.ipf.commons.ihe.xds.core.transform.requests.query.FindDocumentsQueryTransformer;
30
31 import java.util.Arrays;
32 import java.util.Collections;
33 import java.util.List;
34
35 import static org.junit.Assert.assertEquals;
36
37
38
39
40
41
42 public class FindDocumentsQueryTransformerTest {
43 private FindDocumentsQueryTransformer<FindDocumentsQuery> transformer;
44 private FindDocumentsForMultiplePatientsQueryTransformer multiplePatientsQueryTransformer;
45 private FindDocumentsForMultiplePatientsQuery multiplePatientsQuery;
46 private FindDocumentsQuery query;
47 private EbXMLAdhocQueryRequest ebXML;
48
49 @Before
50 public void setUp() {
51 transformer = new FindDocumentsQueryTransformer<>();
52 query = (FindDocumentsQuery)SampleData.createFindDocumentsQuery().getQuery();
53 multiplePatientsQueryTransformer = new FindDocumentsForMultiplePatientsQueryTransformer();
54 multiplePatientsQuery = (FindDocumentsForMultiplePatientsQuery)SampleData.createFindDocumentsForMultiplePatientsQuery().getQuery();
55
56 ebXML = new EbXMLFactory30().createAdhocQueryRequest();
57 }
58
59 @Test
60 public void testToEbXML() {
61 transformer.toEbXML(query, ebXML);
62 assertEquals(QueryType.FIND_DOCUMENTS.getId(), ebXML.getId());
63 assertEquals("12.21.41", ebXML.getHome());
64 assertEquals(Collections.singletonList("'id3^^^&1.3&ISO'"),
65 ebXML.getSlotValues(QueryParameter.DOC_ENTRY_PATIENT_ID.getSlotName()));
66 checkEbXML(ebXML, 21);
67 }
68
69 @Test
70 public void testToEbXML_MPQ() {
71 multiplePatientsQueryTransformer.toEbXML(multiplePatientsQuery, ebXML);
72 assertEquals(QueryType.FIND_DOCUMENTS_MPQ.getId(), ebXML.getId());
73 assertEquals(Arrays.asList("('id3^^^&1.3&ISO')", "('id4^^^&1.4&ISO')"),
74 ebXML.getSlotValues(QueryParameter.DOC_ENTRY_PATIENT_ID.getSlotName()));
75 checkEbXML(ebXML, 19);
76 }
77
78 private static void checkEbXML(EbXMLAdhocQueryRequest ebXML, int expectedSlots) {
79 assertEquals("12.21.41", ebXML.getHome());
80
81 assertEquals(Arrays.asList("('code1^^scheme1')", "('code2^^scheme2')"),
82 ebXML.getSlotValues(QueryParameter.DOC_ENTRY_CLASS_CODE.getSlotName()));
83
84 assertEquals(Arrays.asList("('codet1^^schemet1')", "('codet2^^schemet2')"),
85 ebXML.getSlotValues(QueryParameter.DOC_ENTRY_TYPE_CODE.getSlotName()));
86
87 assertEquals(Arrays.asList("('code3^^scheme3')", "('code4^^scheme4')"),
88 ebXML.getSlotValues(QueryParameter.DOC_ENTRY_PRACTICE_SETTING_CODE.getSlotName()));
89
90 assertEquals(Collections.singletonList("1980"),
91 ebXML.getSlotValues(QueryParameter.DOC_ENTRY_CREATION_TIME_FROM.getSlotName()));
92 assertEquals(Collections.singletonList("1981"),
93 ebXML.getSlotValues(QueryParameter.DOC_ENTRY_CREATION_TIME_TO.getSlotName()));
94
95 assertEquals(Collections.singletonList("1982"),
96 ebXML.getSlotValues(QueryParameter.DOC_ENTRY_SERVICE_START_TIME_FROM.getSlotName()));
97 assertEquals(Collections.singletonList("1983"),
98 ebXML.getSlotValues(QueryParameter.DOC_ENTRY_SERVICE_START_TIME_TO.getSlotName()));
99
100 assertEquals(Collections.singletonList("1984"),
101 ebXML.getSlotValues(QueryParameter.DOC_ENTRY_SERVICE_STOP_TIME_FROM.getSlotName()));
102 assertEquals(Collections.singletonList("1985"),
103 ebXML.getSlotValues(QueryParameter.DOC_ENTRY_SERVICE_STOP_TIME_TO.getSlotName()));
104
105 assertEquals(Arrays.asList("('code5^^scheme5')", "('code6^^scheme6')"),
106 ebXML.getSlotValues(QueryParameter.DOC_ENTRY_HEALTHCARE_FACILITY_TYPE_CODE.getSlotName()));
107
108 List<EbXMLSlot> slots = ebXML.getSlots(QueryParameter.DOC_ENTRY_EVENT_CODE.getSlotName());
109 assertEquals(2, slots.size());
110 assertEquals(Arrays.asList("('code7^^scheme7')", "('code8^^scheme8')"), slots.get(0).getValueList());
111 assertEquals(Collections.singletonList("('code9^^scheme9')"), slots.get(1).getValueList());
112
113 slots = ebXML.getSlots(QueryParameter.DOC_ENTRY_CONFIDENTIALITY_CODE.getSlotName());
114 assertEquals(2, slots.size());
115 assertEquals(Arrays.asList("('code10^^scheme10')", "('code11^^scheme11')"), slots.get(0).getValueList());
116 assertEquals(Collections.singletonList("('code12^^scheme12')"), slots.get(1).getValueList());
117
118 assertEquals(Arrays.asList("('per''son1')", "('person2')"),
119 ebXML.getSlotValues(QueryParameter.DOC_ENTRY_AUTHOR_PERSON.getSlotName()));
120
121 assertEquals(Arrays.asList("('code13^^scheme13')", "('code14^^scheme14')"),
122 ebXML.getSlotValues(QueryParameter.DOC_ENTRY_FORMAT_CODE.getSlotName()));
123
124 assertEquals(Arrays.asList("('urn:oasis:names:tc:ebxml-regrep:StatusType:Approved')", "('urn:oasis:names:tc:ebxml-regrep:StatusType:Submitted')"),
125 ebXML.getSlotValues(QueryParameter.DOC_ENTRY_STATUS.getSlotName()));
126
127 assertEquals(Collections.singletonList("('urn:uuid:7edca82f-054d-47f2-a032-9b2a5b5186c1')"),
128 ebXML.getSlotValues(QueryParameter.DOC_ENTRY_TYPE.getSlotName()));
129
130 assertEquals(expectedSlots, ebXML.getSlots().size());
131 }
132
133 @Test
134 public void testToEbXMLNull() {
135 transformer.toEbXML(null, ebXML);
136 assertEquals(0, ebXML.getSlots().size());
137 }
138
139 @Test
140 public void testToEbXMLNull_MPQ() {
141 multiplePatientsQueryTransformer.toEbXML(null,ebXML);
142 assertEquals(0, ebXML.getSlots().size());
143 }
144
145 @Test
146 public void testToEbXMLEmpty() {
147 transformer.toEbXML(new FindDocumentsQuery(), ebXML);
148 assertEquals(0, ebXML.getSlots().size());
149 }
150 @Test
151 public void testToEbXMLEmpty_MPQ() {
152 multiplePatientsQueryTransformer.toEbXML(new FindDocumentsForMultiplePatientsQuery(),ebXML);
153 assertEquals(0, ebXML.getSlots().size());
154 }
155
156 @Test
157 public void testFromEbXML() {
158 transformer.toEbXML(query, ebXML);
159 FindDocumentsQuery result = new FindDocumentsQuery();
160 transformer.fromEbXML(result, ebXML);
161 assertEquals(query, result);
162 }
163
164 @Test
165 public void testFromEbXML_MPQ() {
166 multiplePatientsQueryTransformer.toEbXML(multiplePatientsQuery,ebXML);
167 FindDocumentsForMultiplePatientsQuery mpResult = new FindDocumentsForMultiplePatientsQuery();
168 multiplePatientsQueryTransformer.fromEbXML(mpResult,ebXML);
169 assertEquals(multiplePatientsQuery,mpResult);
170 }
171
172 @Test
173 public void testFromEbXMLNull() {
174 FindDocumentsQuery result = new FindDocumentsQuery();
175 transformer.fromEbXML(result, null);
176 assertEquals(new FindDocumentsQuery(), result);
177 }
178
179 @Test
180 public void testFromEbXMLNull_MPQ() {
181 FindDocumentsForMultiplePatientsQuery result = new FindDocumentsForMultiplePatientsQuery();
182 multiplePatientsQueryTransformer.fromEbXML(result, null);
183 assertEquals(new FindDocumentsForMultiplePatientsQuery(), result);
184 }
185
186 @Test
187 public void testFromEbXMLEmpty() {
188 FindDocumentsQuery result = new FindDocumentsQuery();
189 transformer.fromEbXML(result, ebXML);
190 assertEquals(new FindDocumentsQuery(), result);
191 }
192
193 @Test
194 public void testFromEbXMLEmpty_MPQ() {
195 FindDocumentsForMultiplePatientsQuery result = new FindDocumentsForMultiplePatientsQuery();
196 multiplePatientsQueryTransformer.fromEbXML(result, ebXML);
197 assertEquals(new FindDocumentsForMultiplePatientsQuery(), result);
198 }
199 }