Ejemplo n.º 1
0
    def test_mandatory_field_interval_id(self):
        update_case(self.domain,
                    self.test_id,
                    {
                        "purpose_of_testing": "testing",
                        "follow_up_test_reason": "unknown_reason"
                    },
                    external_id=DUMMY_NIKSHAY_ID,
                    )
        test_case = CaseAccessors(self.domain).get_case(self.test_id)

        # raises error when purpose_of_testing is not diagnostic and test reason is not known to system
        with self.assertRaisesMessage(NikshayRequiredValueMissing,
                                      "Value missing for intervalID, purpose_of_testing: {testing_purpose}, "
                                      "follow_up_test_reason: {follow_up_test_reason}".format(
                                          testing_purpose="testing",
                                          follow_up_test_reason="unknown_reason"
                                      )):
            NikshayFollowupPayloadGenerator(None).get_payload(self.repeat_record, test_case)

        # does not raise error with purpose_of_testing being diagnostic since test reason is not relevant
        update_case(self.domain,
                    self.test_id,
                    {
                        "purpose_of_testing": "diagnostic",
                        "follow_up_test_reason": "unknown_reason"
                    },
                    external_id=DUMMY_NIKSHAY_ID,
                    )
        test_case = CaseAccessors(self.domain).get_case(self.test_id)
        NikshayFollowupPayloadGenerator(None).get_payload(self.repeat_record, test_case)
Ejemplo n.º 2
0
    def test_mandatory_field_dmc_code(self):
        # valid
        NikshayFollowupPayloadGenerator(None).get_payload(self.repeat_record, self.test_case)

        # invalid since nikshay_code needs to be a code
        self.dmc.metadata['nikshay_code'] = "BARACK-OBAMA"
        self.dmc.save()
        with self.assertRaisesMessage(
                NikshayRequiredValueMissing,
                "Inappropriate value for dmc, got value: BARACK-OBAMA"
        ):
            NikshayFollowupPayloadGenerator(None).get_payload(self.repeat_record, self.test_case)

        self.dmc.metadata['nikshay_code'] = "123"
        self.dmc.save()
        # missing location id
        lab_referral_case = CaseAccessors(self.domain).get_case(self.lab_referral_id)
        lab_referral_case.owner_id = ''

        update_case(self.domain, self.test_id, {'testing_facility_id': ''})
        test_case = CaseAccessors(self.domain).get_case(self.test_id)
        with self.assertRaisesMessage(
                NikshayRequiredValueMissing,
                "Value missing for dmc_code/testing_facility_id for test case: {test_case_id}"
                .format(test_case_id=self.test_id)
        ):
            with patch("custom.enikshay.integrations.nikshay.repeater_generator.get_lab_referral_from_test",
                       return_value=lab_referral_case):
                NikshayFollowupPayloadGenerator(None).get_payload(self.repeat_record, test_case)

        # missing location
        update_case(self.domain, self.test_id, {'testing_facility_id': '123'})
        test_case = CaseAccessors(self.domain).get_case(self.test_id)
        with self.assertRaisesMessage(
                NikshayLocationNotFound,
                "Location with id: {location_id} not found."
                "This is the testing facility id assigned for test: {test_case_id}"
                .format(location_id=123,
                        test_case_id=self.test_id)
        ):
            NikshayFollowupPayloadGenerator(None).get_payload(self.repeat_record, test_case)
Ejemplo n.º 3
0
    def test_result_grade(self):
        update_case(self.domain, self.test_id, {
            "purpose_of_testing": "diagnostic",
            "result_grade": "1+"
        })
        test_case = CaseAccessors(self.domain).get_case(self.test_id)
        payload = (json.loads(
            NikshayFollowupPayloadGenerator(None).get_payload(self.repeat_record, test_case))
        )
        self.assertEqual(payload['SmearResult'], 11)

        update_case(self.domain, self.test_id, {
            "purpose_of_testing": "diagnostic",
            "result_grade": "scanty",
            "max_bacilli_count": '1'
        })
        test_case = CaseAccessors(self.domain).get_case(self.test_id)
        payload = (json.loads(
            NikshayFollowupPayloadGenerator(None).get_payload(self.repeat_record, test_case))
        )
        self.assertEqual(payload['SmearResult'], 1)
