Beispiel #1
0
def birthday(table, sql_execute, birthday_counter):
    label = 0
    for fields in data_set(sql_execute):
        time.sleep(0.01)
        label += 1
        print 'BRITHDAY总量:', birthday_counter, '当前:', label
        try:
            empi_id = data_set("select empi_id from %s where patient_name='%s' and left(birthday,10)='%s' "
                               "and case when id_card REGEXP '[0-9]{15,}' then id_card else '' end!='' "
                               "order by case when id_card REGEXP '[0-9]{15,}' then id_card else '' end desc limit 1"
                               % (table, fields[0], fields[1])).next()[0]
        except StopIteration:
            empi_id = data_set("select empi_id from %s where patient_name='%s' "
                               "and left(birthday,10)='%s' order by case when id_card REGEXP '[0-9]{15,}' "
                               "then id_card else '' end desc,case when insure_id REGEXP '[0-9]{7,}' "
                               "then insure_id else '' end desc limit 1" % (table, fields[0], fields[1])).next()[0]
            max_confidence = data_set("select max(confidence) from %s where patient_name='%s' and "
                                      "left(birthday,10)='%s' " % (table, fields[0], fields[1])).next()[0]
            if max_confidence == '0.9':
                update_empi_id("update %s set empi_id='%s',confidence='0.8' "
                               "where patient_name='%s' and left(birthday,10)='%s' "
                               "and  (id_card REGEXP '[0-9]{15,}'='' or id_card REGEXP '[0-9]{15,}' is null) and "
                               "(insure_id REGEXP '[0-9]{7,}'='' or insure_id REGEXP '[0-9]{,}' is null)"
                               % (table, str(empi_id), fields[0], fields[1]))
            else:
                update_empi_id("update %s set empi_id='%s',confidence='0.4' "
                               "where patient_name='%s' and left(birthday,10)='%s' "
                               "and  (id_card REGEXP '[0-9]{15,}'='' or id_card REGEXP '[0-9]{15,}' is null) and "
                               "(insure_id REGEXP '[0-9]{7,}'='' or insure_id REGEXP '[0-9]{,}' is null)"
                               % (table, str(empi_id), fields[0], fields[1]))
        else:
            update_empi_id("update %s set empi_id='%s',confidence='0.8' where patient_name='%s' and "
                           "left(birthday,10)='%s' and  (id_card REGEXP '[0-9]{15,}'='' or id_card REGEXP '[0-9]{15,}' "
                           "is null) and (insure_id REGEXP '[0-9]{7,}'='' or insure_id REGEXP '[0-9]{,}' is null)"
                           % (table, str(empi_id), fields[0], fields[1]))
Beispiel #2
0
def id_card(table, sql_execute, id_card_counter):
    label = 0
    for fields in data_set(sql_execute):
        time.sleep(0.01)
        label += 1
        print 'ID_CARD总量:', id_card_counter, '当前:', label
        empi_id = data_set("select empi_id from %s where id_card='%s' limit 1 " % (table, fields[0])).next()[0]
        update_empi_id("update %s set empi_id='%s',confidence='1' where id_card='%s'" % (table, str(empi_id), fields[0]))
Beispiel #3
0
def main(table):
    sql = "select patient_name,birthday,case when id_card REGEXP '[0-9]{15,}'  " \
          "then id_card else '' end id_card,insure_id,empi_id,patient_id from %s " \
          "where empi_id=''or empi_id is null order by id_card desc,case when insure_id REGEXP '[0-9]{7,}' " \
          "then insure_id else '' end desc" % table
    u_patient_id = ["'%s'" % data[5] for data in data_set(sql)]
    update(table, sql)
    if u_patient_id:
        u_empi_id = [data[0] for data in data_set("select distinct empi_id from %s where patient_id in (%s)"
                                                  % (table, ','.join(u_patient_id)))]
        merge(table, u_empi_id)
    else:
        pass
def merge(table, u_empi_id):
    flag = 0
    update_empi_id(
        "delete from %s where confirm_status='未确认' and empi_id in (%s)" %
        (table, ','.join(u_empi_id)))
    u_empi_id = [
        empi_id for empi_id in u_empi_id
        if counter("select count(*) from %s where empi_id=%s" %
                   (table, empi_id)) > 1
    ]
    # total = len(u_empi_id)
    for items in u_empi_id:
        time.sleep(0.01)
        flag += 1
        # print '合并总量:', total, '当前:', flag
        data = [
            data for data in data_set(
                "select * from %s where empi_id='%s' order by confirm_status desc,confidence DESC "
                % (table, items))
        ]
        temp = [counter('select uuid()')] + list(data[0][1:])
        for j in [i for i in [2, 3, 4, 5, 6, 7, 8, 10, 11] if not data[0][i]]:
            for i in range(1, len(data)):
                if data[i][j]:
                    temp[j] = data[i][j]
                    break
                else:
                    pass
        temp[42], temp[43] = '', '未确认'
        update_empi_id(
            "insert into %s values('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s',"
            "'%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s',"
            "'%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')"
            % tuple([table] + map(find_none, temp)))
