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.PHIImportBuilder;
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 XdsPHIImportBuilder extends PHIImportBuilder<XdsPHIImportBuilder> {
40
41
42 public XdsPHIImportBuilder(AuditContext auditContext,
43 XdsAuditDataset auditDataset,
44 EventType eventType,
45 PurposeOfUse... purposesOfUse) {
46 this(auditContext, auditDataset, EventActionCode.Create, eventType, purposesOfUse);
47 }
48
49 public XdsPHIImportBuilder(AuditContext auditContext,
50 XdsAuditDataset auditDataset,
51 EventActionCode eventActionCode,
52 EventType eventType,
53 PurposeOfUse... purposesOfUse) {
54 super(auditContext, auditDataset, eventActionCode, eventType, purposesOfUse);
55 }
56
57 public XdsPHIImportBuilder(AuditContext auditContext,
58 AuditDataset auditDataset,
59 EventOutcomeIndicator eventOutcomeIndicator,
60 String eventOutcomeDescription,
61 EventActionCode eventActionCode,
62 EventType eventType,
63 PurposeOfUse... purposesOfUse) {
64 super(auditContext, auditDataset, eventOutcomeIndicator, eventOutcomeDescription,
65 eventActionCode, eventType, purposesOfUse);
66 }
67
68 public XdsPHIImportBuilder setSubmissionSet(XdsSubmitAuditDataset auditDataset) {
69 return addImportedEntity(auditDataset.getSubmissionSetUuid(),
70 ParticipantObjectIdTypeCode.XdsMetadata,
71 ParticipantObjectTypeCodeRole.Job,
72 Collections.emptyList());
73 }
74
75 public XdsPHIImportBuilder setSubmissionSetWithHomeCommunityId(XdsSubmitAuditDataset auditDataset) {
76 return addImportedEntity(auditDataset.getSubmissionSetUuid(),
77 ParticipantObjectIdTypeCode.XdsMetadata,
78 ParticipantObjectTypeCodeRole.Job,
79 makeDocumentDetail(null, auditDataset.getHomeCommunityId(), null, null));
80 }
81
82 public XdsPHIImportBuilder addDocumentIds(XdsNonconstructiveDocumentSetRequestAuditDataset auditDataset,
83 XdsNonconstructiveDocumentSetRequestAuditDataset.Status status) {
84 String[] documentIds = auditDataset.getDocumentIds(status);
85 String[] homeCommunityIds = auditDataset.getHomeCommunityIds(status);
86 String[] repositoryIds = auditDataset.getRepositoryIds(status);
87 String[] seriesInstanceIds = auditDataset.getSeriesInstanceIds(status);
88 String[] studyInstanceIds = auditDataset.getStudyInstanceIds(status);
89 IntStream.range(0, documentIds.length).forEach(i ->
90 addImportedEntity(
91 documentIds[i],
92 ParticipantObjectIdTypeCode.ReportNumber,
93 ParticipantObjectTypeCodeRole.Report,
94 makeDocumentDetail(repositoryIds[i], homeCommunityIds[i], seriesInstanceIds[i], studyInstanceIds[i])));
95 return self();
96 }
97
98 }