Added one more test and fix to the bug

This commit is contained in:
Jens Kristian Villadsen 2023-10-19 13:19:32 +02:00
parent 6bb1426c04
commit c61b69f02a
2 changed files with 42 additions and 2 deletions

View File

@ -198,8 +198,11 @@ public class BalpAuditCaptureInterceptor {
Set<String> compartmentOwners = determinePatientCompartmentOwnersForResources(resources, theRequestDetails);
if (!compartmentOwners.isEmpty()) {
AuditEvent auditEvent = createAuditEventPatientQuery(theRequestDetails, compartmentOwners);
myAuditEventSink.recordAuditEvent(auditEvent);
for (String owner : compartmentOwners) {
AuditEvent auditEvent = createAuditEventPatientQuery(theRequestDetails, Set.of(owner));
myAuditEventSink.recordAuditEvent(auditEvent);
}
} else {
AuditEvent auditEvent = createAuditEventBasicQuery(theRequestDetails);
myAuditEventSink.recordAuditEvent(auditEvent);

View File

@ -820,6 +820,43 @@ public class BalpAuditCaptureInterceptorTest implements ITestDataBuilder {
.execute();
verify(myAuditEventSink, times(2)).recordAuditEvent(myAuditEventCaptor.capture());
List<AuditEvent> values = myAuditEventCaptor.getAllValues();
verifyAuditEvent(values.get(0), "Patient/P1/_history/1");
verifyAuditEvent(values.get(1),"Patient/P2/_history/1");
}
@Test
public void testSearchObservationsAmongMultiplePatients()
{
Patient p1 = buildResource("Patient", withId("P1"), withFamily("Simpson"), withGiven("Homer"));
Patient p2 = buildResource("Patient", withId("P2"), withFamily("Simpson"), withGiven("Marge"));
myPatientProvider.store(p1);
myPatientProvider.store(p2);
createObservation(withId("O1"), withSubject("Patient/P1"));
createObservation(withId("O2"), withSubject("Patient/P2"));
Bundle outcome = myClient
.search()
.forResource(Observation.class)
.returnBundle(Bundle.class)
.execute();
verify(myAuditEventSink, times(2)).recordAuditEvent(myAuditEventCaptor.capture());
List<AuditEvent> values = myAuditEventCaptor.getAllValues();
verifyAuditEvent(values.get(0), "Patient/P1");
verifyAuditEvent(values.get(1),"Patient/P2");
}
private void verifyAuditEvent(AuditEvent auditEvent, String id) {
ourLog.info("Audit Event: {}", ourCtx.newJsonParser().setPrettyPrint(true).encodeResourceToString(auditEvent));
assertAuditEventValidatesAgainstBalpProfile(auditEvent);
assertHasProfile(auditEvent, BalpProfileEnum.PATIENT_QUERY);
assertType(auditEvent);
assertSubType(auditEvent, "search-type");
assertEquals(AuditEvent.AuditEventAction.E, auditEvent.getAction());
assertEquals(AuditEvent.AuditEventOutcome._0, auditEvent.getOutcome());
assertHasPatientEntities(auditEvent, id);
}
private void create10Observations(String... thePatientIds) {