Esempio n. 1
0
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)
Esempio n. 2
0
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,
        )
Esempio n. 3
0
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,
        )
Esempio n. 4
0
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)