use of gov.cms.bfd.model.rda.PreAdjMcsClaim in project beneficiary-fhir-data by CMSgov.
the class McsClaimTransformerTest method basicFieldsTestForDetailObjectTransformation.
/**
* Basic smoke test for transformation of detail objects prior to all of the individual field
* tests.
*/
@Test
public void basicFieldsTestForDetailObjectTransformation() {
claim.setIdrClmHdIcn("123456789012345");
claim.setIdrContrId("12345");
claim.setIdrClaimType("3");
claim.setLastUpdated(clock.instant());
final PreAdjMcsDetail detail = new PreAdjMcsDetail();
detail.setIdrClmHdIcn(claim.getIdrClmHdIcn());
detail.setPriority((short) 0);
detail.setIdrDtlStatus("F");
detail.setIdrDtlFromDate(LocalDate.of(2020, 1, 9));
detail.setIdrDtlToDate(LocalDate.of(2020, 1, 10));
detail.setIdrProcCode("abCDe");
detail.setIdrModOne("aB");
detail.setIdrModTwo("Cd");
detail.setIdrModThree("EF");
detail.setIdrModFour("gh");
detail.setIdrDtlDiagIcdType("9");
detail.setIdrDtlPrimaryDiagCode("hetwpqj");
detail.setIdrKPosLnameOrg("123456789012345678901234567890123456789012345678901234567890");
detail.setIdrKPosFname("12345678901234567890123456789012345");
detail.setIdrKPosMname("1234567890123456789012345");
detail.setIdrKPosAddr1("1234567890123456789012345678901234567890123456789012345");
detail.setIdrKPosAddr2_1st("123456789012345678901234567890");
detail.setIdrKPosAddr2_2nd("1234567890123456789012345");
detail.setIdrKPosCity("123456789012345678901234567890");
detail.setIdrKPosState("12");
detail.setIdrKPosZip("123456789012345");
detail.setLastUpdated(clock.instant());
claim.getDetails().add(detail);
claimBuilder.setIdrClmHdIcn("123456789012345").setIdrContrId("12345").setIdrClaimTypeEnum(McsClaimType.CLAIM_TYPE_MEDICAL).addMcsDetails(McsDetail.newBuilder().setIdrDtlStatusEnum(McsDetailStatus.DETAIL_STATUS_FINAL).setIdrDtlFromDate("2020-01-09").setIdrDtlToDate("2020-01-10").setIdrProcCode("abCDe").setIdrModOne("aB").setIdrModTwo("Cd").setIdrModThree("EF").setIdrModFour("gh").setIdrDtlDiagIcdTypeEnum(McsDiagnosisIcdType.DIAGNOSIS_ICD_TYPE_ICD9).setIdrDtlPrimaryDiagCode("hetwpqj").setIdrKPosLnameOrg("123456789012345678901234567890123456789012345678901234567890").setIdrKPosFname("12345678901234567890123456789012345").setIdrKPosMname("1234567890123456789012345").setIdrKPosAddr1("1234567890123456789012345678901234567890123456789012345").setIdrKPosAddr21St("123456789012345678901234567890").setIdrKPosAddr22Nd("1234567890123456789012345").setIdrKPosCity("123456789012345678901234567890").setIdrKPosState("12").setIdrKPosZip("123456789012345").build());
changeBuilder.setChangeType(ChangeType.CHANGE_TYPE_INSERT).setClaim(claimBuilder.build());
assertChangeMatches(RdaChange.Type.INSERT);
PreAdjMcsClaim transformed = transformer.transformClaim(changeBuilder.build()).getClaim();
assertListContentsHaveSamePropertyValues(claim.getDetails(), transformed.getDetails(), PreAdjMcsDetail::getPriority);
}
use of gov.cms.bfd.model.rda.PreAdjMcsClaim in project beneficiary-fhir-data by CMSgov.
the class McsClaimTransformerTest method setUp.
@BeforeEach
public void setUp() {
changeBuilder = McsClaimChange.newBuilder();
claimBuilder = McsClaim.newBuilder();
claim = new PreAdjMcsClaim();
claim.setSequenceNumber(0L);
}
use of gov.cms.bfd.model.rda.PreAdjMcsClaim in project beneficiary-fhir-data by CMSgov.
the class McsClaimTransformerTest method basicFieldsTestForDiagCodeObjectTransformation.
/**
* Basic smoke test for transformation of diagnosis code objects prior to all of the individual
* field tests.
*/
@Test
public void basicFieldsTestForDiagCodeObjectTransformation() {
claim.setIdrClmHdIcn("123456789012345");
claim.setIdrContrId("12345");
claim.setIdrClaimType("3");
claim.setLastUpdated(clock.instant());
PreAdjMcsDiagnosisCode diagCode = new PreAdjMcsDiagnosisCode();
diagCode.setIdrClmHdIcn(claim.getIdrClmHdIcn());
diagCode.setPriority((short) 0);
diagCode.setIdrDiagIcdType("9");
diagCode.setIdrDiagCode("1234567");
diagCode.setLastUpdated(clock.instant());
claim.getDiagCodes().add(diagCode);
diagCode = new PreAdjMcsDiagnosisCode();
diagCode.setIdrClmHdIcn(claim.getIdrClmHdIcn());
diagCode.setPriority((short) 1);
diagCode.setIdrDiagIcdType("0");
diagCode.setIdrDiagCode("jdsyejs");
diagCode.setLastUpdated(clock.instant());
claim.getDiagCodes().add(diagCode);
claimBuilder.setIdrClmHdIcn("123456789012345").setIdrContrId("12345").setIdrClaimTypeEnum(McsClaimType.CLAIM_TYPE_MEDICAL).addMcsDiagnosisCodes(McsDiagnosisCode.newBuilder().setIdrClmHdIcn("123456789012345").setIdrDiagCode("1234567").setIdrDiagIcdTypeEnum(McsDiagnosisIcdType.DIAGNOSIS_ICD_TYPE_ICD9).build()).addMcsDiagnosisCodes(McsDiagnosisCode.newBuilder().setIdrClmHdIcn("123456789012345").setIdrDiagCode("jdsyejs").setIdrDiagIcdTypeEnum(McsDiagnosisIcdType.DIAGNOSIS_ICD_TYPE_ICD10).build());
changeBuilder.setChangeType(ChangeType.CHANGE_TYPE_INSERT).setClaim(claimBuilder.build());
assertChangeMatches(RdaChange.Type.INSERT);
PreAdjMcsClaim transformed = transformer.transformClaim(changeBuilder.build()).getClaim();
assertListContentsHaveSamePropertyValues(claim.getDetails(), transformed.getDetails(), PreAdjMcsDetail::getPriority);
}
use of gov.cms.bfd.model.rda.PreAdjMcsClaim in project beneficiary-fhir-data by CMSgov.
the class McsClaimRdaSinkIT method mcsClaim.
@Test
public void mcsClaim() throws Exception {
RdaPipelineTestUtils.runTestWithTemporaryDb(McsClaimRdaSinkIT.class, Clock.systemUTC(), (appState, entityManager) -> {
final LocalDate today = LocalDate.of(2022, 1, 3);
final Instant now = today.atStartOfDay().toInstant(ZoneOffset.UTC);
final Clock clock = Clock.fixed(now, ZoneOffset.UTC);
final PreAdjMcsClaim claim = new PreAdjMcsClaim();
claim.setSequenceNumber(7L);
claim.setIdrClmHdIcn("3");
claim.setIdrContrId("c1");
claim.setIdrHic("hc");
claim.setIdrClaimType("c");
claim.setMbiRecord(new Mbi(1L, "12345678901", "hash-of-12345678901"));
final PreAdjMcsDetail detail = new PreAdjMcsDetail();
detail.setIdrClmHdIcn(claim.getIdrClmHdIcn());
detail.setPriority((short) 0);
detail.setIdrDtlStatus("P");
claim.getDetails().add(detail);
final PreAdjMcsDiagnosisCode diagCode = new PreAdjMcsDiagnosisCode();
diagCode.setIdrClmHdIcn(claim.getIdrClmHdIcn());
diagCode.setPriority((short) 0);
diagCode.setIdrDiagIcdType("T");
diagCode.setIdrDiagCode("D");
claim.getDiagCodes().add(diagCode);
final McsDetail detailMessage = McsDetail.newBuilder().setIdrDtlStatusUnrecognized(detail.getIdrDtlStatus()).build();
final McsDiagnosisCode diagCodeMessage = McsDiagnosisCode.newBuilder().setIdrDiagIcdTypeUnrecognized(diagCode.getIdrDiagIcdType()).setIdrDiagCode(diagCode.getIdrDiagCode()).build();
final McsClaim claimMessage = McsClaim.newBuilder().setIdrClmHdIcn(claim.getIdrClmHdIcn()).setIdrContrId(claim.getIdrContrId()).setIdrClaimMbi(claim.getIdrClaimMbi()).setIdrHic(claim.getIdrHic()).setIdrClaimTypeUnrecognized(claim.getIdrClaimType()).addMcsDetails(detailMessage).addMcsDiagnosisCodes(diagCodeMessage).build();
final McsClaimChange message = McsClaimChange.newBuilder().setSeq(claim.getSequenceNumber()).setIcn(claim.getIdrClmHdIcn()).setClaim(claimMessage).build();
final IdHasher hasher = new IdHasher(new IdHasher.Config(1, "notarealpepper"));
final McsClaimTransformer transformer = new McsClaimTransformer(clock, MbiCache.computedCache(hasher.getConfig()));
final McsClaimRdaSink sink = new McsClaimRdaSink(appState, transformer, true);
final String expectedMbiHash = hasher.computeIdentifierHash(claim.getIdrClaimMbi());
assertEquals(Optional.empty(), sink.readMaxExistingSequenceNumber());
int count = sink.writeMessage("version", message);
assertEquals(1, count);
List<PreAdjMcsClaim> resultClaims = entityManager.createQuery("select c from PreAdjMcsClaim c", PreAdjMcsClaim.class).getResultList();
assertEquals(1, resultClaims.size());
PreAdjMcsClaim resultClaim = resultClaims.get(0);
assertEquals(Long.valueOf(7), resultClaim.getSequenceNumber());
assertEquals(claim.getIdrHic(), resultClaim.getIdrHic());
assertEquals(claim.getIdrClaimMbi(), resultClaim.getIdrClaimMbi());
assertEquals(expectedMbiHash, resultClaim.getIdrClaimMbiHash());
assertEquals(claim.getDetails().size(), resultClaim.getDetails().size());
assertEquals(claim.getDiagCodes().size(), resultClaim.getDiagCodes().size());
assertEquals(Optional.of(claim.getSequenceNumber()), sink.readMaxExistingSequenceNumber());
Mbi databaseMbiEntity = RdaPipelineTestUtils.lookupCachedMbi(entityManager, claimMessage.getIdrClaimMbi());
assertNotNull(databaseMbiEntity);
assertEquals(claim.getIdrClaimMbi(), databaseMbiEntity.getMbi());
assertEquals(expectedMbiHash, databaseMbiEntity.getHash());
});
}
use of gov.cms.bfd.model.rda.PreAdjMcsClaim in project beneficiary-fhir-data by CMSgov.
the class RdaLoadJobIT method mcsClaimsTest.
@Test
public void mcsClaimsTest() throws Exception {
RdaPipelineTestUtils.runTestWithTemporaryDb(RdaLoadJobIT.class, clock, (appState, entityManager) -> {
assertTablesAreEmpty(entityManager);
RdaServer.InProcessConfig.builder().serverName(RdaServerJob.Config.DEFAULT_SERVER_NAME).mcsSourceFactory(mcsJsonSource(mcsClaimJson)).build().runWithNoParam(() -> {
final RdaLoadOptions config = createRdaLoadOptions(-1);
final PipelineJob<?> job = config.createMcsClaimsLoadJob(appState);
job.call();
});
final ImmutableList<McsClaimChange> expectedClaims = JsonMessageSource.parseAll(mcsClaimJson, JsonMessageSource::parseMcsClaimChange);
List<PreAdjMcsClaim> claims = getPreAdjMcsClaims(entityManager);
assertEquals(expectedClaims.size(), claims.size());
for (PreAdjMcsClaim resultClaim : claims) {
McsClaim expected = findMatchingMcsClaim(expectedClaims, resultClaim);
assertNotNull(expected);
assertEquals(expected.getIdrHic(), Strings.nullToEmpty(resultClaim.getIdrHic()));
assertEquals(expected.getIdrClaimMbi(), Strings.nullToEmpty(resultClaim.getIdrClaimMbi()));
assertEquals(expected.getMcsDetailsCount(), resultClaim.getDetails().size());
assertEquals(expected.getMcsDiagnosisCodesCount(), resultClaim.getDiagCodes().size());
}
});
}
Aggregations