Beispiel #5
0
def insure_id(table, sql_execute, insure_counter):
    label = 0
    for fields in data_set(sql_execute):
        time.sleep(0.01)
        label += 1
        print 'INSURE_ID总量:', insure_counter, '当前:', label
        try:
            empi_id = data_set("select empi_id from %s where patient_name='%s' and insure_id='%s' and "
                               "case when id_card REGEXP '[0-9]{15,}' then id_card else '' end !='' order by "
                               "case when id_card REGEXP '[0-9]{15,}' then id_card else '' end desc limit 1"
                               % (table, fields[0], fields[1])).next()[0]
        except StopIteration:
            empi_id = data_set("select empi_id from %s where patient_name='%s' "
                               "and insure_id='%s' order by case when id_card REGEXP '[0-9]{15,}' "
                               "then id_card else '' end desc limit 1" % (table, fields[0], fields[1])).next()[0]
            update_empi_id("update %s set empi_id='%s',confidence='0.6' where patient_name='%s' and insure_id='%s' "
                           "and  (id_card REGEXP '[0-9]{15,}'='' or id_card REGEXP '[0-9]{15,}' is null)"
                           % (table, str(empi_id), fields[0], fields[1]))
        else:
            update_empi_id("update %s set empi_id='%s', confidence='0.9' where patient_name='%s' and insure_id='%s' "
                           "and  (id_card REGEXP '[0-9]{15,}'='' or id_card REGEXP '[0-9]{15,}' is null)"
                           % (table, str(empi_id), fields[0], fields[1]))
Beispiel #6
0
def merge(table):
    flag = 0
    empi_id_all = set(field[0] for field in data_set(
        "select empi_id from %s group by empi_id HAVING count(empi_id)>1" % table))
    total = len(empi_id_all)
    for items in empi_id_all:
        flag += 1
        time.sleep(0.01)
        print '合并总量:', total, '当前:' , flag
        data = [data for data in data_set("select * from %s where empi_id='%s' order by confidence desc " % (table, items))]
        temp = [counter('select uuid()')] + list(data[0][1:])
        for j in [i for i in [2, 3, 4, 5, 6, 7, 8, 10, 11] if not data[0][i]]:
            for i in range(1, len(data)):
                if data[i][j]:
                    temp[j] = data[i][j]
                    break
                else:
                    pass
        temp[42], temp[43] = '', '未确认'
        update_empi_id("insert into %s values('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s',"
                       "'%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s',"
                       "'%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')" % tuple([table] + map(find_none, temp)))
def update(table, sql_execute):
    label = 0
    max_id_sql = "select LPAD(max(cast(empi_id as signed)) + 1,9,'0')  from %s" % table
    for fields in data_set(sql_execute):
        time.sleep(0.01)
        label += 1
        print label
        if fields[2]:
            id = max([
                line[1] for line in data_set(
                    "select  id_card,empi_id from %s where id_card='%s' and "
                    "(confirm_status='' or confirm_status is null)" %
                    (table, fields[2]))
            ])
            if not id:
                empi_id = counter(max_id_sql)
            else:
                empi_id = id
            update_empi_id(
                "update %s set empi_id='%s',confidence='1'  where patient_id='%s'"
                % (table, str(empi_id), fields[5]))
        elif fields[0] and fields[3]:
            try:
                id = data_set(
                    "select empi_id from %s where patient_name='%s' and insure_id='%s' and (empi_id is not "
                    "null and empi_id!='') and (confirm_status='' or confirm_status is null) order by "
                    "case when id_card REGEXP '[0-9]{15,}' then id_card else '' end desc limit 1"
                    % (table, fields[0], fields[3])).next()[0]
                empi_id = id
            except StopIteration:
                empi_id = counter(max_id_sql)
                update_empi_id(
                    "update %s set empi_id='%s',confidence='0.6'  where patient_id='%s'"
                    % (table, str(empi_id), fields[5]))
            else:
                max_confidence = data_set(
                    "select max(confidence) from %s where patient_name='%s' and insure_id='%s' "
                    "and (confirm_status='' or confirm_status is null) " %
                    (table, fields[0], fields[3])).next()[0]
                if max_confidence == '1' or max_confidence == '0.9':
                    update_empi_id(
                        "update %s set empi_id='%s',confidence='0.9' where patient_id='%s'"
                        % (table, str(empi_id), fields[5]))
                else:
                    update_empi_id(
                        "update %s set empi_id='%s',confidence='0.6' where patient_id='%s'"
                        % (table, str(empi_id), fields[5]))

        elif fields[0] and fields[1]:
            try:
                id = data_set(
                    "select empi_id from %s where patient_name='%s' and left(birthday,10)='%s' and "
                    "(empi_id is not null and empi_id!='') and (confirm_status='' or confirm_status is null) "
                    "order by case when id_card REGEXP '[0-9]{15,}' then id_card else '' end desc,"
                    "case when insure_id REGEXP '[0-9]{7,}' then insure_id else '' end desc limit 1"
                    % (table, fields[0], str(fields[1])[:10])).next()[0]
                empi_id = id
            except StopIteration:
                empi_id = counter(max_id_sql)
                update_empi_id(
                    "update %s set empi_id='%s',confidence='0.4' where patient_id='%s'"
                    % (table, str(empi_id), fields[5]))
            else:

                max_confidence = data_set(
                    "select max(confidence) from %s where patient_name='%s' and "
                    "left(birthday,10)='%s' and (confirm_status='' or confirm_status is null) "
                    % (table, fields[0], str(fields[1])[:10])).next()[0]
                if max_confidence == '1' or max_confidence == '0.9':
                    update_empi_id(
                        "update %s set empi_id='%s',confidence='0.8' where patient_id='%s'"
                        % (table, str(empi_id), fields[5]))
                else:
                    update_empi_id(
                        "update %s set empi_id='%s',confidence='0.4' where patient_id='%s'"
                        % (table, str(empi_id), fields[5]))
        else:
            empi_id = counter(max_id_sql)
            if fields[0]:
                update_empi_id(
                    "update %s set empi_id='%s',confidence='0.2' where patient_id='%s'"
                    % (table, str(empi_id), fields[5]))
            else:
                update_empi_id(
                    "update %s set empi_id='%s',confidence='0' where patient_id='%s'"
                    % (table, str(empi_id), fields[5]))