Пример #1
0
def structure_ord_org_summary(orgs, app_hostname, request_id):
    log_utils.log_layer_entry(constants.TRANSLATION, request_id)

    organisations = list()
    org_dict = {}

    try:
        for organisation in orgs:

            organisation = utils_translation.remove_none_values_from_dictionary(
                organisation)

            organisation['Name'] = organisation.pop('name')
            organisation['OrgId'] = organisation.pop('odscode')
            organisation['Status'] = organisation.pop('status')
            organisation['OrgRecordClass'] = organisation.pop('record_class')
            if 'post_code' in organisation:
                organisation['PostCode'] = organisation.pop('post_code')
            organisation['LastChangeDate'] = organisation.pop('last_changed')
            organisation['PrimaryRoleId'] = organisation.pop('code')
            organisation['PrimaryRoleDescription'] = organisation.pop(
                'displayname')

            link = str.format('{0}/{1}', app_hostname, organisation['OrgId'])

            organisation['OrgLink'] = link

            organisations.append(organisation)

        org_dict['Organisations'] = organisations
    except KeyError:
        raise exception.InvalidDataError

    log_utils.log_layer_exit(constants.TRANSLATION, request_id)
    return org_dict
Пример #2
0
def build_roles_for_fhir(roles_rows, data, url_root):

    if len(roles_rows) == 0:
        return data

    roles = []

    try:
        for role in roles_rows:
            extension_role = {}
            extension_list = []

            role = translation_utils.remove_none_values_from_dictionary(role)

            add_coding_extension(extension_list, role, url_root)

            add_primary_role_extension(extension_list, role)

            add_date_extension(extension_list, role,
                               constants.DATE_TYPE_OPERATIONAL)

            add_date_extension(extension_list, role, constants.DATE_TYPE_LEGAL)

            add_status_extension(extension_list, role)

            extension_role['url'] = constants.FHIR_ORGANIZATION_ROLE_URI
            extension_role['extension'] = extension_list

            roles.append(extension_role)

        data['extension'] += roles
    except KeyError:
        exception.InvalidDataError

    return data
Пример #3
0
def build_relationships(relationship_rows, data):

    if len(relationship_rows) == 0:
        return data

    try:
        rels = collections.OrderedDict()
        relationships = list()

        for relationship in relationship_rows:

            relationship = translation_utils.remove_none_values_from_dictionary(
                relationship)

            target = translation_utils.get_target_for_org(relationship)
            relationship[
                constants.DATES] = translation_utils.get_dates_for_org(
                    relationship)
            relationship['Status'] = relationship.pop('status')
            relationship['Target'] = target
            relationship['id'] = relationship.pop('code')
            relationship['uniqueRelId'] = int(relationship.pop('unique_id'))

            relationships.append(relationship)

        rels['Rel'] = relationships
        data[constants.RELS] = rels
    except:
        raise exception.InvalidDataError

    return data
Пример #4
0
def build_contacts(contacts_rows, data):

    if len(contacts_rows) == 0:
        return data

    contact_dict = dict()
    contacts = list()

    for contact in contacts_rows:
        contact = translation_utils.remove_none_values_from_dictionary(contact)
        contacts.append(contact)
    contact_dict['Contact'] = contacts
    data[constants.CONTACTS] = contact_dict

    return data
Пример #5
0
def build_organisation_for_fhir(organisation, data):
    organisation = translation_utils.remove_none_values_from_dictionary(
        organisation)

    add_identifier_to_dict(data, organisation)

    add_status_to_dict(data, organisation)

    add_type_to_dict(data, organisation)

    add_name_to_dict(data, organisation)

    add_dates_to_dict(data, organisation, constants.DATE_TYPE_OPERATIONAL)

    add_dates_to_dict(data, organisation, constants.DATE_TYPE_LEGAL)

    return data
Пример #6
0
def build_address_for_fhir(address, data):

    if len(address) == 0:
        return data

    address = translation_utils.remove_none_values_from_dictionary(address)
    address_dict = {}

    line_list = []
    try:
        addrLn1 = address.pop('address_line1')
        line_list.append(addrLn1)
    except KeyError:
        raise exception.InvalidDataError

    if 'address_line2' in address:
        addrLn2 = address.pop('address_line2')
        line_list.append(addrLn2)
    if 'address_line3' in address:
        addrLn3 = address.pop('address_line3')
        line_list.append(addrLn3)
    address_dict['line'] = line_list

    if 'town' in address:
        town = address.pop('town')
        address_dict['city'] = town
    if 'county' in address:
        county = address.pop('county')
        address_dict['district'] = county
    if 'post_code' in address:
        postcode = address.pop('post_code')
        address_dict['postalCode'] = postcode
    #  This line really shouldn't exist but somehow it solves the issue of everything blowing up
    #  if the post_code is the last key to be popped. This may be a pycharm/python3.6.1 issue
    #  but it seems worth leaving this until we 'solve' the issue. This ONLY seems to be an issue
    #  when debugging through pycharm.
    # nonsense = "nonsense"
    if 'country' in address:
        country = address.pop('country')
        address_dict['country'] = country

    data['address'] = address_dict

    return data
Пример #7
0
def build_address(address, result_data):

    if len(address) == 0:
        return result_data

    address = translation_utils.remove_none_values_from_dictionary(address)
    location = collections.OrderedDict()
    try:
        location['AddrLn1'] = address.pop('address_line1')
    except KeyError:
        raise exception.InvalidDataError
    if 'address_line2' in address:
        location['AddrLn2'] = address.pop('address_line2')
    if 'address_line3' in address:
        location['AddrLn3'] = address.pop('address_line3')
    if 'town' in address: location['Town'] = address.pop('town')
    if 'county' in address: location['County'] = address.pop('county')
    if 'post_code' in address: location['PostCode'] = address.pop('post_code')
    if 'country' in address: location['Country'] = address.pop('country')

    result_data['GeoLoc'] = dict(Location=location)

    return result_data