1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.openehealth.ipf.platform.camel.ihe.hl7v3;
17
18 import org.apache.camel.Exchange;
19 import org.apache.camel.Processor;
20 import org.openehealth.ipf.commons.ihe.hl7v3.Hl7v3InteractionId;
21 import org.openehealth.ipf.commons.xml.CombinedXmlValidator;
22
23 import static org.openehealth.ipf.commons.ihe.hl7v3.PDQV3.Interactions.ITI_47;
24 import static org.openehealth.ipf.commons.ihe.hl7v3.PIXV3.Interactions.ITI_44_PIX;
25 import static org.openehealth.ipf.commons.ihe.hl7v3.PIXV3.Interactions.ITI_45;
26 import static org.openehealth.ipf.commons.ihe.hl7v3.PIXV3.Interactions.ITI_46;
27 import static org.openehealth.ipf.commons.ihe.hl7v3.QED.Interactions.PCC_1;
28 import static org.openehealth.ipf.commons.ihe.hl7v3.XCPD.Interactions.ITI_55;
29 import static org.openehealth.ipf.commons.ihe.hl7v3.XCPD.Interactions.ITI_56;
30 import static org.openehealth.ipf.platform.camel.core.adapter.ValidatorAdapter.validationEnabled;
31
32
33
34
35
36 abstract public class PixPdqV3CamelValidators {
37 private static final CombinedXmlValidator VALIDATOR = new CombinedXmlValidator();
38
39 private static final Processor ITI_44_REQUEST_VALIDATOR = validatingProcessor(ITI_44_PIX, true);
40 private static final Processor ITI_44_RESPONSE_VALIDATOR = validatingProcessor(ITI_44_PIX, false);
41 private static final Processor ITI_45_REQUEST_VALIDATOR = validatingProcessor(ITI_45, true);
42 private static final Processor ITI_45_RESPONSE_VALIDATOR = validatingProcessor(ITI_45, false);
43 private static final Processor ITI_46_REQUEST_VALIDATOR = validatingProcessor(ITI_46, true);
44 private static final Processor ITI_46_RESPONSE_VALIDATOR = validatingProcessor(ITI_46, false);
45 private static final Processor ITI_47_REQUEST_VALIDATOR = validatingProcessor(ITI_47, true);
46 private static final Processor ITI_47_RESPONSE_VALIDATOR = validatingProcessor(ITI_47, false);
47
48 private static final Processor ITI_55_REQUEST_VALIDATOR = validatingProcessor(ITI_55, true);
49 private static final Processor ITI_55_RESPONSE_VALIDATOR = validatingProcessor(ITI_55, false);
50 private static final Processor ITI_56_REQUEST_VALIDATOR = validatingProcessor(ITI_56, true);
51 private static final Processor ITI_56_RESPONSE_VALIDATOR = validatingProcessor(ITI_56, false);
52
53 private static final Processor PCC_1_REQUEST_VALIDATOR = validatingProcessor(PCC_1, true);
54 private static final Processor PCC_1_RESPONSE_VALIDATOR = validatingProcessor(PCC_1, false);
55
56
57
58
59
60
61 public static Processor iti44RequestValidator() {
62 return ITI_44_REQUEST_VALIDATOR;
63 }
64
65
66
67
68
69 public static Processor iti44ResponseValidator() {
70 return ITI_44_RESPONSE_VALIDATOR;
71 }
72
73
74
75
76
77 public static Processor iti45RequestValidator() {
78 return ITI_45_REQUEST_VALIDATOR;
79 }
80
81
82
83
84
85 public static Processor iti45ResponseValidator() {
86 return ITI_45_RESPONSE_VALIDATOR;
87 }
88
89
90
91
92
93 public static Processor iti46RequestValidator() {
94 return ITI_46_REQUEST_VALIDATOR;
95 }
96
97
98
99
100
101 public static Processor iti46ResponseValidator() {
102 return ITI_46_RESPONSE_VALIDATOR;
103 }
104
105
106
107
108
109 public static Processor iti47RequestValidator() {
110 return ITI_47_REQUEST_VALIDATOR;
111 }
112
113
114
115
116
117 public static Processor iti47ResponseValidator() {
118 return ITI_47_RESPONSE_VALIDATOR;
119 }
120
121
122
123
124
125 public static Processor iti55RequestValidator() {
126 return ITI_55_REQUEST_VALIDATOR;
127 }
128
129
130
131
132
133 public static Processor iti55ResponseValidator() {
134 return ITI_55_RESPONSE_VALIDATOR;
135 }
136
137
138
139
140
141 public static Processor iti56RequestValidator() {
142 return ITI_56_REQUEST_VALIDATOR;
143 }
144
145
146
147
148
149 public static Processor iti56ResponseValidator() {
150 return ITI_56_RESPONSE_VALIDATOR;
151 }
152
153
154
155
156
157 public static Processor pcc1RequestValidator() {
158 return PCC_1_REQUEST_VALIDATOR;
159 }
160
161
162
163
164
165 public static Processor pcc1ResponseValidator() {
166 return PCC_1_RESPONSE_VALIDATOR;
167 }
168
169
170 private static Processor validatingProcessor(
171 final Hl7v3InteractionId interactionId,
172 final boolean request)
173 {
174 return exchange -> doValidation(exchange, interactionId, request);
175 }
176
177 private static void doValidation(
178 Exchange exchange,
179 Hl7v3InteractionId interactionId,
180 boolean request)
181 {
182 if (! validationEnabled(exchange)) {
183 return;
184 }
185 String message = exchange.getIn().getBody(String.class);
186 VALIDATOR.validate(message, request
187 ? interactionId.getRequestValidationProfile()
188 : interactionId.getResponseValidationProfile());
189 }
190 }