11package de .netzwerk_universitaetsmedizin .codex .processes .fhir .profile ;
22
33import static de .netzwerk_universitaetsmedizin .codex .processes .data_transfer .ConstantsDataTransfer .CODESYSTEM_NUM_CODEX_DATA_TRANSFER ;
4+ import static de .netzwerk_universitaetsmedizin .codex .processes .data_transfer .ConstantsDataTransfer .CODESYSTEM_NUM_CODEX_DATA_TRANSFER_VALUE_DATA_REFERENCE ;
45import static de .netzwerk_universitaetsmedizin .codex .processes .data_transfer .ConstantsDataTransfer .CODESYSTEM_NUM_CODEX_DATA_TRANSFER_VALUE_EXPORT_FROM ;
56import static de .netzwerk_universitaetsmedizin .codex .processes .data_transfer .ConstantsDataTransfer .CODESYSTEM_NUM_CODEX_DATA_TRANSFER_VALUE_EXPORT_TO ;
7+ import static de .netzwerk_universitaetsmedizin .codex .processes .data_transfer .ConstantsDataTransfer .CODESYSTEM_NUM_CODEX_DATA_TRANSFER_VALUE_PSEUDONYM ;
8+ import static de .netzwerk_universitaetsmedizin .codex .processes .data_transfer .ConstantsDataTransfer .NAMING_SYSTEM_NUM_CODEX_CRR_PSEUDONYM ;
9+ import static de .netzwerk_universitaetsmedizin .codex .processes .data_transfer .ConstantsDataTransfer .NAMING_SYSTEM_NUM_CODEX_DIC_PSEUDONYM ;
10+ import static de .netzwerk_universitaetsmedizin .codex .processes .data_transfer .ConstantsDataTransfer .PROFILE_NUM_CODEX_TASK_DATA_RECEIVE_PROCESS_URI_AND_LATEST_VERSION ;
11+ import static de .netzwerk_universitaetsmedizin .codex .processes .data_transfer .ConstantsDataTransfer .PROFILE_NUM_CODEX_TASK_DATA_SEND_PROCESS_URI_AND_LATEST_VERSION ;
12+ import static de .netzwerk_universitaetsmedizin .codex .processes .data_transfer .ConstantsDataTransfer .PROFILE_NUM_CODEX_TASK_DATA_TRANSLATE_PROCESS_URI_AND_LATEST_VERSION ;
613import static de .netzwerk_universitaetsmedizin .codex .processes .data_transfer .ConstantsDataTransfer .PROFILE_NUM_CODEX_TASK_DATA_TRIGGER_PROCESS_URI_AND_LATEST_VERSION ;
14+ import static de .netzwerk_universitaetsmedizin .codex .processes .data_transfer .ConstantsDataTransfer .PROFILE_NUM_CODEX_TASK_START_DATA_RECEIVE ;
15+ import static de .netzwerk_universitaetsmedizin .codex .processes .data_transfer .ConstantsDataTransfer .PROFILE_NUM_CODEX_TASK_START_DATA_RECEIVE_MESSAGE_NAME ;
16+ import static de .netzwerk_universitaetsmedizin .codex .processes .data_transfer .ConstantsDataTransfer .PROFILE_NUM_CODEX_TASK_START_DATA_SEND ;
17+ import static de .netzwerk_universitaetsmedizin .codex .processes .data_transfer .ConstantsDataTransfer .PROFILE_NUM_CODEX_TASK_START_DATA_SEND_MESSAGE_NAME ;
18+ import static de .netzwerk_universitaetsmedizin .codex .processes .data_transfer .ConstantsDataTransfer .PROFILE_NUM_CODEX_TASK_START_DATA_TRANSLATE ;
19+ import static de .netzwerk_universitaetsmedizin .codex .processes .data_transfer .ConstantsDataTransfer .PROFILE_NUM_CODEX_TASK_START_DATA_TRANSLATE_MESSAGE_NAME ;
720import static de .netzwerk_universitaetsmedizin .codex .processes .data_transfer .ConstantsDataTransfer .PROFILE_NUM_CODEX_TASK_START_DATA_TRIGGER ;
821import static de .netzwerk_universitaetsmedizin .codex .processes .data_transfer .ConstantsDataTransfer .PROFILE_NUM_CODEX_TASK_START_DATA_TRIGGER_MESSAGE_NAME ;
22+ import static de .netzwerk_universitaetsmedizin .codex .processes .data_transfer .ConstantsDataTransfer .PROFILE_NUM_CODEX_TASK_STOP_DATA_TRIGGER ;
23+ import static de .netzwerk_universitaetsmedizin .codex .processes .data_transfer .ConstantsDataTransfer .PROFILE_NUM_CODEX_TASK_STOP_DATA_TRIGGER_MESSAGE_NAME ;
924import static de .netzwerk_universitaetsmedizin .codex .processes .data_transfer .DataTransferProcessPluginDefinition .VERSION ;
1025import static org .highmed .dsf .bpe .ConstantsBase .CODESYSTEM_HIGHMED_BPMN ;
26+ import static org .highmed .dsf .bpe .ConstantsBase .CODESYSTEM_HIGHMED_BPMN_VALUE_BUSINESS_KEY ;
1127import static org .highmed .dsf .bpe .ConstantsBase .CODESYSTEM_HIGHMED_BPMN_VALUE_MESSAGE_NAME ;
1228import static org .highmed .dsf .bpe .ConstantsBase .NAMINGSYSTEM_HIGHMED_ORGANIZATION_IDENTIFIER ;
1329import static org .junit .Assert .assertEquals ;
1430
1531import java .util .Arrays ;
1632import java .util .Date ;
33+ import java .util .UUID ;
1734
1835import org .highmed .dsf .fhir .validation .ResourceValidator ;
1936import org .highmed .dsf .fhir .validation .ResourceValidatorImpl ;
2037import org .highmed .dsf .fhir .validation .ValidationSupportRule ;
2138import org .hl7 .fhir .r4 .model .DateTimeType ;
39+ import org .hl7 .fhir .r4 .model .DateType ;
40+ import org .hl7 .fhir .r4 .model .IdType ;
41+ import org .hl7 .fhir .r4 .model .Identifier ;
2242import org .hl7 .fhir .r4 .model .InstantType ;
43+ import org .hl7 .fhir .r4 .model .Reference ;
2344import org .hl7 .fhir .r4 .model .ResourceType ;
2445import org .hl7 .fhir .r4 .model .StringType ;
2546import org .hl7 .fhir .r4 .model .Task ;
3051import org .slf4j .Logger ;
3152import org .slf4j .LoggerFactory ;
3253
54+ import ca .uhn .fhir .model .api .TemporalPrecisionEnum ;
3355import ca .uhn .fhir .validation .ResultSeverityEnum ;
3456import ca .uhn .fhir .validation .ValidationResult ;
3557
@@ -50,10 +72,17 @@ public class TaskProfileTest
5072 private ResourceValidator resourceValidator = new ResourceValidatorImpl (validationRule .getFhirContext (),
5173 validationRule .getValidationSupport ());
5274
75+ private void logTask (Task task )
76+ {
77+ logger .debug ("task: {}" ,
78+ validationRule .getFhirContext ().newXmlParser ().setPrettyPrint (true ).encodeResourceToString (task ));
79+ }
80+
5381 @ Test
5482 public void testTaskStartDataTriggerValid () throws Exception
5583 {
5684 Task task = createValidTaskStartDataTrigger ();
85+ logTask (task );
5786
5887 ValidationResult result = resourceValidator .validate (task );
5988 ValidationSupportRule .logValidationMessages (logger , result );
@@ -69,6 +98,7 @@ public void testTaskStartDataTriggerWithOutputValid() throws Exception
6998 task .addOutput ().setValue (new InstantType (new Date ())).getType ().addCoding ()
7099 .setSystem (CODESYSTEM_NUM_CODEX_DATA_TRANSFER )
71100 .setCode (CODESYSTEM_NUM_CODEX_DATA_TRANSFER_VALUE_EXPORT_TO );
101+ logTask (task );
72102
73103 ValidationResult result = resourceValidator .validate (task );
74104 ValidationSupportRule .logValidationMessages (logger , result );
@@ -97,4 +127,189 @@ private Task createValidTaskStartDataTrigger()
97127
98128 return task ;
99129 }
130+
131+ @ Test
132+ public void testTaskStopDataTriggerValid () throws Exception
133+ {
134+ Task task = createValidTaskStopDataTrigger ();
135+ logTask (task );
136+
137+ ValidationResult result = resourceValidator .validate (task );
138+ ValidationSupportRule .logValidationMessages (logger , result );
139+
140+ assertEquals (0 , result .getMessages ().stream ().filter (m -> ResultSeverityEnum .ERROR .equals (m .getSeverity ())
141+ || ResultSeverityEnum .FATAL .equals (m .getSeverity ())).count ());
142+ }
143+
144+ private Task createValidTaskStopDataTrigger ()
145+ {
146+ Task task = new Task ();
147+ task .getMeta ().addProfile (PROFILE_NUM_CODEX_TASK_STOP_DATA_TRIGGER );
148+ task .setInstantiatesUri (PROFILE_NUM_CODEX_TASK_DATA_TRIGGER_PROCESS_URI_AND_LATEST_VERSION );
149+ task .setStatus (TaskStatus .REQUESTED );
150+ task .setIntent (TaskIntent .ORDER );
151+ task .setAuthoredOn (new Date ());
152+ task .getRequester ().setType (ResourceType .Organization .name ()).getIdentifier ()
153+ .setSystem (NAMINGSYSTEM_HIGHMED_ORGANIZATION_IDENTIFIER ).setValue ("Test_DIC" );
154+ task .getRestriction ().addRecipient ().setType (ResourceType .Organization .name ()).getIdentifier ()
155+ .setSystem (NAMINGSYSTEM_HIGHMED_ORGANIZATION_IDENTIFIER ).setValue ("Test_DIC" );
156+ task .addInput ().setValue (new StringType (PROFILE_NUM_CODEX_TASK_STOP_DATA_TRIGGER_MESSAGE_NAME )).getType ()
157+ .addCoding ().setSystem (CODESYSTEM_HIGHMED_BPMN ).setCode (CODESYSTEM_HIGHMED_BPMN_VALUE_MESSAGE_NAME );
158+ task .addInput ().setValue (new StringType (UUID .randomUUID ().toString ())).getType ().addCoding ()
159+ .setSystem (CODESYSTEM_HIGHMED_BPMN ).setCode (CODESYSTEM_HIGHMED_BPMN_VALUE_BUSINESS_KEY );
160+
161+ return task ;
162+ }
163+
164+ @ Test
165+ public void testTaskStartDataSendValid () throws Exception
166+ {
167+ Task task = createValidTaskStartDataSend ();
168+ logTask (task );
169+
170+ ValidationResult result = resourceValidator .validate (task );
171+ ValidationSupportRule .logValidationMessages (logger , result );
172+
173+ assertEquals (0 , result .getMessages ().stream ().filter (m -> ResultSeverityEnum .ERROR .equals (m .getSeverity ())
174+ || ResultSeverityEnum .FATAL .equals (m .getSeverity ())).count ());
175+ }
176+
177+ @ Test
178+ public void testTaskStartDataSendValidWithBusinessKey () throws Exception
179+ {
180+ Task task = createValidTaskStartDataSend ();
181+ task .addInput ().setValue (new StringType (UUID .randomUUID ().toString ())).getType ().addCoding ()
182+ .setSystem (CODESYSTEM_HIGHMED_BPMN ).setCode (CODESYSTEM_HIGHMED_BPMN_VALUE_BUSINESS_KEY );
183+ logTask (task );
184+
185+ ValidationResult result = resourceValidator .validate (task );
186+ ValidationSupportRule .logValidationMessages (logger , result );
187+
188+ assertEquals (0 , result .getMessages ().stream ().filter (m -> ResultSeverityEnum .ERROR .equals (m .getSeverity ())
189+ || ResultSeverityEnum .FATAL .equals (m .getSeverity ())).count ());
190+ }
191+
192+ @ Test
193+ public void testTaskStartDataSendValidWithExportFrom () throws Exception
194+ {
195+ Task task = createValidTaskStartDataSend ();
196+ task .addInput ().setValue (new DateType (new Date (), TemporalPrecisionEnum .DAY )).getType ().addCoding ()
197+ .setSystem (CODESYSTEM_NUM_CODEX_DATA_TRANSFER )
198+ .setCode (CODESYSTEM_NUM_CODEX_DATA_TRANSFER_VALUE_EXPORT_FROM );
199+ logTask (task );
200+
201+ ValidationResult result = resourceValidator .validate (task );
202+ ValidationSupportRule .logValidationMessages (logger , result );
203+
204+ assertEquals (0 , result .getMessages ().stream ().filter (m -> ResultSeverityEnum .ERROR .equals (m .getSeverity ())
205+ || ResultSeverityEnum .FATAL .equals (m .getSeverity ())).count ());
206+ }
207+
208+ private Task createValidTaskStartDataSend ()
209+ {
210+ Task task = new Task ();
211+ task .getMeta ().addProfile (PROFILE_NUM_CODEX_TASK_START_DATA_SEND );
212+ task .setInstantiatesUri (PROFILE_NUM_CODEX_TASK_DATA_SEND_PROCESS_URI_AND_LATEST_VERSION );
213+ task .setStatus (TaskStatus .REQUESTED );
214+ task .setIntent (TaskIntent .ORDER );
215+ task .setAuthoredOn (new Date ());
216+ task .getRequester ().setType (ResourceType .Organization .name ()).getIdentifier ()
217+ .setSystem (NAMINGSYSTEM_HIGHMED_ORGANIZATION_IDENTIFIER ).setValue ("Test_DIC" );
218+ task .getRestriction ().addRecipient ().setType (ResourceType .Organization .name ()).getIdentifier ()
219+ .setSystem (NAMINGSYSTEM_HIGHMED_ORGANIZATION_IDENTIFIER ).setValue ("Test_DIC" );
220+ task .addInput ().setValue (new StringType (PROFILE_NUM_CODEX_TASK_START_DATA_SEND_MESSAGE_NAME )).getType ()
221+ .addCoding ().setSystem (CODESYSTEM_HIGHMED_BPMN ).setCode (CODESYSTEM_HIGHMED_BPMN_VALUE_MESSAGE_NAME );
222+ // business-key optional
223+ // task.addInput().setValue(new StringType(UUID.randomUUID().toString())).getType().addCoding()
224+ // .setSystem(CODESYSTEM_HIGHMED_BPMN).setCode(CODESYSTEM_HIGHMED_BPMN_VALUE_BUSINESS_KEY);
225+ task .addInput ()
226+ .setValue (new Identifier ().setSystem (NAMING_SYSTEM_NUM_CODEX_DIC_PSEUDONYM ).setValue ("source/original" ))
227+ .getType ().addCoding ().setSystem (CODESYSTEM_NUM_CODEX_DATA_TRANSFER )
228+ .setCode (CODESYSTEM_NUM_CODEX_DATA_TRANSFER_VALUE_PSEUDONYM );
229+ task .addInput ().setValue (new InstantType (new Date ())).getType ().addCoding ()
230+ .setSystem (CODESYSTEM_NUM_CODEX_DATA_TRANSFER )
231+ .setCode (CODESYSTEM_NUM_CODEX_DATA_TRANSFER_VALUE_EXPORT_TO );
232+
233+ return task ;
234+ }
235+
236+ @ Test
237+ public void testTaskStartDataTranslateValid () throws Exception
238+ {
239+ Task task = createValidTaskStartDataTranslate ();
240+ logTask (task );
241+
242+ ValidationResult result = resourceValidator .validate (task );
243+ ValidationSupportRule .logValidationMessages (logger , result );
244+
245+ assertEquals (0 , result .getMessages ().stream ().filter (m -> ResultSeverityEnum .ERROR .equals (m .getSeverity ())
246+ || ResultSeverityEnum .FATAL .equals (m .getSeverity ())).count ());
247+ }
248+
249+ private Task createValidTaskStartDataTranslate ()
250+ {
251+ Task task = new Task ();
252+ task .getMeta ().addProfile (PROFILE_NUM_CODEX_TASK_START_DATA_TRANSLATE );
253+ task .setInstantiatesUri (PROFILE_NUM_CODEX_TASK_DATA_TRANSLATE_PROCESS_URI_AND_LATEST_VERSION );
254+ task .setStatus (TaskStatus .REQUESTED );
255+ task .setIntent (TaskIntent .ORDER );
256+ task .setAuthoredOn (new Date ());
257+ task .getRequester ().setType (ResourceType .Organization .name ()).getIdentifier ()
258+ .setSystem (NAMINGSYSTEM_HIGHMED_ORGANIZATION_IDENTIFIER ).setValue ("Test_DIC" );
259+ task .getRestriction ().addRecipient ().setType (ResourceType .Organization .name ()).getIdentifier ()
260+ .setSystem (NAMINGSYSTEM_HIGHMED_ORGANIZATION_IDENTIFIER ).setValue ("Test_GTH" );
261+ task .addInput ().setValue (new StringType (PROFILE_NUM_CODEX_TASK_START_DATA_TRANSLATE_MESSAGE_NAME )).getType ()
262+ .addCoding ().setSystem (CODESYSTEM_HIGHMED_BPMN ).setCode (CODESYSTEM_HIGHMED_BPMN_VALUE_MESSAGE_NAME );
263+ task .addInput ().setValue (new StringType (UUID .randomUUID ().toString ())).getType ().addCoding ()
264+ .setSystem (CODESYSTEM_HIGHMED_BPMN ).setCode (CODESYSTEM_HIGHMED_BPMN_VALUE_BUSINESS_KEY );
265+ task .addInput ()
266+ .setValue (new Identifier ().setSystem (NAMING_SYSTEM_NUM_CODEX_DIC_PSEUDONYM ).setValue ("source/original" ))
267+ .getType ().addCoding ().setSystem (CODESYSTEM_NUM_CODEX_DATA_TRANSFER )
268+ .setCode (CODESYSTEM_NUM_CODEX_DATA_TRANSFER_VALUE_PSEUDONYM );
269+ task .addInput ().setValue (new Reference (new IdType ("https://dic" , "Binary" , UUID .randomUUID ().toString (), "1" )))
270+ .getType ().addCoding ().setSystem (CODESYSTEM_NUM_CODEX_DATA_TRANSFER )
271+ .setCode (CODESYSTEM_NUM_CODEX_DATA_TRANSFER_VALUE_DATA_REFERENCE );
272+
273+ return task ;
274+ }
275+
276+ @ Test
277+ public void testTaskStartDataReceiveValid () throws Exception
278+ {
279+ Task task = createValidTaskStartDataReceive ();
280+ logTask (task );
281+
282+ ValidationResult result = resourceValidator .validate (task );
283+ ValidationSupportRule .logValidationMessages (logger , result );
284+
285+ assertEquals (0 , result .getMessages ().stream ().filter (m -> ResultSeverityEnum .ERROR .equals (m .getSeverity ())
286+ || ResultSeverityEnum .FATAL .equals (m .getSeverity ())).count ());
287+ }
288+
289+ private Task createValidTaskStartDataReceive ()
290+ {
291+ Task task = new Task ();
292+ task .getMeta ().addProfile (PROFILE_NUM_CODEX_TASK_START_DATA_RECEIVE );
293+ task .setInstantiatesUri (PROFILE_NUM_CODEX_TASK_DATA_RECEIVE_PROCESS_URI_AND_LATEST_VERSION );
294+ task .setStatus (TaskStatus .REQUESTED );
295+ task .setIntent (TaskIntent .ORDER );
296+ task .setAuthoredOn (new Date ());
297+ task .getRequester ().setType (ResourceType .Organization .name ()).getIdentifier ()
298+ .setSystem (NAMINGSYSTEM_HIGHMED_ORGANIZATION_IDENTIFIER ).setValue ("Test_GTH" );
299+ task .getRestriction ().addRecipient ().setType (ResourceType .Organization .name ()).getIdentifier ()
300+ .setSystem (NAMINGSYSTEM_HIGHMED_ORGANIZATION_IDENTIFIER ).setValue ("Test_CRR" );
301+ task .addInput ().setValue (new StringType (PROFILE_NUM_CODEX_TASK_START_DATA_RECEIVE_MESSAGE_NAME )).getType ()
302+ .addCoding ().setSystem (CODESYSTEM_HIGHMED_BPMN ).setCode (CODESYSTEM_HIGHMED_BPMN_VALUE_MESSAGE_NAME );
303+ task .addInput ().setValue (new StringType (UUID .randomUUID ().toString ())).getType ().addCoding ()
304+ .setSystem (CODESYSTEM_HIGHMED_BPMN ).setCode (CODESYSTEM_HIGHMED_BPMN_VALUE_BUSINESS_KEY );
305+ task .addInput ()
306+ .setValue (new Identifier ().setSystem (NAMING_SYSTEM_NUM_CODEX_CRR_PSEUDONYM ).setValue ("target/original" ))
307+ .getType ().addCoding ().setSystem (CODESYSTEM_NUM_CODEX_DATA_TRANSFER )
308+ .setCode (CODESYSTEM_NUM_CODEX_DATA_TRANSFER_VALUE_PSEUDONYM );
309+ task .addInput ().setValue (new Reference (new IdType ("https://gth" , "Binary" , UUID .randomUUID ().toString (), "1" )))
310+ .getType ().addCoding ().setSystem (CODESYSTEM_NUM_CODEX_DATA_TRANSFER )
311+ .setCode (CODESYSTEM_NUM_CODEX_DATA_TRANSFER_VALUE_DATA_REFERENCE );
312+
313+ return task ;
314+ }
100315}
0 commit comments