def send_request(self, repeat_record, payload): value_source_configs: Iterable[JsonDict] = chain( self.openmrs_config.case_config.patient_identifiers.values(), self.openmrs_config.case_config.person_properties.values(), self.openmrs_config.case_config.person_preferred_name.values(), self.openmrs_config.case_config.person_preferred_address.values(), self.openmrs_config.case_config.person_attributes.values(), ) case_trigger_infos = get_relevant_case_updates_from_form_json( self.domain, payload, case_types=self.white_listed_case_types, extra_fields=[ conf["case_property"] for conf in value_source_configs if "case_property" in conf ], form_question_values=get_form_question_values(payload), ) requests = self.get_requests(payload_id=repeat_record.payload_id) try: response = send_openmrs_data( requests, self.domain, payload, self.openmrs_config, case_trigger_infos, ) except Exception as err: requests.notify_exception(str(err)) return OpenmrsResponse(400, 'Bad Request', pformat_json(str(err))) return response
def test_get_case_updates_for_registration(self): """ get_relevant_case_updates_from_form_json should fetch case updates from teh given form JSON """ self.assertEqual( get_relevant_case_updates_from_form_json( 'openmrs-repeater-test', self.get_json('registration'), case_types=['paciente'], extra_fields=[] ), [ CaseTriggerInfo( case_id='65e55473-e83b-4d78-9dde-eaf949758997', updates={ 'case_name': 'Elsa', 'case_type': 'paciente', 'estado_tarv': '1', 'owner_id': '9393007a6921eecd4a9f20eefb5c7a8e', 'tb': '0', }, created=True, closed=False, extra_fields={}, form_question_values={}, ) ] )
def test_get_case_updates_for_followup(self): """ Specifying `extra_fields` should fetch the current value from the case """ self.assertEqual( get_relevant_case_updates_from_form_json( 'openmrs-repeater-test', self.get_json('followup'), case_types=['paciente'], extra_fields=['name', 'estado_tarv', 'tb', 'bandersnatch'], ), [ CaseTriggerInfo( case_id='65e55473-e83b-4d78-9dde-eaf949758997', updates={ 'estado_tarv': '1', 'tb': '1', }, created=False, closed=False, extra_fields={ 'name': 'Elsa', 'estado_tarv': '1', 'tb': '0', 'bandersnatch': None, }, form_question_values={}, ) ] )
def test_get_case_updates_for_followup(self): """ Specifying `extra_fields` should fetch the current value from the case """ self.assertEqual( get_relevant_case_updates_from_form_json( 'openmrs-repeater-test', self.get_json('followup'), case_types=['paciente'], extra_fields=['name', 'estado_tarv', 'tb', 'bandersnatch'], ), [ CaseTriggerInfo( case_id='65e55473-e83b-4d78-9dde-eaf949758997', updates={ 'estado_tarv': '1', 'tb': '1', }, created=False, closed=False, extra_fields={ 'name': 'Elsa', 'estado_tarv': '1', 'tb': '0', 'bandersnatch': None, }, form_question_values={}, ) ] )
def test_get_case_updates_for_registration(self): """ get_relevant_case_updates_from_form_json should fetch case updates from teh given form JSON """ self.assertEqual( get_relevant_case_updates_from_form_json( 'openmrs-repeater-test', self.get_json('registration'), case_types=['paciente'], extra_fields=[] ), [ CaseTriggerInfo( case_id='65e55473-e83b-4d78-9dde-eaf949758997', updates={ 'case_name': 'Elsa', 'case_type': 'paciente', 'estado_tarv': '1', 'owner_id': '9393007a6921eecd4a9f20eefb5c7a8e', 'tb': '0', }, created=True, closed=False, extra_fields={}, form_question_values={}, ) ] )
def fire_for_record(self, repeat_record): form_json = json.loads(self.get_payload(repeat_record)) trigger_case_infos = get_relevant_case_updates_from_form_json( self.domain, form_json, case_types=self.white_listed_case_types, extra_fields=[id_matcher.case_property for id_matcher in self.openmrs_config.case_config.id_matchers]) send_openmrs_data(Requests(self.url, self.username, self.password), form_json, trigger_case_infos, self.openmrs_config) return repeat_record.handle_success(None)
def send_request(self, repeat_record, payload, verify=None): case_trigger_infos = get_relevant_case_updates_from_form_json( self.domain, payload, case_types=self.white_listed_case_types, extra_fields=[ id_matcher.case_property for id_matcher in self.openmrs_config.case_config.id_matchers ]) form_question_values = get_form_question_values(payload) return send_openmrs_data( Requests(self.url, self.username, self.password), payload, self.openmrs_config, case_trigger_infos, form_question_values)
def test_get_case_updates_for_followup(self): self.assertEqual( get_relevant_case_updates_from_form_json('openmrs-repeater-test', self.get_json('followup'), ['paciente'], {}), [ CaseTriggerInfo( case_id='65e55473-e83b-4d78-9dde-eaf949758997', updates={ u'estado_tarv': u'1', u'tb': u'1', }, created=False, closed=False, extra_fields={}, ) ])
def test_get_case_updates_for_registration(self): self.assertEqual( get_relevant_case_updates_from_form_json( 'openmrs-repeater-test', self.get_json('registration'), ['paciente'], {}), [ CaseTriggerInfo( case_id='65e55473-e83b-4d78-9dde-eaf949758997', updates={ u'case_name': u'Elsa', u'case_type': u'paciente', u'estado_tarv': u'1', u'owner_id': u'9393007a6921eecd4a9f20eefb5c7a8e', u'tb': u'0', }, created=True, closed=False, extra_fields={}, ) ])
def send_request(self, repeat_record, payload): value_sources = chain( self.openmrs_config.case_config.patient_identifiers.values(), self.openmrs_config.case_config.person_properties.values(), self.openmrs_config.case_config.person_preferred_name.values(), self.openmrs_config.case_config.person_preferred_address.values(), self.openmrs_config.case_config.person_attributes.values(), ) case_trigger_infos = get_relevant_case_updates_from_form_json( self.domain, payload, case_types=self.white_listed_case_types, extra_fields=[ vs.case_property for vs in value_sources if hasattr(vs, 'case_property') ]) form_question_values = get_form_question_values(payload) return send_openmrs_data(self.requests, self.domain, payload, self.openmrs_config, case_trigger_infos, form_question_values)
def send_request(self, repeat_record, payload): value_sources = chain( six.itervalues(self.openmrs_config.case_config.patient_identifiers), six.itervalues(self.openmrs_config.case_config.person_properties), six.itervalues(self.openmrs_config.case_config.person_preferred_name), six.itervalues(self.openmrs_config.case_config.person_preferred_address), six.itervalues(self.openmrs_config.case_config.person_attributes), ) case_trigger_infos = get_relevant_case_updates_from_form_json( self.domain, payload, case_types=self.white_listed_case_types, extra_fields=[vs.case_property for vs in value_sources if hasattr(vs, 'case_property')] ) form_question_values = get_form_question_values(payload) return send_openmrs_data( self.requests, self.domain, payload, self.openmrs_config, case_trigger_infos, form_question_values )