コード例 #1
0
ファイル: role.py プロジェクト: markharrison17/ODSAPIShare
def get_where_statement_for_fhir_role(rolearg, primaryRole, role_idx,
                                      table_dict, where_sql, request_id):
    sql = ""
    query_param = ()

    alias = ROLE_TABLE_ALIAS + str(role_idx)
    model_utils.add_table_and_alias_to_dict(table_dict, ROLE_TABLE_NAME, alias)

    if "|" in rolearg:
        rolearg = rolearg.split("|")[1]

    roles = rolearg.split(",")

    sql += alias + ".code in ("
    count = 0
    for role in roles:
        query_param = query_param + (str.format("RO{0}", role), )
        if count > 0:
            sql += ","
        sql += "%s"
        count += 1
    sql += ")"

    if primaryRole is not None:
        sql += " AND " + alias + ".primary_role = %s"
        query_param = query_param + (str.format("{0}", primaryRole), )

    where_sql.append(sql)

    return query_param
コード例 #2
0
def get_where_statement_for_fhir_postcode_exact_search(postcode, where_sql,
                                                       table_dict, request_id):
    model_utils.add_table_and_alias_to_dict(table_dict, ADDRESS_TABLE_NAME,
                                            ADDRESS_TABLE_ALIAS)

    query_param = str.format("{0}", postcode)

    where_sql.append(ADDRESS_TABLE_ALIAS + ".post_code = %s")

    return query_param
コード例 #3
0
def get_where_statement_for_fhir_city_contains_search(city, where_sql,
                                                      table_dict, request_id):
    model_utils.add_table_and_alias_to_dict(table_dict, ADDRESS_TABLE_NAME,
                                            ADDRESS_TABLE_ALIAS)

    query_param = str.format("%{0}%", city)

    where_sql.append("UPPER(" + ADDRESS_TABLE_ALIAS + ".town) LIKE UPPER(%s)")

    return query_param
コード例 #4
0
def get_where_statement_for_ord_status_search(status, where_sql, table_dict,
                                              request_id):
    model_utils.add_table_and_alias_to_dict(table_dict, ORG_TABLE_NAME,
                                            ORG_TABLE_ALIAS)

    query_param = str.format("{0}", status)

    where_sql.append("UPPER(" + ORG_TABLE_ALIAS + ".status) LIKE UPPER(%s)")

    return query_param
コード例 #5
0
def get_where_statement_for_ord_last_changed_since_search(
        last_changed_since, where_sql, table_dict, request_id):
    model_utils.add_table_and_alias_to_dict(table_dict, ORG_TABLE_NAME,
                                            ORG_TABLE_ALIAS)

    query_param = str.format("{0}", last_changed_since)

    where_sql.append("%s <= " + ORG_TABLE_ALIAS + ".last_changed")

    return query_param
コード例 #6
0
ファイル: role.py プロジェクト: markharrison17/ODSAPIShare
def get_where_statement_for_ord_primary_role_code_search(
        primary_role_code, where_sql, table_dict, request_id):
    model_utils.add_table_and_alias_to_dict(table_dict, ROLE_TABLE_NAME,
                                            ROLE_TABLE_ALIAS)

    query_param = str.format("{0}", primary_role_code)

    where_sql.append("UPPER(" + ROLE_TABLE_ALIAS + ".code) LIKE UPPER(%s)")

    return query_param
コード例 #7
0
ファイル: role.py プロジェクト: markharrison17/ODSAPIShare
def get_where_statement_for_ord_non_primary_role_code_search(
        non_primary_role_code, where_sql, table_dict, request_id):
    model_utils.add_table_and_alias_to_dict(table_dict, ROLE_TABLE_NAME,
                                            ROLE_TABLE_ALIAS2)
    query_param = str.format("{0}", non_primary_role_code)

    where_sql.append(organisation.ORG_TABLE_ALIAS + ".odscode = " +
                     ROLE_TABLE_ALIAS2 + ".org_odscode")
    where_sql.append(ROLE_TABLE_ALIAS2 + ".primary_role = 'FALSE'")
    where_sql.append("UPPER(" + ROLE_TABLE_ALIAS2 + ".code) LIKE UPPER(%s)")

    return query_param
