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())
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']
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)
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())
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
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())
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)
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)
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)
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)
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)
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 )