1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.openehealth.ipf.commons.ihe.xds.rad69;
17
18 import org.openehealth.ipf.commons.audit.AuditContext;
19 import org.openehealth.ipf.commons.audit.codes.EventActionCode;
20 import org.openehealth.ipf.commons.audit.model.AuditMessage;
21 import org.openehealth.ipf.commons.ihe.xds.core.audit.event.XdsPHIExportBuilder;
22 import org.openehealth.ipf.commons.ihe.xds.core.audit.codes.XdsEventTypeCode;
23 import org.openehealth.ipf.commons.ihe.xds.core.audit.XdsIRetrieveAuditStrategy30;
24 import org.openehealth.ipf.commons.ihe.xds.core.audit.XdsNonconstructiveDocumentSetRequestAuditDataset;
25 import org.openehealth.ipf.commons.ihe.xds.core.audit.XdsNonconstructiveDocumentSetRequestAuditDataset.Status;
26
27 import java.util.stream.Stream;
28
29
30
31
32
33
34
35 public class Rad69ServerAuditStrategy extends XdsIRetrieveAuditStrategy30 {
36
37 public Rad69ServerAuditStrategy() {
38 super(true);
39 }
40
41 @Override
42 public AuditMessage[] makeAuditMessage(AuditContext auditContext, XdsNonconstructiveDocumentSetRequestAuditDataset auditDataset) {
43 return Stream.of(Status.values())
44 .filter(auditDataset::hasDocuments)
45 .map(s -> doMakeAuditMessage(auditContext, auditDataset, s))
46 .toArray(AuditMessage[]::new);
47 }
48
49 private AuditMessage doMakeAuditMessage(AuditContext auditContext, XdsNonconstructiveDocumentSetRequestAuditDataset auditDataset, Status status) {
50 return new XdsPHIExportBuilder(auditContext, auditDataset,
51 auditDataset.getEventOutcomeIndicator(status), null,
52 EventActionCode.Read,
53 XdsEventTypeCode.RetrieveImagingDocumentSet, auditDataset.getPurposesOfUse())
54 .setPatient(auditDataset.getPatientId())
55 .addDocumentIds(auditDataset, status)
56 .getMessage();
57 }
58
59 }