1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.openehealth.ipf.commons.ihe.xds.iti43;
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.XdsPHIImportBuilder;
25
26 import java.util.stream.Stream;
27
28
29
30
31
32
33
34 public class Iti43ClientAuditStrategy extends XdsRetrieveAuditStrategy30 {
35
36 public Iti43ClientAuditStrategy() {
37 super(false);
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 XdsPHIImportBuilder(auditContext, auditDataset,
50 auditDataset.getEventOutcomeIndicator(status), null,
51 EventActionCode.Create,
52 XdsEventTypeCode.RetrieveDocumentSet, auditDataset.getPurposesOfUse())
53 .setPatient(auditDataset.getPatientId())
54 .addDocumentIds(auditDataset, status)
55 .getMessage();
56 }
57 }