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.query;
17
18 import org.openehealth.ipf.commons.ihe.xds.core.ebxml.EbXMLAdhocQueryRequest;
19 import org.openehealth.ipf.commons.ihe.xds.core.requests.query.DocumentsQuery;
20
21 import static org.openehealth.ipf.commons.ihe.xds.core.metadata.Timestamp.toHL7;
22 import static org.openehealth.ipf.commons.ihe.xds.core.transform.requests.QueryParameter.*;
23
24
25
26
27
28 abstract class DocumentsQueryTransformer<T extends DocumentsQuery> extends AbstractStoredQueryTransformer<T> {
29
30
31
32
33
34
35
36
37
38
39 public void toEbXML(T query, EbXMLAdhocQueryRequest ebXML) {
40 if (query == null || ebXML == null) {
41 return;
42 }
43
44 super.toEbXML(query, ebXML);
45
46 QuerySlotHelper slots = new QuerySlotHelper(ebXML);
47
48 slots.fromStringList(DOC_ENTRY_AUTHOR_PERSON, query.getAuthorPersons());
49
50 slots.fromNumber(DOC_ENTRY_CREATION_TIME_FROM, toHL7(query.getCreationTime().getFrom()));
51 slots.fromNumber(DOC_ENTRY_CREATION_TIME_TO, toHL7(query.getCreationTime().getTo()));
52
53 slots.fromNumber(DOC_ENTRY_SERVICE_START_TIME_FROM, toHL7(query.getServiceStartTime().getFrom()));
54 slots.fromNumber(DOC_ENTRY_SERVICE_START_TIME_TO, toHL7(query.getServiceStartTime().getTo()));
55
56 slots.fromNumber(DOC_ENTRY_SERVICE_STOP_TIME_FROM, toHL7(query.getServiceStopTime().getFrom()));
57 slots.fromNumber(DOC_ENTRY_SERVICE_STOP_TIME_TO, toHL7(query.getServiceStopTime().getTo()));
58
59 slots.fromCode(DOC_ENTRY_FORMAT_CODE, query.getFormatCodes());
60 slots.fromCode(DOC_ENTRY_CLASS_CODE, query.getClassCodes());
61 slots.fromCode(DOC_ENTRY_TYPE_CODE, query.getTypeCodes());
62 slots.fromCode(DOC_ENTRY_HEALTHCARE_FACILITY_TYPE_CODE, query.getHealthcareFacilityTypeCodes());
63 slots.fromCode(DOC_ENTRY_PRACTICE_SETTING_CODE, query.getPracticeSettingCodes());
64 slots.fromCode(DOC_ENTRY_EVENT_CODE, query.getEventCodes());
65 slots.fromCode(DOC_ENTRY_CONFIDENTIALITY_CODE, query.getConfidentialityCodes());
66 }
67
68
69
70
71
72
73
74
75
76
77 public void fromEbXML(T query, EbXMLAdhocQueryRequest ebXML) {
78 if (query == null || ebXML == null) {
79 return;
80 }
81
82 super.fromEbXML(query, ebXML);
83
84 QuerySlotHelper slots = new QuerySlotHelper(ebXML);
85
86 query.setClassCodes(slots.toCodeList(DOC_ENTRY_CLASS_CODE));
87 query.setTypeCodes(slots.toCodeList(DOC_ENTRY_TYPE_CODE));
88 query.setPracticeSettingCodes(slots.toCodeList(DOC_ENTRY_PRACTICE_SETTING_CODE));
89 query.setHealthcareFacilityTypeCodes(slots.toCodeList(DOC_ENTRY_HEALTHCARE_FACILITY_TYPE_CODE));
90 query.setFormatCodes(slots.toCodeList(DOC_ENTRY_FORMAT_CODE));
91
92 query.setEventCodes(slots.toCodeQueryList(DOC_ENTRY_EVENT_CODE, DOC_ENTRY_EVENT_CODE_SCHEME));
93 query.setConfidentialityCodes(slots.toCodeQueryList(DOC_ENTRY_CONFIDENTIALITY_CODE, DOC_ENTRY_CONFIDENTIALITY_CODE_SCHEME));
94
95 query.setAuthorPersons(slots.toStringList(DOC_ENTRY_AUTHOR_PERSON));
96
97 query.getCreationTime().setFrom(slots.toNumber(DOC_ENTRY_CREATION_TIME_FROM));
98 query.getCreationTime().setTo(slots.toNumber(DOC_ENTRY_CREATION_TIME_TO));
99
100 query.getServiceStartTime().setFrom(slots.toNumber(DOC_ENTRY_SERVICE_START_TIME_FROM));
101 query.getServiceStartTime().setTo(slots.toNumber(DOC_ENTRY_SERVICE_START_TIME_TO));
102
103 query.getServiceStopTime().setFrom(slots.toNumber(DOC_ENTRY_SERVICE_STOP_TIME_FROM));
104 query.getServiceStopTime().setTo(slots.toNumber(DOC_ENTRY_SERVICE_STOP_TIME_TO));
105 }
106 }