Search in sources :

Example 6 with PreAdjFissProcCode

use of gov.cms.bfd.model.rda.PreAdjFissProcCode in project beneficiary-fhir-data by CMSgov.

the class FissClaimRdaSinkIT method fissClaim.

@Test
public void fissClaim() throws Exception {
    RdaPipelineTestUtils.runTestWithTemporaryDb(FissClaimRdaSinkIT.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 PreAdjFissClaim claim = new PreAdjFissClaim();
        claim.setSequenceNumber(3L);
        claim.setDcn("1");
        claim.setHicNo("h1");
        claim.setCurrStatus('T');
        claim.setCurrLoc1('A');
        claim.setCurrLoc2("1A");
        claim.setPracLocCity("city name can be very long indeed");
        claim.setMbiRecord(new Mbi(1L, "12345678901", "hash-of-12345678901"));
        final PreAdjFissProcCode procCode0 = new PreAdjFissProcCode();
        procCode0.setDcn(claim.getDcn());
        procCode0.setPriority((short) 0);
        procCode0.setProcCode("P");
        procCode0.setProcFlag("F");
        procCode0.setProcDate(today);
        claim.getProcCodes().add(procCode0);
        final PreAdjFissDiagnosisCode diagCode0 = new PreAdjFissDiagnosisCode();
        diagCode0.setDcn(claim.getDcn());
        diagCode0.setPriority((short) 0);
        diagCode0.setDiagCd2("cd2");
        diagCode0.setDiagPoaInd("Q");
        claim.getDiagCodes().add(diagCode0);
        final FissProcedureCode procCodeMessage = FissProcedureCode.newBuilder().setProcCd("P").setProcFlag("F").setProcDt("2022-01-03").build();
        final FissDiagnosisCode diagCodeMessage = FissDiagnosisCode.newBuilder().setDiagCd2("cd2").setDiagPoaIndUnrecognized("Q").build();
        final FissClaim claimMessage = FissClaim.newBuilder().setDcn(claim.getDcn()).setHicNo(claim.getHicNo()).setCurrStatusEnum(FissClaimStatus.CLAIM_STATUS_RTP).setCurrLoc1Unrecognized(String.valueOf(claim.getCurrLoc1())).setCurrLoc2Unrecognized(claim.getCurrLoc2()).setPracLocCity("city name can be very long indeed").addFissProcCodes(0, procCodeMessage).addFissDiagCodes(0, diagCodeMessage).setMbi(claim.getMbi()).build();
        final FissClaimChange message = FissClaimChange.newBuilder().setSeq(claim.getSequenceNumber()).setDcn(claim.getDcn()).setClaim(claimMessage).build();
        final IdHasher defaultIdHasher = new IdHasher(new IdHasher.Config(1, "notarealpepper"));
        final FissClaimTransformer transformer = new FissClaimTransformer(clock, MbiCache.computedCache(defaultIdHasher.getConfig()));
        final FissClaimRdaSink sink = new FissClaimRdaSink(appState, transformer, true);
        final String expectedMbiHash = defaultIdHasher.computeIdentifierHash(claim.getMbi());
        assertEquals(Optional.empty(), sink.readMaxExistingSequenceNumber());
        int count = sink.writeMessage("version", message);
        assertEquals(1, count);
        List<PreAdjFissClaim> claims = entityManager.createQuery("select c from PreAdjFissClaim c", PreAdjFissClaim.class).getResultList();
        assertEquals(1, claims.size());
        PreAdjFissClaim resultClaim = claims.get(0);
        assertEquals(Long.valueOf(3), resultClaim.getSequenceNumber());
        assertEquals(claim.getHicNo(), resultClaim.getHicNo());
        assertEquals(claim.getPracLocCity(), resultClaim.getPracLocCity());
        assertEquals(claim.getMbi(), resultClaim.getMbi());
        assertEquals(expectedMbiHash, resultClaim.getMbiHash());
        assertEquals(claim.getProcCodes().size(), resultClaim.getProcCodes().size());
        assertEquals(claim.getDiagCodes().size(), resultClaim.getDiagCodes().size());
        assertEquals(Optional.of(claim.getSequenceNumber()), sink.readMaxExistingSequenceNumber());
        Mbi databaseMbiEntity = RdaPipelineTestUtils.lookupCachedMbi(entityManager, claimMessage.getMbi());
        assertNotNull(databaseMbiEntity);
        assertEquals(claim.getMbi(), databaseMbiEntity.getMbi());
        assertEquals(expectedMbiHash, databaseMbiEntity.getHash());
    });
}
Also used : FissProcedureCode(gov.cms.mpsm.rda.v1.fiss.FissProcedureCode) Instant(java.time.Instant) PreAdjFissClaim(gov.cms.bfd.model.rda.PreAdjFissClaim) FissClaim(gov.cms.mpsm.rda.v1.fiss.FissClaim) FissClaimChange(gov.cms.mpsm.rda.v1.FissClaimChange) PreAdjFissClaim(gov.cms.bfd.model.rda.PreAdjFissClaim) FissDiagnosisCode(gov.cms.mpsm.rda.v1.fiss.FissDiagnosisCode) PreAdjFissDiagnosisCode(gov.cms.bfd.model.rda.PreAdjFissDiagnosisCode) Clock(java.time.Clock) LocalDate(java.time.LocalDate) PreAdjFissDiagnosisCode(gov.cms.bfd.model.rda.PreAdjFissDiagnosisCode) Mbi(gov.cms.bfd.model.rda.Mbi) PreAdjFissProcCode(gov.cms.bfd.model.rda.PreAdjFissProcCode) IdHasher(gov.cms.bfd.pipeline.sharedutils.IdHasher) FissClaimTransformer(gov.cms.bfd.pipeline.rda.grpc.source.FissClaimTransformer) Test(org.junit.jupiter.api.Test)

