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
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
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
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
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
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
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