From f3930cc7bd424df61c1d2ea534066de176caf9ec Mon Sep 17 00:00:00 2001 From: liuyebo <1515783401@qq.com> Date: Fri, 11 Oct 2024 10:03:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=87=AA=E5=8A=A8=E5=AE=A1?= =?UTF-8?q?=E6=A0=B8=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- photo_review/__init__.py | 14 ++++ photo_review/auto_photo_review.py | 132 +++++++++++++++--------------- 2 files changed, 81 insertions(+), 65 deletions(-) diff --git a/photo_review/__init__.py b/photo_review/__init__.py index 20d6e5d..2dd2325 100644 --- a/photo_review/__init__.py +++ b/photo_review/__init__.py @@ -42,3 +42,17 @@ jieba.suggest_freq(('骨', '伤'), True) jieba.suggest_freq(('感染', '性'), True) jieba.suggest_freq(('胆', '道'), True) jieba.suggest_freq(('脾', '胃'), True) + +''' +出院记录缺页判断关键词配置 +''' +DISCHARGE_KEY = { + '入院诊断': ['入院诊断'], + '入院情况': ['入院情况', '入院时情况', '入院时主要症状'], + '入院日期': ['入院日期', '入院时间'], + '诊疗经过': ['诊疗经过', '住院经过', '治疗经过'], + '出院诊断': ['出院诊断'], + '出院情况': ['出院情况', '出院时情况'], + '出院日期': ['出院日期', '出院时间'], + '出院医嘱': ['出院医嘱'] +} diff --git a/photo_review/auto_photo_review.py b/photo_review/auto_photo_review.py index 4ccf676..56ea20e 100644 --- a/photo_review/auto_photo_review.py +++ b/photo_review/auto_photo_review.py @@ -16,7 +16,7 @@ from db import MysqlSession from db.mysql import BdYljg, BdYlks, ZxIeCost, ZxIeDischarge, ZxIeSettlement, ZxPhhd, ZxPhrec, ZxIeReview, ZxIeResult from log import HOSTNAME from photo_review import PHHD_BATCH_SIZE, SLEEP_MINUTES, HOSPITAL_ALIAS, HOSPITAL_FILTER, DEPARTMENT_ALIAS, \ - DEPARTMENT_FILTER + DEPARTMENT_FILTER, DISCHARGE_KEY from services.paddle_services import IE_KEY from ucloud import ufile from util import image_util, common_util, html_util, model_util @@ -446,43 +446,37 @@ def photo_review(pk_phhd, name): discharge_data = discharge_task(pk_phhd, discharge_result) cost_data = cost_task(pk_phhd, cost_result) - review_result = { - 'pk_phhd': pk_phhd, - } # 三项资料完整性判断 # 三项资料缺项判断 - if (bool(settlement_data) and settlement_data['personal_account_payment'] - and settlement_data['personal_cash_payment'] and settlement_data['medical_expenses'] - and settlement_data['personal_account_payment'] + settlement_data['personal_cash_payment'] - < settlement_data['medical_expenses']): - review_result['has_settlement'] = True - review_result['has_discharge'] = bool(discharge_result) - review_result['has_cost'] = bool(cost_result) + review_result = { + 'pk_phhd': pk_phhd, + 'has_settlement': bool(settlement_result), + 'has_discharge': bool(discharge_result), + 'has_cost': bool(cost_result), + } + if (review_result['has_settlement'] and settlement_data.get('personal_account_payment') + and settlement_data.get('personal_cash_payment') and settlement_data.get('medical_expenses')): + review_result['has_settlement'] &= ( + float(settlement_data['personal_account_payment']) + float(settlement_data['personal_cash_payment']) + < float(settlement_data['medical_expenses']) + ) # 三项资料缺页判断 page_description = [] - discharge_key = { - '入院诊断': ['入院诊断'], - '入院情况': ['入院情况', '入院时情况', '入院时主要症状'], - '入院日期': ['入院日期', '入院时间'], - '诊疗经过': ['诊疗经过', '住院经过', '治疗经过'], - '出院诊断': ['出院诊断'], - '出院情况': ['出院情况', '出院时情况'], - '出院日期': ['出院日期', '出院时间'], - '出院医嘱': ['出院医嘱'] - } - for discharge_item in discharge_key: - if not all(key in discharge_text for key in discharge_key[discharge_item]): - page_description.append(f"《出院记录》缺{discharge_item}") - break + if review_result['has_discharge']: + for discharge_item in DISCHARGE_KEY: + if not all(key in discharge_text for key in DISCHARGE_KEY[discharge_item]): + page_description.append(f"《出院记录》缺页") + break - cost_missing_page = {} - if cost_data['page_nums']: - page_nums = cost_data['page_nums'].split(',') - required_set = set(range(1, cost_data['page_count'] + 1)) - page_set = set(page_nums) - cost_missing_page = required_set - page_set - if cost_missing_page: - page_description.append(f"《住院费用清单》,缺第{','.join(cost_missing_page)}页") + if review_result['has_cost']: + cost_missing_page = {} + if cost_data.get('page_nums'): + page_nums = cost_data['page_nums'].split(',') + required_set = set(range(1, cost_data['page_count'] + 1)) + page_set = set(page_nums) + cost_missing_page = required_set - page_set + if cost_missing_page: + page_description.append(f"《住院费用清单》,缺第{','.join(cost_missing_page)}页") if page_description: review_result['full_page'] = False @@ -490,52 +484,60 @@ def photo_review(pk_phhd, name): else: review_result['full_page'] = True - if (review_result['has_settlement'] and review_result['has_discharge'] and review_result['has_cost'] - and review_result['full_page']): - review_result['integrity'] = True + review_result['integrity'] = (review_result['has_settlement'] and review_result['has_discharge'] + and review_result['has_cost'] and review_result['full_page']) # 三项资料一致性判断 # 姓名一致性 - unique_name = {settlement_data['name'], discharge_data['name'], cost_data['name']} - if len(unique_name) == 1: - review_result['name_match'] = '1' if name == settlement_data['name'] else '5' - elif len(unique_name) == 2: - if settlement_data['name'] != discharge_data['name'] and settlement_data['name'] != cost_data['name']: - review_result['name_match'] = '2' - elif discharge_data['name'] != settlement_data['name'] and discharge_data['name'] != cost_data['name']: - review_result['name_match'] = '3' - else: - review_result['name_match'] = '4' - else: + name_list = [settlement_data['name'], discharge_data['name'], cost_data['name']] + if sum(not bool(n) for n in name_list) > 1: # 有2个及以上空值直接认为都不一致 review_result['name_match'] = '0' + else: + unique_name = set(name_list) + if len(unique_name) == 1: + review_result['name_match'] = '1' if name == unique_name.pop() else '5' + elif len(unique_name) == 2: + if settlement_data['name'] != discharge_data['name'] and settlement_data['name'] != cost_data['name']: + review_result['name_match'] = '2' + elif discharge_data['name'] != settlement_data['name'] and discharge_data['name'] != cost_data['name']: + review_result['name_match'] = '3' + else: + review_result['name_match'] = '4' + else: + review_result['name_match'] = '0' # 住院日期一致性 - if (settlement_data['admission_date'] == discharge_data['admission_date'] + if (settlement_data['admission_date'] and discharge_data['admission_date'] + and settlement_data['discharge_date'] and discharge_data['discharge_date'] + and settlement_data['admission_date'] == discharge_data['admission_date'] and settlement_data['discharge_date'] == discharge_data['discharge_date']): review_result['admission_date_match'] = '1' else: review_result['admission_date_match'] = '0' # 出院日期一致性 - unique_discharge_date = {settlement_data['discharge_date'], discharge_data['discharge_date'], - cost_data['discharge_date']} - if len(unique_discharge_date) == 1: - review_result['discharge_date_match'] = '1' - elif len(unique_discharge_date) == 2: - if (settlement_data['discharge_date'] != discharge_data['discharge_date'] - and settlement_data['discharge_date'] != cost_data['discharge_date']): - review_result['discharge_date_match'] = '2' - elif (discharge_data['discharge_date'] != settlement_data['discharge_date'] - and discharge_data['discharge_date'] != cost_data['discharge_date']): - review_result['discharge_date_match'] = '3' - else: - review_result['discharge_date_match'] = '4' - else: + discharge_date_list = [settlement_data['discharge_date'], discharge_data['discharge_date'], + cost_data['discharge_date']] + if sum(not bool(d) for d in discharge_date_list) > 1: review_result['discharge_date_match'] = '0' + else: + unique_discharge_date = set(discharge_date_list) + if len(unique_discharge_date) == 1: + review_result['discharge_date_match'] = '1' + elif len(unique_discharge_date) == 2: + if (settlement_data['discharge_date'] != discharge_data['discharge_date'] + and settlement_data['discharge_date'] != cost_data['discharge_date']): + review_result['discharge_date_match'] = '2' + elif (discharge_data['discharge_date'] != settlement_data['discharge_date'] + and discharge_data['discharge_date'] != cost_data['discharge_date']): + review_result['discharge_date_match'] = '3' + else: + review_result['discharge_date_match'] = '4' + else: + review_result['discharge_date_match'] = '0' - if (review_result['name_match'] == '1' and review_result['admission_date_match'] == '1' - and review_result['discharge_date_match'] == '1'): - review_result['consistency'] = True + review_result['consistency'] = (review_result['name_match'] == '1' and review_result['admission_date_match'] == '1' + and review_result['discharge_date_match'] == '1') review_result['success'] = review_result['integrity'] and review_result['consistency'] save_or_update_ie(ZxIeReview, pk_phhd, review_result)