Example 7 with PreAdjFissProcCode

use of gov.cms.bfd.model.rda.PreAdjFissProcCode in project beneficiary-fhir-data by CMSgov.

the class FissClaimTransformerTest method basicFieldsTestForProcCodeObjectTransformation.

/**
 * Basic smoke test for transformation of procedure code objects prior to all of the individual
 * field tests.
 */
@Test
public void basicFieldsTestForProcCodeObjectTransformation() {
    claimBuilder.setDcn("dcn").setHicNo("hicn").setCurrStatusEnum(FissClaimStatus.CLAIM_STATUS_MOVE).setCurrLoc1Enum(FissProcessingType.PROCESSING_TYPE_MANUAL).setCurrLoc2Enum(FissCurrentLocation2.CURRENT_LOCATION_2_FINAL).addFissProcCodes(FissProcedureCode.newBuilder().setProcCd("code-1").setProcFlag("fl-1").build()).addFissProcCodes(FissProcedureCode.newBuilder().setProcCd("code-2").setProcFlag("fl-2").setProcDt("2021-07-06").build());
    claim.setDcn("dcn");
    claim.setHicNo("hicn");
    claim.setCurrStatus('M');
    claim.setCurrLoc1('M');
    claim.setCurrLoc2("2");
    claim.setLastUpdated(clock.instant());
    PreAdjFissProcCode code = new PreAdjFissProcCode();
    code.setDcn("dcn");
    code.setPriority((short) 0);
    code.setProcCode("code-1");
    code.setProcFlag("fl-1");
    code.setLastUpdated(claim.getLastUpdated());
    claim.getProcCodes().add(code);
    code = new PreAdjFissProcCode();
    code.setDcn("dcn");
    code.setPriority((short) 1);
    code.setProcCode("code-2");
    code.setProcFlag("fl-2");
    code.setProcDate(LocalDate.of(2021, 7, 6));
    code.setLastUpdated(claim.getLastUpdated());
    claim.getProcCodes().add(code);
    changeBuilder.setSeq(MIN_SEQUENCE_NUM).setChangeType(ChangeType.CHANGE_TYPE_INSERT).setClaim(claimBuilder.build());
    PreAdjFissClaim transformed = transformer.transformClaim(changeBuilder.build()).getClaim();
    TransformerTestUtils.assertListContentsHaveSamePropertyValues(claim.getProcCodes(), transformed.getProcCodes(), PreAdjFissProcCode::getPriority);
}
Also used : PreAdjFissProcCode(gov.cms.bfd.model.rda.PreAdjFissProcCode) PreAdjFissClaim(gov.cms.bfd.model.rda.PreAdjFissClaim) Test(org.junit.jupiter.api.Test)

Aggregations

PreAdjFissProcCode (gov.cms.bfd.model.rda.PreAdjFissProcCode)7 PreAdjFissClaim (gov.cms.bfd.model.rda.PreAdjFissClaim)5 PreAdjFissDiagnosisCode (gov.cms.bfd.model.rda.PreAdjFissDiagnosisCode)5 PreAdjFissPayer (gov.cms.bfd.model.rda.PreAdjFissPayer)3 FissDiagnosisCode (gov.cms.mpsm.rda.v1.fiss.FissDiagnosisCode)2 FissProcedureCode (gov.cms.mpsm.rda.v1.fiss.FissProcedureCode)2 BigDecimal (java.math.BigDecimal)2 Instant (java.time.Instant)2 LocalDate (java.time.LocalDate)2 Test (org.junit.jupiter.api.Test)2 MetricRegistry (com.codahale.metrics.MetricRegistry)1 Mbi (gov.cms.bfd.model.rda.Mbi)1 PreAdjFissAuditTrail (gov.cms.bfd.model.rda.PreAdjFissAuditTrail)1 PreAdjMcsClaim (gov.cms.bfd.model.rda.PreAdjMcsClaim)1 PreAdjMcsDetail (gov.cms.bfd.model.rda.PreAdjMcsDetail)1 PreAdjMcsDiagnosisCode (gov.cms.bfd.model.rda.PreAdjMcsDiagnosisCode)1 FissClaimTransformer (gov.cms.bfd.pipeline.rda.grpc.source.FissClaimTransformer)1 IdHasher (gov.cms.bfd.pipeline.sharedutils.IdHasher)1 FissClaimChange (gov.cms.mpsm.rda.v1.FissClaimChange)1 FissAuditTrail (gov.cms.mpsm.rda.v1.fiss.FissAuditTrail)1