Example #1
0
 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
Example #2
0
 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={},
             )
         ]
     )
Example #3
0
 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={},
             )
         ]
     )
Example #4
0
 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={},
             )
         ]
     )
Example #5
0
 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={},
             )
         ]
     )
Example #6
0
    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)
Example #7
0
    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={},
                 )
             ])
Example #10
0
    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)
Example #11
0
    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
        )