1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.openehealth.ipf.commons.ihe.xds.iti51;
17
18 import org.openehealth.ipf.commons.audit.AuditContext;
19 import org.openehealth.ipf.commons.audit.model.AuditMessage;
20 import org.openehealth.ipf.commons.ihe.xds.core.audit.*;
21 import org.openehealth.ipf.commons.ihe.xds.core.audit.codes.XdsEventTypeCode;
22 import org.openehealth.ipf.commons.ihe.xds.core.audit.codes.XdsParticipantObjectIdTypeCode;
23 import org.openehealth.ipf.commons.ihe.xds.core.audit.event.XdsQueryInformationBuilder;
24
25
26
27
28
29
30
31 public class Iti51AuditStrategy extends XdsQueryAuditStrategy30 {
32
33
34
35
36
37
38 public Iti51AuditStrategy(boolean serverSide) {
39 super(serverSide);
40 }
41
42
43 @Override
44 public AuditMessage[] makeAuditMessage(AuditContext auditContext, XdsQueryAuditDataset auditDataset) {
45 return auditDataset.getPatientIds().isEmpty() ?
46 new AuditMessage[]{ doMakeAuditMessage(auditContext, auditDataset, null) } :
47 auditDataset.getPatientIds().stream()
48 .map(patientId -> doMakeAuditMessage(auditContext, auditDataset, patientId))
49 .toArray(AuditMessage[]::new);
50 }
51
52 private AuditMessage doMakeAuditMessage(AuditContext auditContext, XdsQueryAuditDataset auditDataset, String pid) {
53 return new XdsQueryInformationBuilder(auditContext, auditDataset, XdsEventTypeCode.MultiPatientStoredQuery, auditDataset.getPurposesOfUse())
54 .addPatients(pid)
55 .setQueryParameters(auditDataset, XdsParticipantObjectIdTypeCode.MultiPatientStoredQuery)
56 .getMessage();
57
58 }
59 }