1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.openehealth.ipf.commons.ihe.xds.core.audit.event;
18
19 import org.openehealth.ipf.commons.audit.AuditContext;
20 import org.openehealth.ipf.commons.audit.codes.EventActionCode;
21 import org.openehealth.ipf.commons.audit.codes.EventOutcomeIndicator;
22 import org.openehealth.ipf.commons.audit.codes.ParticipantObjectIdTypeCode;
23 import org.openehealth.ipf.commons.audit.codes.ParticipantObjectTypeCodeRole;
24 import org.openehealth.ipf.commons.audit.types.EventType;
25 import org.openehealth.ipf.commons.audit.types.PurposeOfUse;
26 import org.openehealth.ipf.commons.ihe.core.atna.AuditDataset;
27 import org.openehealth.ipf.commons.ihe.core.atna.event.PHIExportBuilder;
28 import org.openehealth.ipf.commons.ihe.xds.core.audit.XdsAuditDataset;
29 import org.openehealth.ipf.commons.ihe.xds.core.audit.XdsNonconstructiveDocumentSetRequestAuditDataset;
30 import org.openehealth.ipf.commons.ihe.xds.core.audit.XdsSubmitAuditDataset;
31
32 import java.util.Collections;
33 import java.util.stream.IntStream;
34
35
36
37
38
39 public class XdsPHIExportBuilder extends PHIExportBuilder<XdsPHIExportBuilder> {
40
41 public XdsPHIExportBuilder(AuditContext auditContext,
42 XdsAuditDataset auditDataset,
43 EventType eventType,
44 PurposeOfUse... purposesOfUse) {
45 this(auditContext, auditDataset, EventActionCode.Read, eventType, purposesOfUse);
46 }
47
48 public XdsPHIExportBuilder(AuditContext auditContext,
49 XdsAuditDataset auditDataset,
50 EventActionCode eventActionCode,
51 EventType eventType,
52 PurposeOfUse... purposesOfUse) {
53 super(auditContext, auditDataset, eventActionCode, eventType, purposesOfUse);
54 }
55
56 public XdsPHIExportBuilder(AuditContext auditContext,
57 AuditDataset auditDataset,
58 EventOutcomeIndicator eventOutcomeIndicator,
59 String eventOutcomeDescription,
60 EventActionCode eventActionCode,
61 EventType eventType,
62 PurposeOfUse... purposesOfUse) {
63 super(auditContext, auditDataset, eventOutcomeIndicator, eventOutcomeDescription, eventActionCode, eventType, purposesOfUse);
64 }
65
66 public XdsPHIExportBuilder setSubmissionSet(XdsSubmitAuditDataset auditDataset) {
67 return addExportedEntity(auditDataset.getSubmissionSetUuid(),
68 ParticipantObjectIdTypeCode.XdsMetadata,
69 ParticipantObjectTypeCodeRole.Job,
70 Collections.emptyList());
71 }
72
73 public XdsPHIExportBuilder setSubmissionSetWithHomeCommunityId(XdsSubmitAuditDataset auditDataset) {
74 return addExportedEntity(auditDataset.getSubmissionSetUuid(),
75 ParticipantObjectIdTypeCode.XdsMetadata,
76 ParticipantObjectTypeCodeRole.Job,
77 makeDocumentDetail(null, auditDataset.getHomeCommunityId(), null, null));
78 }
79
80 public XdsPHIExportBuilder addDocumentIds(XdsNonconstructiveDocumentSetRequestAuditDataset auditDataset,
81 XdsNonconstructiveDocumentSetRequestAuditDataset.Status status) {
82 String[] documentIds = auditDataset.getDocumentIds(status);
83 String[] homeCommunityIds = auditDataset.getHomeCommunityIds(status);
84 String[] repositoryIds = auditDataset.getRepositoryIds(status);
85 String[] seriesInstanceIds = auditDataset.getSeriesInstanceIds(status);
86 String[] studyInstanceIds = auditDataset.getStudyInstanceIds(status);
87 IntStream.range(0, documentIds.length).forEach(i ->
88 addExportedEntity(
89 documentIds[i],
90 ParticipantObjectIdTypeCode.ReportNumber,
91 ParticipantObjectTypeCodeRole.Report,
92 makeDocumentDetail(repositoryIds[i], homeCommunityIds[i], seriesInstanceIds[i], studyInstanceIds[i])));
93 return self();
94 }
95
96
97 }