Пример #1
0
 def test_create_adherence_cases(self):
     self.create_case_structure()
     case_accessor = CaseAccessors(self.domain)
     adherence_values = [
         {
             "timestamp": "2009-03-05T01:00:01-05:00",
             "numberFromWhichPatientDialled": "+910123456789",
             "sharedNumber": False,
             "adherenceSource": "99DOTS",
         },
         {
             "timestamp": "2016-03-05T02:00:01-05:00",
             "numberFromWhichPatientDialled": "+910123456787",
             "sharedNumber": True,
             "adherenceSource": "MERM",
         },
         {
             "timestamp": "2016-03-05T19:00:01-05:00",  # next day in india
             "numberFromWhichPatientDialled": "+910123456787",
             "sharedNumber": True,
         }
     ]
     create_adherence_cases(self.domain, 'person', adherence_values)
     potential_adherence_cases = case_accessor.get_reverse_indexed_cases(
         ['episode'])
     adherence_cases = [
         case for case in potential_adherence_cases
         if case.type == 'adherence'
     ]
Пример #2
0
 def test_invalid_adherence_value(self):
     self.create_case_structure()
     adherence_values = [
         {
             "timestamp": "2009-03-05T01:00:01-05:00",
             "numberFromWhichPatientDialled": "+910123456789",
             "adherenceValue": 'foo',
         },
     ]
     with self.assertRaises(NinetyNineDotsException):
         create_adherence_cases(self.domain, 'person', adherence_values)
Пример #3
0
def update_patient_adherence(request, domain):
    try:
        request_json = json.loads(request.body)
    except ValueError:
        return json_response({"error": "Malformed JSON"}, status_code=400)

    beneficiary_id = request_json.get("beneficiary_id")
    adherence_values = request_json.get("adherences")

    try:
        validate_beneficiary_id(beneficiary_id)
        validate_adherence_values(adherence_values)
        create_adherence_cases(domain, beneficiary_id, adherence_values)
    except AdherenceException as e:
        return json_response({"error": e.message}, status_code=400)

    return json_response({"success": "Patient adherences updated."})
Пример #4
0
def update_patient_adherence(request, domain):
    try:
        request_json = json.loads(request.body)
    except ValueError:
        return json_response({"error": "Malformed JSON"}, status_code=400)

    beneficiary_id = request_json.get('beneficiary_id')
    adherence_values = request_json.get('adherences')

    try:
        validate_beneficiary_id(beneficiary_id)
        validate_adherence_values(adherence_values)
        create_adherence_cases(domain, beneficiary_id, adherence_values)
    except AdherenceException as e:
        return json_response({"error": e.message}, status_code=400)

    return json_response({"success": "Patient adherences updated."})
Пример #5
0
    def test_create_adherence_cases(self):
        self.create_case_structure()
        case_accessor = CaseAccessors(self.domain)
        adherence_values = [
            {
                "timestamp": "2009-03-05T01:00:01-05:00",
                "numberFromWhichPatientDialled": "+910123456789",
                "sharedNumber": False,
                "adherenceSource": "99DOTS",
            },
            {
                "timestamp": "2016-03-05T02:00:01-05:00",
                "numberFromWhichPatientDialled": "+910123456787",
                "sharedNumber": True,
                "adherenceSource": "MERM",
            },
            {
                "timestamp": "2016-03-05T19:00:01-05:00",  # next day in india
                "numberFromWhichPatientDialled": "+910123456787",
                "sharedNumber": True,
            }
        ]
        create_adherence_cases(self.domain, 'person', adherence_values)
        potential_adherence_cases = case_accessor.get_reverse_indexed_cases(['episode'])
        adherence_cases = [case for case in potential_adherence_cases if case.type == 'adherence']
        self.assertEqual(len(adherence_cases), 3)

        self.assertItemsEqual(
            [case.dynamic_case_properties().get('adherence_date') for case in adherence_cases],
            ['2009-03-05', '2016-03-05', '2016-03-06']
        )
        self.assertItemsEqual(
            [case.dynamic_case_properties().get('adherence_source') for case in adherence_cases],
            ['99DOTS', 'MERM', '99DOTS']
        )
        for adherence_case in adherence_cases:
            self.assertEqual(
                adherence_case.dynamic_case_properties().get('adherence_confidence'),
                'high'
            )