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