Example #1
0
 def get_payload(self, repeat_record, episode_case):
     occurence_case = get_occurrence_case_from_episode(
         episode_case.domain, episode_case.case_id)
     person_case = get_person_case_from_occurrence(episode_case.domain,
                                                   occurence_case)
     return json.dumps(
         PatientPayload.create(person_case, episode_case).to_json())
Example #2
0
 def get_person(self, test_case):
     if 'person' not in self.context:
         occurrence_case = self.get_occurrence(test_case)
         self.context['person'] = get_person_case_from_occurrence(DOMAIN, occurrence_case.case_id)
     if not self.context['person']:
         raise Exception("could not find person for test %s" % test_case.case_id)
     return self.context['person']
Example #3
0
 def allowed_to_forward(self, test_case):
     # test.date_reported populates and test.nikshay_registered is false
     # test.test_type_value = microscopy-zn or test.test_type_value = microscopy-fluorescent
     # and episode.nikshay_registered is true
     allowed_case_types_and_users = self._allowed_case_type(
         test_case) and self._allowed_user(test_case)
     if allowed_case_types_and_users:
         occurrence_case = get_occurrence_case_from_test(
             test_case.domain, test_case.case_id)
         person_case = get_person_case_from_occurrence(
             test_case.domain, occurrence_case.case_id)
         test_case_properties = test_case.dynamic_case_properties()
         return (
             not (test_case_properties.get(ENROLLED_IN_PRIVATE) == 'true')
             and test_case_properties.get('nikshay_registered', 'false')
             == 'false' and test_case_properties.get('test_type_value', '')
             in ['microscopy-zn', 'microscopy-fluorescent'] and
             (test_case_properties.get('purpose_of_testing') == 'diagnostic'
              or test_case_properties.get('follow_up_test_reason')
              in self.followup_for_tests
              or test_case_properties.get('rft_general')
              in ['diagnosis_dstb', 'diagnosis_drtb']
              or test_case_properties.get('rft_dstb_followup')
              in self.followup_for_tests)
             and case_properties_changed(test_case, 'date_reported')
             and not is_valid_test_submission(test_case)
             and person_has_any_nikshay_notifiable_episode(person_case))
     else:
         return False
    def get_payload(self, repeat_record, test_case):
        occurence_case = get_occurrence_case_from_test(test_case.domain, test_case.get_id)
        episode_case = get_associated_episode_case_for_test(test_case, occurence_case.get_id)
        person_case = get_person_case_from_occurrence(test_case.domain, occurence_case.get_id)

        test_case_properties = test_case.dynamic_case_properties()
        episode_case_properties = episode_case.dynamic_case_properties()
        use_2b_app_structure = self.use_2b_app_structure(person_case)

        interval_id, lab_serial_number, result_grade, dmc_code = self._get_mandatory_fields(
            test_case, test_case_properties, occurence_case,
            use_2b_app_structure
        )

        test_reported_on = _format_date_or_null_date(test_case_properties, 'date_reported')
        properties_dict = self._base_properties(repeat_record)
        properties_dict.update({
            "PatientID": episode_case_properties.get('nikshay_id'),
            "TestDate": test_reported_on,
            "LabNo": lab_serial_number,
            "Local_ID": person_case.get_id,
            "IntervalId": interval_id,
            # since weight is not taken and is mandatory we send 1
            "PatientWeight": test_case_properties.get('weight', 1),
            "SmearResult": result_grade,
            "DMC": dmc_code
        })

        return json.dumps(properties_dict)
 def public_app_case(self, occurrence_case_id):
     try:
         person_case = get_person_case_from_occurrence(DOMAIN, occurrence_case_id)
     except ENikshayCaseNotFound:
         return False
     self.person_case_id = person_case.case_id
     return super(Command, self).public_app_case(person_case)
 def public_app_case(self, occurrence_case_id):
     # set person case as None to make sure its fetched each time and not
     # carry forwarded from a previous call
     self.person_case = None
     try:
         self.person_case = get_person_case_from_occurrence(DOMAIN, occurrence_case_id)
     except ENikshayCaseNotFound:
         return False
     return super(Command, self).public_app_case(self.person_case)
