Exemplo n.º 1
0
    def setUp(self) -> None:
        self.service_H = create_test_service("H")
        self.service_O = create_test_service("O")
        self.service_D = create_test_service("D")
        self.service_A = create_test_service("A")
        self.service_A_invalid = create_test_service("A", False)

        self.item_1 = create_test_item("D")
Exemplo n.º 2
0
    def test_submit_claim_dedrem_limit_antenatal(self):
        # Given
        insuree = create_test_insuree()
        self.assertIsNotNone(insuree)
        service = create_test_service("A", custom_props={})
        item = create_test_item("A", custom_props={})

        product = create_test_product("BCUL0001", custom_props={
            "name": "Basic Cover Ultha",
            "lump_sum": 10_000,
            "max_amount_antenatal": 55,
        })
Exemplo n.º 3
0
    def setUp(self) -> None:
        self.i_user = InteractiveUser(login_name="test_batch_run",
                                      audit_user_id=978911,
                                      id=97891)
        self.user = User(i_user=self.i_user)

        self.service_H = create_test_service("H")
        self.service_O = create_test_service("O")
        self.service_D = create_test_service("D")
        self.service_A = create_test_service("A")
        self.service_A_invalid = create_test_service("A", False)

        self.item_1 = create_test_item("D")
Exemplo n.º 4
0
    def test_submit_claim_dedrem(self):
        # When the insuree already reaches his limit of visits
        # Given
        insuree = create_test_insuree()
        self.assertIsNotNone(insuree)
        product = create_test_product("VISIT", custom_props={})
        policy = create_test_policy(product, insuree, link=True)
        service = create_test_service("V", custom_props={})
        item = create_test_item("D", custom_props={})
        product_service = create_test_product_service(product, service)
        product_item = create_test_product_item(product, item)
        pricelist_detail1 = add_service_to_hf_pricelist(service)
        pricelist_detail2 = add_item_to_hf_pricelist(item)

        claim1 = create_test_claim({"insuree_id": insuree.id})
        service1 = create_test_claimservice(
            claim1, custom_props={"service_id": service.id})
        item1 = create_test_claimitem(claim1,
                                      "D",
                                      custom_props={"item_id": item.id})
        errors = validate_claim(claim1, True)
        errors += validate_assign_prod_to_claimitems_and_services(claim1)
        errors += process_dedrem(claim1, -1, True)
        self.assertEqual(len(errors), 0)

        # Then
        claim1.refresh_from_db()
        item1.refresh_from_db()
        service1.refresh_from_db()
        self.assertEqual(len(errors), 0)
        self.assertEqual(item1.price_adjusted, 100)
        self.assertEqual(item1.price_valuated, 700)
        self.assertEqual(item1.deductable_amount, 0)
        self.assertEqual(item1.exceed_ceiling_amount, 0)
        self.assertIsNone(item1.exceed_ceiling_amount_category)
        self.assertEqual(item1.remunerated_amount, 700)
        self.assertEqual(claim1.status, Claim.STATUS_VALUATED)
        self.assertEqual(claim1.audit_user_id_process, -1)
        self.assertIsNotNone(claim1.process_stamp)
        self.assertIsNotNone(claim1.date_processed)

        dedrem_qs = ClaimDedRem.objects.filter(claim=claim1)
        self.assertEqual(dedrem_qs.count(), 1)
        dedrem1 = dedrem_qs.first()
        self.assertEqual(dedrem1.policy_id, item1.policy_id)
        self.assertEqual(dedrem1.insuree_id, claim1.insuree_id)
        self.assertEqual(dedrem1.audit_user_id, -1)
        self.assertEqual(dedrem1.ded_g, 0)
        self.assertEqual(dedrem1.rem_g, 1400)
        self.assertEqual(dedrem1.rem_op, 1400)
        self.assertIsNone(dedrem1.rem_ip)
        self.assertEqual(dedrem1.rem_surgery, 0)
        self.assertEqual(dedrem1.rem_consult, 0)
        self.assertEqual(dedrem1.rem_hospitalization, 0)
        self.assertIsNotNone(claim1.validity_from)
        self.assertIsNone(claim1.validity_to)

        # tearDown
        dedrem_qs.delete()
        service1.delete()
        item1.delete()
        claim1.delete()
        policy.insuree_policies.first().delete()
        policy.delete()
        product_item.delete()
        product_service.delete()
        pricelist_detail1.delete()
        pricelist_detail2.delete()
        service.delete()
        item.delete()
        product.delete()
