def update_person_properties(requests, info, openmrs_config, person_uuid): properties = { property_: value_source.get_value(info) for property_, value_source in openmrs_config.case_config.person_properties.items() if property_ in PERSON_PROPERTIES and value_source.get_value(info) } if properties: for p in properties: assert p in PERSON_PROPERTIES requests.post_with_raise( '/ws/rest/v1/person/{person_uuid}'.format(person_uuid=person_uuid), json=properties)
def create_person_address(requests, info, openmrs_config, person_uuid): properties = { property_: value_source.get_value(info) for property_, value_source in openmrs_config.case_config.person_preferred_address.items() if property_ in ADDRESS_PROPERTIES and value_source.get_value(info) } if properties: requests.post_with_raise( '/ws/rest/v1/person/{person_uuid}/address/'.format( person_uuid=person_uuid), json=properties, )
def update_person_name(requests, info, openmrs_config, person_uuid, name_uuid): properties = { property_: value_source.get_value(info) for property_, value_source in openmrs_config.case_config.person_preferred_name.items() if property_ in NAME_PROPERTIES and value_source.get_value(info) } if properties: requests.post_with_raise( '/ws/rest/v1/person/{person_uuid}/name/{name_uuid}'.format( person_uuid=person_uuid, name_uuid=name_uuid, ), json=properties, )
def create_visit(requests, person_uuid, provider_uuid, visit_datetime, values_for_concept, encounter_type, openmrs_form, visit_type, location_uuid=None, patient_uuid=None): patient_uuid = patient_uuid or person_uuid start_datetime = server_datetime_to_openmrs_timestamp(visit_datetime) stop_datetime = server_datetime_to_openmrs_timestamp(visit_datetime + timedelta(days=1) - timedelta(seconds=1)) visit = { 'patient': patient_uuid, 'visitType': visit_type, 'startDatetime': start_datetime, 'stopDatetime': stop_datetime, } if location_uuid: visit['location'] = location_uuid response = requests.post_with_raise('/ws/rest/v1/visit', json=visit) visit_uuid = response.json()['uuid'] encounter = { 'encounterDatetime': start_datetime, 'patient': patient_uuid, 'form': openmrs_form, 'encounterType': encounter_type, 'visit': visit_uuid, } if location_uuid: encounter['location'] = location_uuid response = requests.post_with_raise('/ws/rest/v1/encounter', json=encounter) encounter_uuid = response.json()['uuid'] if provider_uuid: encounter_provider = {'provider': provider_uuid} uri = '/ws/rest/v1/encounter/{uuid}/encounterprovider'.format( uuid=encounter_uuid) requests.post_with_raise(uri, json=encounter_provider) observation_uuids = [] for concept_uuid, values in values_for_concept.items(): for value in values: observation = { 'concept': concept_uuid, 'person': person_uuid, 'obsDatetime': start_datetime, 'encounter': encounter_uuid, 'value': value, } if location_uuid: observation['location'] = location_uuid response = requests.post_with_raise('/ws/rest/v1/obs', json=observation) observation_uuids.append(response.json()['uuid']) logger.debug('Observations created: ', observation_uuids)