View Javadoc
1   /*
2    * Copyright 2009 the original author or authors.
3    * 
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *     http://www.apache.org/licenses/LICENSE-2.0
9    *     
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
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   * Tests for {@link FindDocumentsQueryTransformer} and {@link FindDocumentsForMultiplePatientsQueryTransformer}
39   * @author Jens Riemschneider
40   * @author Michael Ottati
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 }