Exemplo n.º 5
0
    def test_review_reject_delete_dedrem(self):
        """
        This test creates a claim, submits it so that it gets dedrem entries,
        then submits a review rejecting part of it, then process the claim.
        It should not be processed (which was ok) but the dedrem should be deleted.
        """
        # Given
        insuree = create_test_insuree()
        self.assertIsNotNone(insuree)
        service = create_test_service("A", custom_props={"name": "test_review_reject_delete_dedrem"})
        item = create_test_item("A", custom_props={"name": "test_review_reject_delete_dedrem"})

        product = create_test_product("BCUL0001", custom_props={
            "name": "Basic Cover Ultha deldedrem",
            "lump_sum": 10_000,
        })
        product_service = create_test_product_service(product, service)
        product_item = create_test_product_item(product, item)
        policy = create_test_policy(product, insuree, link=True)
        pricelist_detail1 = add_service_to_hf_pricelist(service)
        pricelist_detail2 = add_item_to_hf_pricelist(item)

        claim1 = create_test_claim({"insuree_id": insuree.id})
        service1 = create_test_claimservice(
            claim1, custom_props={"service_id": service.id, "qty_provided": 2})
        item1 = create_test_claimitem(
            claim1, "A", custom_props={"item_id": item.id, "qty_provided": 3})
        errors = validate_claim(claim1, True)
        errors += validate_assign_prod_to_claimitems_and_services(claim1)
        errors += process_dedrem(claim1, -1, False)

        self.assertEqual(len(errors), 0)
        # Make sure that the dedrem was generated
        dedrem = ClaimDedRem.objects.filter(claim=claim1).first()
        self.assertIsNotNone(dedrem)
        self.assertEquals(dedrem.rem_g, 500)  # 100*2 + 100*3

        # Review the claim and reject all of it
        # A partial rejection would still trigger the process_dedrem and be fine
        item1.qty_approved = 0
        item1.price_approved = 0
        item1.status = ClaimItem.STATUS_REJECTED
        item1.rejection_reason = -1
        item1.audit_user_id_review = -1
        item1.justification = "Review comment item"
        item1.save()

        service1.qty_approved = 0
        service1.price_approved = 0
        service1.status = ClaimItem.STATUS_REJECTED
        service1.rejection_reason = -1
        service1.audit_user_id_review = -1
        service1.justification = "Review comment svc"
        service1.save()

        claim1.refresh_from_db()
        item1.refresh_from_db()
        service1.refresh_from_db()

        set_claims_status([claim1.uuid], "review_status", Claim.REVIEW_DELIVERED)
        update_claims_dedrems([claim1.uuid], User.objects.first())

        errors = validate_claim(claim1, True)
        if len(errors) == 0:
            errors += validate_assign_prod_to_claimitems_and_services(claim1)
            errors += process_dedrem(claim1, -1, False)

        # The claim should be globally rejected since the review rejected all items/svc
        claim1.refresh_from_db()
        item1.refresh_from_db()
        service1.refresh_from_db()
        self.assertEquals(claim1.status, Claim.STATUS_REJECTED)
        self.assertEquals(claim1.rejection_reason, REJECTION_REASON_INVALID_ITEM_OR_SERVICE)
        self.assertEquals(item1.status, ClaimDetail.STATUS_REJECTED)
        self.assertEquals(item1.rejection_reason, -1)
        self.assertEquals(service1.status, ClaimDetail.STATUS_REJECTED)
        self.assertEquals(service1.rejection_reason, -1)

        # Then dedrem should have been deleted
        dedrem = ClaimDedRem.objects.filter(claim=claim1).first()
        self.assertIsNone(dedrem)

        # tearDown
        # dedrem.delete() # already done if the test passed
        delete_claim_with_itemsvc_dedrem_and_history(claim1)
        policy.insuree_policies.first().delete()
        policy.delete()
        product_item.delete()
        product_service.delete()
        pricelist_detail1.delete()
        pricelist_detail2.delete()
        service.delete()
        item.delete()
        product.delete()