use of ca.uhn.fhir.rest.client.api.IGenericClient in project beneficiary-fhir-data by CMSgov.
the class R4CoverageResourceProviderIT method searchWithLastUpdated.
/**
* Verifies that {@link
* gov.cms.bfd.server.war.stu3.providers.CoverageResourceProvider#searchByBeneficiary} works as
* expected for a search with a lastUpdated value.
*/
@Test
public void searchWithLastUpdated() {
List<Object> loadedRecords = ServerTestUtils.get().loadData(Arrays.asList(StaticRifResourceGroup.SAMPLE_A.getResources()));
IGenericClient fhirClient = ServerTestUtils.get().createFhirClientV2();
Beneficiary beneficiary = loadedRecords.stream().filter(r -> r instanceof Beneficiary).map(r -> (Beneficiary) r).findFirst().get();
Bundle searchResults = fhirClient.search().forResource(Coverage.class).where(Coverage.BENEFICIARY.hasId(TransformerUtilsV2.buildPatientId(beneficiary))).returnBundle(Bundle.class).execute();
LOGGER.info("Bundle information: database {}, first {}", searchResults.getMeta().getLastUpdated(), searchResults.getEntry().get(0).getResource().getMeta().getLastUpdated());
Date nowDate = new Date();
Date secondsAgoDate = Date.from(Instant.now().minusSeconds(100));
DateRangeParam inBoundsRange = new DateRangeParam().setLowerBoundInclusive(secondsAgoDate).setUpperBoundExclusive(nowDate);
LOGGER.info("Query Date Range {}", inBoundsRange);
Bundle searchInBoundsResults = fhirClient.search().forResource(Coverage.class).where(Coverage.BENEFICIARY.hasId(TransformerUtilsV2.buildPatientId(beneficiary))).lastUpdated(inBoundsRange).returnBundle(Bundle.class).execute();
assertNotNull(searchInBoundsResults);
assertEquals(MedicareSegment.values().length, searchInBoundsResults.getTotal());
Date hourAgoDate = Date.from(Instant.now().minusSeconds(3600));
DateRangeParam outOfBoundsRange = new DateRangeParam(hourAgoDate, secondsAgoDate);
Bundle searchOutOfBoundsResult = fhirClient.search().forResource(Coverage.class).where(Coverage.BENEFICIARY.hasId(TransformerUtilsV2.buildPatientId(beneficiary))).lastUpdated(outOfBoundsRange).returnBundle(Bundle.class).execute();
assertNotNull(searchOutOfBoundsResult);
assertEquals(0, searchOutOfBoundsResult.getTotal());
}
use of ca.uhn.fhir.rest.client.api.IGenericClient in project beneficiary-fhir-data by CMSgov.
the class R4CoverageResourceProviderIT method readCoveragesForMissingBeneficiary.
/**
* Verifies that {@link
* gov.cms.bfd.server.war.r4.providers.R4CoverageResourceProvider#read(org.hl7.fhir.r4.model.IdType)}
* works as expected for {@link Beneficiary}-derived {@link Coverage}s that do not exist in the DB
* (with both positive and negative IDs).
*/
@Test
public void readCoveragesForMissingBeneficiary() {
IGenericClient fhirClient = ServerTestUtils.get().createFhirClientV2();
// No data is loaded, so these should return nothing.
ResourceNotFoundException exception;
exception = null;
try {
fhirClient.read().resource(Coverage.class).withId(TransformerUtilsV2.buildCoverageId(MedicareSegment.PART_A, "1234")).execute();
} catch (ResourceNotFoundException e) {
exception = e;
}
assertNotNull(exception);
exception = null;
try {
fhirClient.read().resource(Coverage.class).withId(TransformerUtilsV2.buildCoverageId(MedicareSegment.PART_B, "1234")).execute();
} catch (ResourceNotFoundException e) {
exception = e;
}
assertNotNull(exception);
// Tests negative ID will pass regex pattern for valid coverageId.
exception = null;
try {
fhirClient.read().resource(Coverage.class).withId(TransformerUtilsV2.buildCoverageId(MedicareSegment.PART_D, "-1234")).execute();
} catch (ResourceNotFoundException e) {
exception = e;
}
assertNotNull(exception);
}
use of ca.uhn.fhir.rest.client.api.IGenericClient in project beneficiary-fhir-data by CMSgov.
the class R4CoverageResourceProviderIT method searchByExistingBeneficiary.
/**
* Verifies that {@link
* gov.cms.bfd.server.war.r4.providers.R4CoverageResourceProvider#searchByBeneficiary(ca.uhn.fhir.rest.param.ReferenceParam)}
* works as expected for a {@link Beneficiary} that does exist in the DB.
*
* @throws FHIRException (indicates test failure)
*/
@Test
public void searchByExistingBeneficiary() throws FHIRException {
List<Object> loadedRecords = ServerTestUtils.get().loadData(Arrays.asList(StaticRifResourceGroup.SAMPLE_A.getResources()));
IGenericClient fhirClient = ServerTestUtils.get().createFhirClientV2();
Beneficiary beneficiary = loadedRecords.stream().filter(r -> r instanceof Beneficiary).map(r -> (Beneficiary) r).findFirst().get();
Bundle searchResults = fhirClient.search().forResource(Coverage.class).where(Coverage.BENEFICIARY.hasId(TransformerUtilsV2.buildPatientId(beneficiary))).returnBundle(Bundle.class).execute();
assertNotNull(searchResults);
assertEquals(MedicareSegment.values().length, searchResults.getTotal());
/*
* Verify that no paging links exist within the bundle.
*/
assertNull(searchResults.getLink(Constants.LINK_FIRST));
assertNull(searchResults.getLink(Constants.LINK_NEXT));
assertNull(searchResults.getLink(Constants.LINK_PREVIOUS));
assertNull(searchResults.getLink(Constants.LINK_LAST));
/*
* Verify that each of the expected Coverages (one for every
* MedicareSegment) is present and looks correct.
*/
Coverage partACoverageFromSearchResult = searchResults.getEntry().stream().filter(e -> e.getResource() instanceof Coverage).map(e -> (Coverage) e.getResource()).filter(c -> c.getClass_().stream().filter(cl -> TransformerConstants.COVERAGE_PLAN_PART_A.equals(cl.getValue())).findAny().isPresent()).findFirst().get();
CoverageTransformerV2Test.assertPartAMatches(beneficiary, partACoverageFromSearchResult);
Coverage partBCoverageFromSearchResult = searchResults.getEntry().stream().filter(e -> e.getResource() instanceof Coverage).map(e -> (Coverage) e.getResource()).filter(c -> c.getClass_().stream().filter(cl -> TransformerConstants.COVERAGE_PLAN_PART_B.equals(cl.getValue())).findAny().isPresent()).findFirst().get();
CoverageTransformerV2Test.assertPartBMatches(beneficiary, partBCoverageFromSearchResult);
Coverage partDCoverageFromSearchResult = searchResults.getEntry().stream().filter(e -> e.getResource() instanceof Coverage).map(e -> (Coverage) e.getResource()).filter(c -> c.getClass_().stream().filter(cl -> TransformerConstants.COVERAGE_PLAN_PART_D.equals(cl.getValue())).findAny().isPresent()).findFirst().get();
CoverageTransformerV2Test.assertPartDMatches(beneficiary, partDCoverageFromSearchResult);
}
use of ca.uhn.fhir.rest.client.api.IGenericClient in project beneficiary-fhir-data by CMSgov.
the class R4CoverageResourceProviderIT method readCoveragesForInvalidIdParam.
/**
* Verifies that {@link
* gov.cms.bfd.server.war.r4.providers.R4CoverageResourceProvider#read(org.hl7.fhir.r4.model.IdType)}
* works as expected for {@link Beneficiary}-derived {@link Coverage}s that has an invalid {@link
* gov.cms.bfd.server.war.r4.providers.R4CoverageResourceProvider#IdParam} parameter.
*/
@Test
public void readCoveragesForInvalidIdParam() {
IGenericClient fhirClient = ServerTestUtils.get().createFhirClientV2();
// Parameter is invalid, should throw exception
InvalidRequestException exception;
exception = null;
try {
fhirClient.read().resource(Coverage.class).withId(TransformerUtilsV2.buildCoverageId(MedicareSegment.PART_A, "1?234")).execute();
} catch (InvalidRequestException e) {
exception = e;
}
assertNotNull(exception);
}
use of ca.uhn.fhir.rest.client.api.IGenericClient in project beneficiary-fhir-data by CMSgov.
the class R4ClaimResponseResourceProviderIT method shouldGetCorrectFissClaimResponseResourceById.
@Test
void shouldGetCorrectFissClaimResponseResourceById() {
IGenericClient fhirClient = ServerTestUtils.get().createFhirClientV2();
ClaimResponse claimResult = fhirClient.read().resource(ClaimResponse.class).withId("f-123456").execute();
String expected = testUtils.expectedResponseFor("claimResponseFissRead");
String actual = FhirContext.forR4().newJsonParser().encodeResourceToString(claimResult);
AssertUtils.assertJsonEquals(expected, actual, IGNORE_PATTERNS);
}
Aggregations