コード例 #8
0
def get_where_statement_for_ord_postcode_search(postcode, where_sql,
                                                table_dict, request_id):
    model_utils.add_table_and_alias_to_dict(table_dict, ADDRESS_TABLE_NAME,
                                            ADDRESS_TABLE_ALIAS)

    outbound_postcode = r'^((([A-Za-z][0-9][A-Za-z])|([A-Za-z][A-Ha-hJ-Yj-y][0-9][A-Za-z]))|(([A-Za-z][A-Ha-hJ-Yj-y][0-9]{1,2}))|([A-Za-z][0-9]{1,2}))$'

    if (len(postcode.replace(" ", "")) != len(postcode)):
        query_param = str.format("{0}%", postcode)
        where_sql.append("UPPER(" + ADDRESS_TABLE_ALIAS +
                         ".post_code) LIKE UPPER(%s)")
    else:
        match = re.match(outbound_postcode, postcode)
        if (match and (len(postcode.replace(" ", "")) == len(
            (match.group(0)).replace(" ", "")))):
            query_param = str.format("{0} %", postcode)
            where_sql.append("UPPER(" + ADDRESS_TABLE_ALIAS +
                             ".post_code) LIKE UPPER(%s)")
        else:
            query_param = str.format("{0}%", postcode)
            where_sql.append("REPLACE(UPPER(" + ADDRESS_TABLE_ALIAS +
                             ".post_code),' ','') LIKE UPPER(%s)")

    return query_param
コード例 #9
0
def get_ord_orgs_summary_from_db(select_sql, result_data, count_data,
                                 table_dict, request_id):

    model_utils.add_table_and_alias_to_dict(table_dict, ORG_TABLE_NAME,
                                            ORG_TABLE_ALIAS)
    model_utils.add_table_and_alias_to_dict(table_dict, role.ROLE_TABLE_NAME,
                                            role.ROLE_TABLE_ALIAS)
    model_utils.add_table_and_alias_to_dict(table_dict,
                                            address.ADDRESS_TABLE_NAME,
                                            address.ADDRESS_TABLE_ALIAS)
    model_utils.add_table_and_alias_to_dict(table_dict, "codesystems", "c")

    organisations = {}
    if len(select_sql) < 1:
        return organisations, 0

    try:
        result_sql = "SELECT " + ORG_TABLE_ALIAS + ".name, "
        result_sql += ORG_TABLE_ALIAS + ".odscode, "
        result_sql += address.ADDRESS_TABLE_ALIAS + ".post_code, "
        result_sql += ORG_TABLE_ALIAS + ".record_class, "
        result_sql += ORG_TABLE_ALIAS + ".status, "
        result_sql += ORG_TABLE_ALIAS + ".last_changed, "
        result_sql += role.ROLE_TABLE_ALIAS + ".code, "
        result_sql += "c.displayname "

        count_sql = "SELECT COUNT(1) "

        sql = "FROM " + hashset_csv(table_dict)

        sql += " WHERE " + ORG_TABLE_ALIAS + ".odscode = " + role.ROLE_TABLE_ALIAS + ".org_odscode "
        sql += "AND " + ORG_TABLE_ALIAS + ".odscode = " + address.ADDRESS_TABLE_ALIAS + ".org_odscode "
        sql += "AND " + role.ROLE_TABLE_ALIAS + ".primary_role = 'TRUE' "
        sql += "AND c.name = 'OrganisationRole' "
        sql += "AND c.id = " + role.ROLE_TABLE_ALIAS + ".code "

        sql += generate_query_sql_AND_clauses(select_sql, startWithWhere=False)

        count_sql += sql

        sql += "ORDER BY " + ORG_TABLE_ALIAS + ".name, " + ORG_TABLE_ALIAS + ".odscode "
        sql += "OFFSET %s "
        sql += "LIMIT %s"

        result_sql += sql

        with connection.get_db_cursor(request_id) as cursor:

            log_utils.log_database_query_statement(
                request_id, str.format(count_sql, count_data))

            cursor.execute(count_sql, count_data)
            count = cursor.fetchone()['count']

            log_utils.log_database_return(request_id, count)

            log_utils.log_database_query_statement(
                request_id, str.format(result_sql, result_data))

            cursor.execute(result_sql, result_data)
            organisations = cursor.fetchall()

            log_utils.log_database_return(request_id, organisations)

    except Exception:
        raise

    return organisations, count