Additional Tests
This commit is contained in:
parent
3dee0c8ab6
commit
e997d49d42
|
@ -14,6 +14,8 @@ import org.hl7.fhir.instance.model.api.IBaseResource;
|
||||||
import org.hl7.fhir.instance.model.api.IIdType;
|
import org.hl7.fhir.instance.model.api.IIdType;
|
||||||
import org.hl7.fhir.r4.model.Bundle;
|
import org.hl7.fhir.r4.model.Bundle;
|
||||||
import org.hl7.fhir.r4.model.DiagnosticReport;
|
import org.hl7.fhir.r4.model.DiagnosticReport;
|
||||||
|
import org.hl7.fhir.r4.model.ExplanationOfBenefit;
|
||||||
|
import org.hl7.fhir.r4.model.Medication;
|
||||||
import org.hl7.fhir.r4.model.Observation;
|
import org.hl7.fhir.r4.model.Observation;
|
||||||
import org.hl7.fhir.r4.model.Organization;
|
import org.hl7.fhir.r4.model.Organization;
|
||||||
import org.hl7.fhir.r4.model.Patient;
|
import org.hl7.fhir.r4.model.Patient;
|
||||||
|
@ -27,10 +29,16 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import static org.hamcrest.Matchers.is;
|
||||||
import static org.hamcrest.MatcherAssert.assertThat;
|
import static org.hamcrest.MatcherAssert.assertThat;
|
||||||
import static org.hamcrest.Matchers.empty;
|
import static org.hamcrest.Matchers.empty;
|
||||||
|
import static org.hamcrest.Matchers.equalTo;
|
||||||
import static org.hamcrest.Matchers.hasSize;
|
import static org.hamcrest.Matchers.hasSize;
|
||||||
import static org.hamcrest.Matchers.matchesPattern;
|
import static org.hamcrest.Matchers.matchesPattern;
|
||||||
|
import static org.hl7.fhir.r4.model.Bundle.HTTPVerb.DELETE;
|
||||||
|
import static org.hl7.fhir.r4.model.Bundle.HTTPVerb.GET;
|
||||||
|
import static org.hl7.fhir.r4.model.Bundle.HTTPVerb.POST;
|
||||||
|
import static org.hl7.fhir.r4.model.Bundle.HTTPVerb.PUT;
|
||||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
import static org.junit.jupiter.api.Assertions.fail;
|
import static org.junit.jupiter.api.Assertions.fail;
|
||||||
|
|
||||||
|
@ -65,7 +73,7 @@ public class TransactionHookTest extends BaseJpaR4SystemTest {
|
||||||
obs1.setValue(new Quantity(4));
|
obs1.setValue(new Quantity(4));
|
||||||
obs1.setId("Observation/O1");
|
obs1.setId("Observation/O1");
|
||||||
bundleEntryComponent.setResource(obs1);
|
bundleEntryComponent.setResource(obs1);
|
||||||
bundleEntryComponent.getRequest().setMethod(Bundle.HTTPVerb.POST).setUrl("Observation");
|
bundleEntryComponent.getRequest().setMethod(POST).setUrl("Observation");
|
||||||
|
|
||||||
bundleEntryComponent = b.addEntry();
|
bundleEntryComponent = b.addEntry();
|
||||||
final Observation obs2 = new Observation();
|
final Observation obs2 = new Observation();
|
||||||
|
@ -73,20 +81,20 @@ public class TransactionHookTest extends BaseJpaR4SystemTest {
|
||||||
obs2.setValue(new Quantity(4));
|
obs2.setValue(new Quantity(4));
|
||||||
obs2.setId("Observation/O2");
|
obs2.setId("Observation/O2");
|
||||||
bundleEntryComponent.setResource(obs2);
|
bundleEntryComponent.setResource(obs2);
|
||||||
bundleEntryComponent.getRequest().setMethod(Bundle.HTTPVerb.POST).setUrl("Observation");
|
bundleEntryComponent.getRequest().setMethod(POST).setUrl("Observation");
|
||||||
|
|
||||||
Bundle.BundleEntryComponent patientComponent = b.addEntry();
|
Bundle.BundleEntryComponent patientComponent = b.addEntry();
|
||||||
Patient pat1 = new Patient();
|
Patient pat1 = new Patient();
|
||||||
pat1.setId("Patient/P1");
|
pat1.setId("Patient/P1");
|
||||||
pat1.setManagingOrganization(new Reference("Organization/Org1"));
|
pat1.setManagingOrganization(new Reference("Organization/Org1"));
|
||||||
patientComponent.setResource(pat1);
|
patientComponent.setResource(pat1);
|
||||||
patientComponent.getRequest().setMethod(Bundle.HTTPVerb.POST).setUrl("Patient");
|
patientComponent.getRequest().setMethod(POST).setUrl("Patient");
|
||||||
|
|
||||||
Bundle.BundleEntryComponent organizationComponent = b.addEntry();
|
Bundle.BundleEntryComponent organizationComponent = b.addEntry();
|
||||||
Organization org1 = new Organization();
|
Organization org1 = new Organization();
|
||||||
org1.setId("Organization/Org1");
|
org1.setId("Organization/Org1");
|
||||||
organizationComponent.setResource(org1);
|
organizationComponent.setResource(org1);
|
||||||
organizationComponent.getRequest().setMethod(Bundle.HTTPVerb.POST).setUrl("Patient");
|
organizationComponent.getRequest().setMethod(POST).setUrl("Patient");
|
||||||
|
|
||||||
BundleUtil.sortEntriesIntoProcessingOrder(myFhirCtx, b);
|
BundleUtil.sortEntriesIntoProcessingOrder(myFhirCtx, b);
|
||||||
|
|
||||||
|
@ -112,7 +120,7 @@ public class TransactionHookTest extends BaseJpaR4SystemTest {
|
||||||
obs1.setId("Observation/O1");
|
obs1.setId("Observation/O1");
|
||||||
obs1.setHasMember(Collections.singletonList(new Reference("Observation/O2")));
|
obs1.setHasMember(Collections.singletonList(new Reference("Observation/O2")));
|
||||||
bundleEntryComponent.setResource(obs1);
|
bundleEntryComponent.setResource(obs1);
|
||||||
bundleEntryComponent.getRequest().setMethod(Bundle.HTTPVerb.POST).setUrl("Observation");
|
bundleEntryComponent.getRequest().setMethod(POST).setUrl("Observation");
|
||||||
|
|
||||||
bundleEntryComponent = b.addEntry();
|
bundleEntryComponent = b.addEntry();
|
||||||
final Observation obs2 = new Observation();
|
final Observation obs2 = new Observation();
|
||||||
|
@ -121,7 +129,7 @@ public class TransactionHookTest extends BaseJpaR4SystemTest {
|
||||||
obs2.setId("Observation/O2");
|
obs2.setId("Observation/O2");
|
||||||
obs2.setHasMember(Collections.singletonList(new Reference("Observation/O1")));
|
obs2.setHasMember(Collections.singletonList(new Reference("Observation/O1")));
|
||||||
bundleEntryComponent.setResource(obs2);
|
bundleEntryComponent.setResource(obs2);
|
||||||
bundleEntryComponent.getRequest().setMethod(Bundle.HTTPVerb.POST).setUrl("Observation");
|
bundleEntryComponent.getRequest().setMethod(POST).setUrl("Observation");
|
||||||
try {
|
try {
|
||||||
BundleUtil.sortEntriesIntoProcessingOrder(myFhirCtx, b);
|
BundleUtil.sortEntriesIntoProcessingOrder(myFhirCtx, b);
|
||||||
fail();
|
fail();
|
||||||
|
@ -130,6 +138,81 @@ public class TransactionHookTest extends BaseJpaR4SystemTest {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testTransactionSortingReturnsOperationsInCorrectOrder() {
|
||||||
|
|
||||||
|
Bundle b = new Bundle();
|
||||||
|
|
||||||
|
//UPDATE patient
|
||||||
|
Bundle.BundleEntryComponent patientUpdateComponent= b.addEntry();
|
||||||
|
final Patient p2 = new Patient();
|
||||||
|
p2.setId("Patient/P2");
|
||||||
|
p2.getNameFirstRep().setFamily("Test!");
|
||||||
|
patientUpdateComponent.setResource(p2);
|
||||||
|
patientUpdateComponent.getRequest().setMethod(PUT).setUrl("Patient/P2");
|
||||||
|
|
||||||
|
//CREATE observation
|
||||||
|
Bundle.BundleEntryComponent bundleEntryComponent = b.addEntry();
|
||||||
|
final Observation obs1 = new Observation();
|
||||||
|
obs1.setStatus(Observation.ObservationStatus.FINAL);
|
||||||
|
obs1.setSubject(new Reference("Patient/P1"));
|
||||||
|
obs1.setValue(new Quantity(4));
|
||||||
|
obs1.setId("Observation/O1");
|
||||||
|
bundleEntryComponent.setResource(obs1);
|
||||||
|
bundleEntryComponent.getRequest().setMethod(POST).setUrl("Observation");
|
||||||
|
|
||||||
|
//DELETE medication
|
||||||
|
Bundle.BundleEntryComponent medicationComponent= b.addEntry();
|
||||||
|
final Medication med1 = new Medication();
|
||||||
|
med1.setId("Medication/M1");
|
||||||
|
medicationComponent.setResource(med1);
|
||||||
|
medicationComponent.getRequest().setMethod(DELETE).setUrl("Medication");
|
||||||
|
|
||||||
|
//GET medication
|
||||||
|
Bundle.BundleEntryComponent searchComponent = b.addEntry();
|
||||||
|
searchComponent.getRequest().setMethod(GET).setUrl("Medication?code=123");
|
||||||
|
|
||||||
|
//CREATE patient
|
||||||
|
Bundle.BundleEntryComponent patientComponent = b.addEntry();
|
||||||
|
Patient pat1 = new Patient();
|
||||||
|
pat1.setId("Patient/P1");
|
||||||
|
pat1.setManagingOrganization(new Reference("Organization/Org1"));
|
||||||
|
patientComponent.setResource(pat1);
|
||||||
|
patientComponent.getRequest().setMethod(POST).setUrl("Patient");
|
||||||
|
|
||||||
|
//CREATE organization
|
||||||
|
Bundle.BundleEntryComponent organizationComponent = b.addEntry();
|
||||||
|
Organization org1 = new Organization();
|
||||||
|
org1.setId("Organization/Org1");
|
||||||
|
organizationComponent.setResource(org1);
|
||||||
|
organizationComponent.getRequest().setMethod(POST).setUrl("Organization");
|
||||||
|
|
||||||
|
//DELETE ExplanationOfBenefit
|
||||||
|
Bundle.BundleEntryComponent explanationOfBenefitComponent= b.addEntry();
|
||||||
|
final ExplanationOfBenefit eob1 = new ExplanationOfBenefit();
|
||||||
|
eob1.setId("ExplanationOfBenefit/E1");
|
||||||
|
explanationOfBenefitComponent.setResource(eob1);
|
||||||
|
explanationOfBenefitComponent.getRequest().setMethod(DELETE).setUrl("ExplanationOfBenefit");
|
||||||
|
|
||||||
|
BundleUtil.sortEntriesIntoProcessingOrder(myFhirCtx, b);
|
||||||
|
|
||||||
|
assertThat(b.getEntry(), hasSize(7));
|
||||||
|
|
||||||
|
List<Bundle.BundleEntryComponent> entry = b.getEntry();
|
||||||
|
|
||||||
|
// DELETEs first
|
||||||
|
assertThat(entry.get(0).getRequest().getMethod(), is(equalTo(DELETE)));
|
||||||
|
assertThat(entry.get(1).getRequest().getMethod(), is(equalTo(DELETE)));
|
||||||
|
// Then POSTs
|
||||||
|
assertThat(entry.get(2).getRequest().getMethod(), is(equalTo(POST)));
|
||||||
|
assertThat(entry.get(3).getRequest().getMethod(), is(equalTo(POST)));
|
||||||
|
assertThat(entry.get(4).getRequest().getMethod(), is(equalTo(POST)));
|
||||||
|
// Then PUTs
|
||||||
|
assertThat(entry.get(5).getRequest().getMethod(), is(equalTo(PUT)));
|
||||||
|
// Then GETs
|
||||||
|
assertThat(entry.get(6).getRequest().getMethod(), is(equalTo(GET)));
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testTransactionSorterReturnsDeletesInCorrectProcessingOrder() {
|
public void testTransactionSorterReturnsDeletesInCorrectProcessingOrder() {
|
||||||
Bundle b = new Bundle();
|
Bundle b = new Bundle();
|
||||||
|
@ -140,7 +223,7 @@ public class TransactionHookTest extends BaseJpaR4SystemTest {
|
||||||
obs1.setValue(new Quantity(4));
|
obs1.setValue(new Quantity(4));
|
||||||
obs1.setId("Observation/O1");
|
obs1.setId("Observation/O1");
|
||||||
bundleEntryComponent.setResource(obs1);
|
bundleEntryComponent.setResource(obs1);
|
||||||
bundleEntryComponent.getRequest().setMethod(Bundle.HTTPVerb.DELETE).setUrl("Observation");
|
bundleEntryComponent.getRequest().setMethod(DELETE).setUrl("Observation");
|
||||||
|
|
||||||
bundleEntryComponent = b.addEntry();
|
bundleEntryComponent = b.addEntry();
|
||||||
final Observation obs2 = new Observation();
|
final Observation obs2 = new Observation();
|
||||||
|
@ -148,20 +231,20 @@ public class TransactionHookTest extends BaseJpaR4SystemTest {
|
||||||
obs2.setValue(new Quantity(4));
|
obs2.setValue(new Quantity(4));
|
||||||
obs2.setId("Observation/O2");
|
obs2.setId("Observation/O2");
|
||||||
bundleEntryComponent.setResource(obs2);
|
bundleEntryComponent.setResource(obs2);
|
||||||
bundleEntryComponent.getRequest().setMethod(Bundle.HTTPVerb.DELETE).setUrl("Observation");
|
bundleEntryComponent.getRequest().setMethod(DELETE).setUrl("Observation");
|
||||||
|
|
||||||
Bundle.BundleEntryComponent patientComponent = b.addEntry();
|
Bundle.BundleEntryComponent patientComponent = b.addEntry();
|
||||||
Patient pat1 = new Patient();
|
Patient pat1 = new Patient();
|
||||||
pat1.setId("Patient/P1");
|
pat1.setId("Patient/P1");
|
||||||
pat1.setManagingOrganization(new Reference("Organization/Org1"));
|
pat1.setManagingOrganization(new Reference("Organization/Org1"));
|
||||||
patientComponent.setResource(pat1);
|
patientComponent.setResource(pat1);
|
||||||
patientComponent.getRequest().setMethod(Bundle.HTTPVerb.DELETE).setUrl("Patient");
|
patientComponent.getRequest().setMethod(DELETE).setUrl("Patient");
|
||||||
|
|
||||||
Bundle.BundleEntryComponent organizationComponent = b.addEntry();
|
Bundle.BundleEntryComponent organizationComponent = b.addEntry();
|
||||||
Organization org1 = new Organization();
|
Organization org1 = new Organization();
|
||||||
org1.setId("Organization/Org1");
|
org1.setId("Organization/Org1");
|
||||||
organizationComponent.setResource(org1);
|
organizationComponent.setResource(org1);
|
||||||
organizationComponent.getRequest().setMethod(Bundle.HTTPVerb.DELETE).setUrl("Organization");
|
organizationComponent.getRequest().setMethod(DELETE).setUrl("Organization");
|
||||||
|
|
||||||
BundleUtil.sortEntriesIntoProcessingOrder(myFhirCtx, b);
|
BundleUtil.sortEntriesIntoProcessingOrder(myFhirCtx, b);
|
||||||
|
|
||||||
|
@ -206,16 +289,16 @@ public class TransactionHookTest extends BaseJpaR4SystemTest {
|
||||||
Bundle.BundleEntryComponent bundleEntryComponent = b.addEntry();
|
Bundle.BundleEntryComponent bundleEntryComponent = b.addEntry();
|
||||||
|
|
||||||
bundleEntryComponent.setResource(obs1);
|
bundleEntryComponent.setResource(obs1);
|
||||||
bundleEntryComponent.getRequest().setMethod(Bundle.HTTPVerb.POST).setUrl("Observation");
|
bundleEntryComponent.getRequest().setMethod(POST).setUrl("Observation");
|
||||||
|
|
||||||
Bundle.BundleEntryComponent patientComponent = b.addEntry();
|
Bundle.BundleEntryComponent patientComponent = b.addEntry();
|
||||||
patientComponent.setFullUrl(urnReference);
|
patientComponent.setFullUrl(urnReference);
|
||||||
patientComponent.setResource(pat1);
|
patientComponent.setResource(pat1);
|
||||||
patientComponent.getRequest().setMethod(Bundle.HTTPVerb.POST).setUrl("Patient");
|
patientComponent.getRequest().setMethod(POST).setUrl("Patient");
|
||||||
|
|
||||||
|
|
||||||
//Delete an observation
|
//Delete an observation
|
||||||
b.addEntry().getRequest().setMethod(Bundle.HTTPVerb.DELETE).setUrl(daoMethodOutcome.getId().toUnqualifiedVersionless().getValue());
|
b.addEntry().getRequest().setMethod(DELETE).setUrl(daoMethodOutcome.getId().toUnqualifiedVersionless().getValue());
|
||||||
|
|
||||||
|
|
||||||
myPointcutLatch.setExpectedCount(4);
|
myPointcutLatch.setExpectedCount(4);
|
||||||
|
@ -261,8 +344,8 @@ public class TransactionHookTest extends BaseJpaR4SystemTest {
|
||||||
myDiagnosticReportDao.read(rptId);
|
myDiagnosticReportDao.read(rptId);
|
||||||
|
|
||||||
Bundle b = new Bundle();
|
Bundle b = new Bundle();
|
||||||
b.addEntry().getRequest().setMethod(Bundle.HTTPVerb.DELETE).setUrl(rptId.getValue());
|
b.addEntry().getRequest().setMethod(DELETE).setUrl(rptId.getValue());
|
||||||
b.addEntry().getRequest().setMethod(Bundle.HTTPVerb.DELETE).setUrl(obs2id.getValue());
|
b.addEntry().getRequest().setMethod(DELETE).setUrl(obs2id.getValue());
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// transaction should succeed because the DiagnosticReport which references obs2 is also deleted
|
// transaction should succeed because the DiagnosticReport which references obs2 is also deleted
|
||||||
|
@ -296,8 +379,8 @@ public class TransactionHookTest extends BaseJpaR4SystemTest {
|
||||||
rpt.addIdentifier().setSystem("foo").setValue("IDENTIFIER");
|
rpt.addIdentifier().setSystem("foo").setValue("IDENTIFIER");
|
||||||
|
|
||||||
Bundle b = new Bundle();
|
Bundle b = new Bundle();
|
||||||
b.addEntry().getRequest().setMethod(Bundle.HTTPVerb.DELETE).setUrl("Observation?_has:DiagnosticReport:result:identifier=foo|IDENTIFIER");
|
b.addEntry().getRequest().setMethod(DELETE).setUrl("Observation?_has:DiagnosticReport:result:identifier=foo|IDENTIFIER");
|
||||||
b.addEntry().setResource(rpt).getRequest().setMethod(Bundle.HTTPVerb.PUT).setUrl("DiagnosticReport?identifier=foo|IDENTIFIER");
|
b.addEntry().setResource(rpt).getRequest().setMethod(PUT).setUrl("DiagnosticReport?identifier=foo|IDENTIFIER");
|
||||||
mySystemDao.transaction(mySrd, b);
|
mySystemDao.transaction(mySrd, b);
|
||||||
|
|
||||||
myObservationDao.read(obs1id);
|
myObservationDao.read(obs1id);
|
||||||
|
@ -334,8 +417,8 @@ public class TransactionHookTest extends BaseJpaR4SystemTest {
|
||||||
rpt.addResult(new Reference(obs2id));
|
rpt.addResult(new Reference(obs2id));
|
||||||
|
|
||||||
Bundle b = new Bundle();
|
Bundle b = new Bundle();
|
||||||
b.addEntry().getRequest().setMethod(Bundle.HTTPVerb.DELETE).setUrl(obs1id.getValue());
|
b.addEntry().getRequest().setMethod(DELETE).setUrl(obs1id.getValue());
|
||||||
b.addEntry().setResource(rpt).getRequest().setMethod(Bundle.HTTPVerb.PUT).setUrl(rptId.getValue());
|
b.addEntry().setResource(rpt).getRequest().setMethod(PUT).setUrl(rptId.getValue());
|
||||||
mySystemDao.transaction(mySrd, b);
|
mySystemDao.transaction(mySrd, b);
|
||||||
|
|
||||||
myObservationDao.read(obs2id);
|
myObservationDao.read(obs2id);
|
||||||
|
@ -374,8 +457,8 @@ public class TransactionHookTest extends BaseJpaR4SystemTest {
|
||||||
rpt.addResult(new Reference(obs2id));
|
rpt.addResult(new Reference(obs2id));
|
||||||
|
|
||||||
Bundle b = new Bundle();
|
Bundle b = new Bundle();
|
||||||
b.addEntry().getRequest().setMethod(Bundle.HTTPVerb.DELETE).setUrl("Observation?_has:DiagnosticReport:result:identifier=foo|IDENTIFIER");
|
b.addEntry().getRequest().setMethod(DELETE).setUrl("Observation?_has:DiagnosticReport:result:identifier=foo|IDENTIFIER");
|
||||||
b.addEntry().setResource(rpt).getRequest().setMethod(Bundle.HTTPVerb.PUT).setUrl("DiagnosticReport?identifier=foo|IDENTIFIER");
|
b.addEntry().setResource(rpt).getRequest().setMethod(PUT).setUrl("DiagnosticReport?identifier=foo|IDENTIFIER");
|
||||||
try {
|
try {
|
||||||
mySystemDao.transaction(mySrd, b);
|
mySystemDao.transaction(mySrd, b);
|
||||||
fail();
|
fail();
|
||||||
|
|
Loading…
Reference in New Issue