Example #7
0
 def get_payload(self, repeat_record, payload_doc):
     occurence_case = get_occurrence_case_from_episode(payload_doc.domain, payload_doc.case_id)
     person_case = get_person_case_from_occurrence(payload_doc.domain, occurence_case)
     person_case_properties = person_case.dynamic_case_properties()
     data = PatientPayload(
         beneficiary_id=person_case.case_id,
         phone_numbers=_get_phone_numbers(person_case_properties),
         merm_id=person_case_properties.get('merm_id', None),
     )
     return json.dumps(data.to_json())
Example #8
0
 def _get_cases(self, episode_or_person):
     if episode_or_person.type == CASE_TYPE_PERSON:
         person_case = episode_or_person
         episode_case = get_open_episode_case_from_person(person_case.domain, person_case.case_id)
     elif episode_or_person.type == CASE_TYPE_EPISODE:
         episode_case = episode_or_person
         occurrence_case = get_occurrence_case_from_episode(episode_case.domain, episode_case.case_id)
         person_case = get_person_case_from_occurrence(episode_case.domain, occurrence_case.case_id)
     else:
         raise ENikshayCaseNotFound("wrong case passed to repeater")
     return person_case, episode_case
Example #9
0
 def get_payload(self, repeat_record, payload_doc):
     occurence_case = get_occurrence_case_from_episode(
         payload_doc.domain, payload_doc.case_id)
     person_case = get_person_case_from_occurrence(payload_doc.domain,
                                                   occurence_case)
     person_case_properties = person_case.dynamic_case_properties()
     data = PatientPayload(
         beneficiary_id=person_case.case_id,
         phone_numbers=_get_phone_numbers(person_case_properties),
         merm_id=person_case_properties.get('merm_id', None),
     )
     return json.dumps(data.to_json())
Example #10
0
 def get_payload(self, repeat_record, episode_case):
     domain = episode_case.domain
     person_case = get_person_case_from_occurrence(
         domain,
         get_occurrence_case_from_episode(domain,
                                          episode_case.case_id).case_id)
     episode_case_properties = episode_case.dynamic_case_properties()
     payload = {
         'beneficiary_id': person_case.case_id,
         'end_date': episode_case_properties.get(TREATMENT_OUTCOME_DATE),
         'treatment_outcome':
         episode_case_properties.get(TREATMENT_OUTCOME),
     }
     return json.dumps(payload)
Example #11
0
 def get_payload(self, repeat_record, adherence_case):
     domain = adherence_case.domain
     person_case = get_person_case_from_occurrence(
         domain, get_occurrence_case_from_episode(
             domain, get_episode_case_from_adherence(domain, adherence_case.case_id).case_id
         ).case_id
     )
     adherence_case_properties = adherence_case.dynamic_case_properties()
     date = parse_date(adherence_case.dynamic_case_properties().get('adherence_date'))
     payload = {
         'beneficiary_id': person_case.case_id,
         'adherence_date': date.isoformat(),
         'adherence_source': adherence_case_properties.get('adherence_source'),
         'adherence_value': adherence_case_properties.get('adherence_value'),
     }
     return json.dumps(payload)
Example #12
0
    def get_payload(self, repeat_record, episode_case):
        domain = episode_case.domain
        person_case = get_person_case_from_occurrence(
            domain, get_occurrence_case_from_episode(
                domain, episode_case.case_id
            ).case_id
        )

        if episode_case.closed:
            reason = episode_case.get_case_property('close_reason')
        elif episode_case.get_case_property('dots_99_enabled') == 'false':
            reason = 'source_changed'
        else:
            reason = 'unknown'

        payload = {
            'beneficiary_id': person_case.case_id,
            'reason': reason,
        }
        return json.dumps(payload)
Example #13
0
 def test_get_person_case_from_occurrence(self):
     self.assertEqual(
         get_person_case_from_occurrence(self.domain,
                                         self.occurrence_id).case_id,
         self.person_id)
Example #14
0
 def test_get_person_case_from_occurrence_with_deleted_person(self):
     CaseAccessors(self.domain).soft_delete_cases([self.person_id])
     with self.assertRaises(ENikshayCaseNotFound):
         get_person_case_from_occurrence(self.domain, self.occurrence_id)
Example #15
0
 def test_get_person_case_from_occurrence(self):
     self.assertEqual(
         get_person_case_from_occurrence(self.domain, self.occurrence_id).case_id,
         self.person_id
     )