Ejemplo n.º 4
0
    def test_mandatory_field_smear_result(self):
        update_case(self.domain, self.test_id, {"result_grade": "scanty"})
        test_case = CaseAccessors(self.domain).get_case(self.test_id)

        with self.assertRaisesMessage(
                NikshayRequiredValueMissing,
                "Mandatory value missing in one of the following LabSerialNo: {lsn}, ResultGrade: {rg}".format(
                    lsn=test_case.dynamic_case_properties().get('lab_serial_number'), rg="scanty")
        ):
            NikshayFollowupPayloadGenerator(None).get_payload(self.repeat_record, test_case)

        update_case(self.domain, self.test_id, {"result_grade": "scanty", "max_bacilli_count": "10"})
        test_case = CaseAccessors(self.domain).get_case(self.test_id)

        with self.assertRaisesMessage(
                NikshayRequiredValueMissing,
                "Mandatory value missing in one of the following LabSerialNo: {lsn}, ResultGrade: {rg}".format(
                    lsn=test_case.dynamic_case_properties().get('lab_serial_number'), rg="scanty")
        ):
            NikshayFollowupPayloadGenerator(None).get_payload(self.repeat_record, test_case)

        update_case(self.domain, self.test_id, {"result_grade": "5+"})
        test_case = CaseAccessors(self.domain).get_case(self.test_id)

        with self.assertRaisesMessage(
                NikshayRequiredValueMissing,
                "Mandatory value missing in one of the following LabSerialNo: {lsn}, ResultGrade: {rg}".format(
                    lsn=test_case.dynamic_case_properties().get('lab_serial_number'), rg="5+")
        ):
            NikshayFollowupPayloadGenerator(None).get_payload(self.repeat_record, test_case)

        update_case(self.domain, self.test_id, {"result_grade": "1+"})
        test_case = CaseAccessors(self.domain).get_case(self.test_id)
        NikshayFollowupPayloadGenerator(None).get_payload(self.repeat_record, test_case)

        update_case(self.domain, self.test_id, {"result_grade": "scanty", "max_bacilli_count": "1"})
        test_case = CaseAccessors(self.domain).get_case(self.test_id)
        NikshayFollowupPayloadGenerator(None).get_payload(self.repeat_record, test_case)
Ejemplo n.º 5
0
    def test_intervalId(self):
        update_case(self.domain, self.test_id, {
            "purpose_of_testing": "diagnostic",
            "follow_up_test_reason": "not sure"
        }, external_id=DUMMY_NIKSHAY_ID)
        test_case = CaseAccessors(self.domain).get_case(self.test_id)
        payload = (json.loads(
            NikshayFollowupPayloadGenerator(None).get_payload(self.repeat_record, test_case))
        )
        self.assertEqual(payload['IntervalId'], 0)

        update_case(self.domain,
            self.test_id,
            {
                "purpose_of_testing": "testing",
                "follow_up_test_reason": "end_of_cp"
            },
            external_id=DUMMY_NIKSHAY_ID,
        )
        test_case = CaseAccessors(self.domain).get_case(self.test_id)
        payload = (json.loads(
            NikshayFollowupPayloadGenerator(None).get_payload(self.repeat_record, test_case))
        )
        self.assertEqual(payload['IntervalId'], 4)
Ejemplo n.º 6
0
 def test_payload_properties(self, _):
     payload = (json.loads(
         NikshayFollowupPayloadGenerator(None).get_payload(self.repeat_record, self.test_case))
     )
     self.assertEqual(payload['Source'], ENIKSHAY_ID)
     self.assertEqual(payload['Local_ID'], self.person_id)
     self.assertEqual(payload['RegBy'], "arwen")
     self.assertEqual(payload['password'], "Hadhafang")
     self.assertEqual(payload['IP_From'], "198.1.1.1")
     self.assertEqual(payload['TestDate'],
                      datetime.strptime(self.test_case.dynamic_case_properties().get('date_reported'),
                                        '%Y-%m-%d').strftime('%d/%m/%Y'),
                      )
     self.assertEqual(payload['LabNo'], self.test_case.dynamic_case_properties().get('lab_serial_number'))
     self.assertEqual(payload['IntervalId'], 0)
     self.assertEqual(payload['PatientWeight'], 1)
     self.assertEqual(payload["SmearResult"], 11)
     self.assertEqual(payload["DMC"], '123')
     self.assertEqual(payload["PatientID"], DUMMY_NIKSHAY_ID)