@Override public AuditMessage[] makeAuditMessage(AuditContext auditContext, GenericFhirAuditDataset auditDataset) { GenericFhirAuditMessageBuilder builder = new GenericFhirAuditMessageBuilder(auditContext, auditDataset) .addPatients(auditDataset); if (auditDataset.getAffectedResourceType() != null && auditDataset.getQueryString() != null) { builder.addQueryParticipantObject(auditDataset); } else if (auditDataset.getResourceId() != null && auditDataset.getResourceId().hasResourceType() && auditDataset.getResourceId().hasIdPart()) { builder.addResourceParticipantObject(auditDataset); } return builder.getMessages(); }
@Override public FhirQueryAuditDataset createAuditDataset() { return new FhirQueryAuditDataset(isServerSide()); } }
@Override public GenericFhirAuditDataset createAuditDataset() { return new GenericFhirAuditDataset(isServerSide()); }
@Override public AuditMessage[] makeAuditMessage(AuditContext auditContext, FhirQueryAuditDataset auditDataset) { return new QueryInformationBuilder<>(auditContext, auditDataset, FhirEventTypeCode.MobilePatientIdentifierCrossReferenceQuery) .addPatients(auditDataset.getPatientIds()) .setQueryParameters( "PIXmQuery", FhirParticipantObjectIdTypeCode.MobilePatientIdentifierCrossReferenceQuery, auditDataset.getQueryString()) .getMessages(); }
@Override public FhirQueryAuditDataset enrichAuditDatasetFromRequest(FhirQueryAuditDataset auditDataset, Object request, Map<String, Object> parameters) { FhirQueryAuditDataset dataset = super.enrichAuditDatasetFromRequest(auditDataset, request, parameters); if (request instanceof IdType) { IdType idType = (IdType) request; dataset.getPatientIds().add(idType.getValue()); } return dataset; }
private void addResourceData(GenericFhirAuditDataset auditDataset, T resource) { auditDataset.setResourceId(resource.getIdElement()); if (resource.getIdElement().hasResourceType()) { auditDataset.setAffectedResourceType(resource.getIdElement().getResourceType()); } patientIdExtractor.apply(resource).ifPresent(patient -> auditDataset.getPatientIds().add(patient.getResource() != null ? patient.getResource().getIdElement().toUnqualifiedVersionless().getValue() : patient.getReference())); List<? extends IBaseCoding> securityLabels = resource.getMeta().getSecurity(); if (!securityLabels.isEmpty()) { auditDataset.setSecurityLabel(securityLabels.get(0).getCode()); } } }
@Override public boolean enrichAuditDatasetFromResponse(GenericFhirAuditDataset auditDataset, Object response, AuditContext auditContext) { // Domain Resource in the request? Extract Patient ID and Sensitivity at this point if (response instanceof IDomainResource) { addResourceData(auditDataset, (T) response); } if (response instanceof MethodOutcome) { MethodOutcome methodOutcome = (MethodOutcome) response; if (methodOutcome.getCreated() != null && methodOutcome.getCreated()) { auditDataset.setEventOutcomeIndicator(EventOutcomeIndicator.Success); } if (methodOutcome.getOperationOutcome() != null) { super.enrichAuditDatasetFromResponse(auditDataset, methodOutcome.getOperationOutcome(), auditContext); } else { auditDataset.setEventOutcomeIndicator(EventOutcomeIndicator.Success); } if (methodOutcome.getResource() != null && methodOutcome.getResource() instanceof IDomainResource) { addResourceData(auditDataset, (T) methodOutcome.getResource()); } else if (methodOutcome.getId() != null) { auditDataset.setResourceId(methodOutcome.getId()); if (methodOutcome.getId().hasResourceType()) { auditDataset.setAffectedResourceType(methodOutcome.getId().getResourceType()); } } } return super.enrichAuditDatasetFromResponse(auditDataset, response, auditContext); }
@Override public AuditMessage[] makeAuditMessage(AuditContext auditContext, FhirQueryAuditDataset auditDataset) { return new QueryInformationBuilder(auditContext, auditDataset, FhirEventTypeCode.MobileDocumentReferenceQuery) .addPatients(auditDataset.getPatientIds()) .setQueryParameters("MobileDocumentReferenceQuery", FhirParticipantObjectIdTypeCode.MobileDocumentReferenceQuery, auditDataset.getQueryString()) .getMessages(); } }
@Override public AuditMessage[] makeAuditMessage(AuditContext auditContext, GenericFhirAuditDataset auditDataset) { GenericFhirAuditMessageBuilder builder = new GenericFhirAuditMessageBuilder(auditContext, auditDataset) .addPatients(auditDataset); if (auditDataset.getAffectedResourceType() != null && auditDataset.getQueryString() != null) { builder.addQueryParticipantObject(auditDataset); } else if (auditDataset.getResourceId() != null && auditDataset.getResourceId().hasResourceType() && auditDataset.getResourceId().hasIdPart()) { builder.addResourceParticipantObject(auditDataset); } return builder.getMessages(); }
@Override public boolean enrichAuditDatasetFromResponse(GenericFhirAuditDataset auditDataset, Object response, AuditContext auditContext) { // Domain Resource in the request? Extract Patient ID and Sensitivity at this point if (response instanceof IDomainResource) { addResourceData(auditDataset, (T) response); } if (response instanceof MethodOutcome) { MethodOutcome methodOutcome = (MethodOutcome) response; if (methodOutcome.getCreated() != null && methodOutcome.getCreated()) { auditDataset.setEventOutcomeIndicator(EventOutcomeIndicator.Success); } if (methodOutcome.getOperationOutcome() != null) { super.enrichAuditDatasetFromResponse(auditDataset, methodOutcome.getOperationOutcome(), auditContext); } else { auditDataset.setEventOutcomeIndicator(EventOutcomeIndicator.Success); } if (methodOutcome.getResource() != null && methodOutcome.getResource() instanceof IDomainResource) { addResourceData(auditDataset, (T) methodOutcome.getResource()); } else if (methodOutcome.getId() != null) { auditDataset.setResourceId(methodOutcome.getId()); if (methodOutcome.getId().hasResourceType()) { auditDataset.setAffectedResourceType(methodOutcome.getId().getResourceType()); } } } return super.enrichAuditDatasetFromResponse(auditDataset, response, auditContext); }
@Override public FhirQueryAuditDataset createAuditDataset() { return new FhirQueryAuditDataset(isServerSide()); } }
@Override public GenericFhirAuditDataset createAuditDataset() { return new GenericFhirAuditDataset(isServerSide()); }
@Override public AuditMessage[] makeAuditMessage(AuditContext auditContext, FhirQueryAuditDataset auditDataset) { return new QueryInformationBuilder<>(auditContext, auditDataset, FhirEventTypeCode.MobileDocumentManifestQuery) .addPatients(auditDataset.getPatientIds()) .setQueryParameters("MobileDocumentManifestQuery", FhirParticipantObjectIdTypeCode.MobileDocumentManifestQuery, auditDataset.getQueryString()) .getMessages(); }
@Override public FhirQueryAuditDataset createAuditDataset() { return new FhirQueryAuditDataset(isServerSide()); } }
@Override public AuditMessage[] makeAuditMessage(AuditContext auditContext, FhirQueryAuditDataset auditDataset) { return new QueryInformationBuilder<>(auditContext, auditDataset, FhirEventTypeCode.MobileQueryExistingData) .addPatients(auditDataset.getPatientIds()) .setQueryParameters("MobileQueryExistingData", FhirParticipantObjectIdTypeCode.MobileQueryExistingData, auditDataset.getQueryString()) .getMessages(); }
@Override public AuditMessage[] makeAuditMessage(AuditContext auditContext, FhirQueryAuditDataset auditDataset) { return new QueryInformationBuilder<>(auditContext, auditDataset, FhirEventTypeCode.MobileDocumentManifestQuery) .addPatients(auditDataset.getPatientIds()) .setQueryParameters("MobileDocumentManifestQuery", FhirParticipantObjectIdTypeCode.MobileDocumentManifestQuery, auditDataset.getQueryString()) .getMessages(); }
@Override public AuditMessage[] makeAuditMessage(AuditContext auditContext, FhirQueryAuditDataset auditDataset) { return new QueryInformationBuilder<>(auditContext, auditDataset, FhirEventTypeCode.MobilePatientDemographicsQuery) .addPatients(auditDataset.getPatientIds()) .setQueryParameters( "MobilePatientDemographicsQuery", FhirParticipantObjectIdTypeCode.MobilePatientDemographicsQuery, auditDataset.getQueryString()) .getMessages(); }
@Override public AuditMessage[] makeAuditMessage(AuditContext auditContext, FhirQueryAuditDataset auditDataset) { return new QueryInformationBuilder<>(auditContext, auditDataset, FhirEventTypeCode.MobileDocumentReferenceQuery) .addPatients(auditDataset.getPatientIds()) .setQueryParameters("MobileDocumentReferenceQuery", FhirParticipantObjectIdTypeCode.MobileDocumentReferenceQuery, auditDataset.getQueryString()) .getMessages(); } }
@Override public AuditMessage[] makeAuditMessage(AuditContext auditContext, FhirQueryAuditDataset auditDataset) { return new QueryInformationBuilder(auditContext, auditDataset, FhirEventTypeCode.MobileDocumentReferenceQuery) .addPatients(auditDataset.getPatientIds()) .setQueryParameters("MobileDocumentReferenceQuery", FhirParticipantObjectIdTypeCode.MobileDocumentReferenceQuery, auditDataset.getQueryString()) .getMessages(); } }
@Override public AuditMessage[] makeAuditMessage(AuditContext auditContext, FhirQueryAuditDataset auditDataset) { return new QueryInformationBuilder<>(auditContext, auditDataset, FhirEventTypeCode.MobileDocumentManifestQuery) .addPatients(auditDataset.getPatientIds()) .setQueryParameters("MobileDocumentManifestQuery", FhirParticipantObjectIdTypeCode.MobileDocumentManifestQuery, auditDataset.getQueryString()) .getMessages(); }