优化自动审核判断
This commit is contained in:
@@ -42,3 +42,17 @@ jieba.suggest_freq(('骨', '伤'), True)
|
|||||||
jieba.suggest_freq(('感染', '性'), True)
|
jieba.suggest_freq(('感染', '性'), True)
|
||||||
jieba.suggest_freq(('胆', '道'), True)
|
jieba.suggest_freq(('胆', '道'), True)
|
||||||
jieba.suggest_freq(('脾', '胃'), True)
|
jieba.suggest_freq(('脾', '胃'), True)
|
||||||
|
|
||||||
|
'''
|
||||||
|
出院记录缺页判断关键词配置
|
||||||
|
'''
|
||||||
|
DISCHARGE_KEY = {
|
||||||
|
'入院诊断': ['入院诊断'],
|
||||||
|
'入院情况': ['入院情况', '入院时情况', '入院时主要症状'],
|
||||||
|
'入院日期': ['入院日期', '入院时间'],
|
||||||
|
'诊疗经过': ['诊疗经过', '住院经过', '治疗经过'],
|
||||||
|
'出院诊断': ['出院诊断'],
|
||||||
|
'出院情况': ['出院情况', '出院时情况'],
|
||||||
|
'出院日期': ['出院日期', '出院时间'],
|
||||||
|
'出院医嘱': ['出院医嘱']
|
||||||
|
}
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ from db import MysqlSession
|
|||||||
from db.mysql import BdYljg, BdYlks, ZxIeCost, ZxIeDischarge, ZxIeSettlement, ZxPhhd, ZxPhrec, ZxIeReview, ZxIeResult
|
from db.mysql import BdYljg, BdYlks, ZxIeCost, ZxIeDischarge, ZxIeSettlement, ZxPhhd, ZxPhrec, ZxIeReview, ZxIeResult
|
||||||
from log import HOSTNAME
|
from log import HOSTNAME
|
||||||
from photo_review import PHHD_BATCH_SIZE, SLEEP_MINUTES, HOSPITAL_ALIAS, HOSPITAL_FILTER, DEPARTMENT_ALIAS, \
|
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 services.paddle_services import IE_KEY
|
||||||
from ucloud import ufile
|
from ucloud import ufile
|
||||||
from util import image_util, common_util, html_util, model_util
|
from util import image_util, common_util, html_util, model_util
|
||||||
@@ -446,37 +446,31 @@ def photo_review(pk_phhd, name):
|
|||||||
discharge_data = discharge_task(pk_phhd, discharge_result)
|
discharge_data = discharge_task(pk_phhd, discharge_result)
|
||||||
cost_data = cost_task(pk_phhd, cost_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']
|
review_result = {
|
||||||
and settlement_data['personal_cash_payment'] and settlement_data['medical_expenses']
|
'pk_phhd': pk_phhd,
|
||||||
and settlement_data['personal_account_payment'] + settlement_data['personal_cash_payment']
|
'has_settlement': bool(settlement_result),
|
||||||
< settlement_data['medical_expenses']):
|
'has_discharge': bool(discharge_result),
|
||||||
review_result['has_settlement'] = True
|
'has_cost': bool(cost_result),
|
||||||
review_result['has_discharge'] = bool(discharge_result)
|
}
|
||||||
review_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 = []
|
page_description = []
|
||||||
discharge_key = {
|
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"《出院记录》缺页")
|
||||||
'诊疗经过': ['诊疗经过', '住院经过', '治疗经过'],
|
|
||||||
'出院诊断': ['出院诊断'],
|
|
||||||
'出院情况': ['出院情况', '出院时情况'],
|
|
||||||
'出院日期': ['出院日期', '出院时间'],
|
|
||||||
'出院医嘱': ['出院医嘱']
|
|
||||||
}
|
|
||||||
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
|
break
|
||||||
|
|
||||||
|
if review_result['has_cost']:
|
||||||
cost_missing_page = {}
|
cost_missing_page = {}
|
||||||
if cost_data['page_nums']:
|
if cost_data.get('page_nums'):
|
||||||
page_nums = cost_data['page_nums'].split(',')
|
page_nums = cost_data['page_nums'].split(',')
|
||||||
required_set = set(range(1, cost_data['page_count'] + 1))
|
required_set = set(range(1, cost_data['page_count'] + 1))
|
||||||
page_set = set(page_nums)
|
page_set = set(page_nums)
|
||||||
@@ -490,15 +484,18 @@ def photo_review(pk_phhd, name):
|
|||||||
else:
|
else:
|
||||||
review_result['full_page'] = True
|
review_result['full_page'] = True
|
||||||
|
|
||||||
if (review_result['has_settlement'] and review_result['has_discharge'] and review_result['has_cost']
|
review_result['integrity'] = (review_result['has_settlement'] and review_result['has_discharge']
|
||||||
and review_result['full_page']):
|
and review_result['has_cost'] and review_result['full_page'])
|
||||||
review_result['integrity'] = True
|
|
||||||
|
|
||||||
# 三项资料一致性判断
|
# 三项资料一致性判断
|
||||||
# 姓名一致性
|
# 姓名一致性
|
||||||
unique_name = {settlement_data['name'], discharge_data['name'], cost_data['name']}
|
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:
|
if len(unique_name) == 1:
|
||||||
review_result['name_match'] = '1' if name == settlement_data['name'] else '5'
|
review_result['name_match'] = '1' if name == unique_name.pop() else '5'
|
||||||
elif len(unique_name) == 2:
|
elif len(unique_name) == 2:
|
||||||
if settlement_data['name'] != discharge_data['name'] and settlement_data['name'] != cost_data['name']:
|
if settlement_data['name'] != discharge_data['name'] and settlement_data['name'] != cost_data['name']:
|
||||||
review_result['name_match'] = '2'
|
review_result['name_match'] = '2'
|
||||||
@@ -510,15 +507,21 @@ def photo_review(pk_phhd, name):
|
|||||||
review_result['name_match'] = '0'
|
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']):
|
and settlement_data['discharge_date'] == discharge_data['discharge_date']):
|
||||||
review_result['admission_date_match'] = '1'
|
review_result['admission_date_match'] = '1'
|
||||||
else:
|
else:
|
||||||
review_result['admission_date_match'] = '0'
|
review_result['admission_date_match'] = '0'
|
||||||
|
|
||||||
# 出院日期一致性
|
# 出院日期一致性
|
||||||
unique_discharge_date = {settlement_data['discharge_date'], discharge_data['discharge_date'],
|
discharge_date_list = [settlement_data['discharge_date'], discharge_data['discharge_date'],
|
||||||
cost_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:
|
if len(unique_discharge_date) == 1:
|
||||||
review_result['discharge_date_match'] = '1'
|
review_result['discharge_date_match'] = '1'
|
||||||
elif len(unique_discharge_date) == 2:
|
elif len(unique_discharge_date) == 2:
|
||||||
@@ -533,9 +536,8 @@ def photo_review(pk_phhd, name):
|
|||||||
else:
|
else:
|
||||||
review_result['discharge_date_match'] = '0'
|
review_result['discharge_date_match'] = '0'
|
||||||
|
|
||||||
if (review_result['name_match'] == '1' and review_result['admission_date_match'] == '1'
|
review_result['consistency'] = (review_result['name_match'] == '1' and review_result['admission_date_match'] == '1'
|
||||||
and review_result['discharge_date_match'] == '1'):
|
and review_result['discharge_date_match'] == '1')
|
||||||
review_result['consistency'] = True
|
|
||||||
|
|
||||||
review_result['success'] = review_result['integrity'] and review_result['consistency']
|
review_result['success'] = review_result['integrity'] and review_result['consistency']
|
||||||
save_or_update_ie(ZxIeReview, pk_phhd, review_result)
|
save_or_update_ie(ZxIeReview, pk_phhd, review_result)
|
||||||
|
|||||||
Reference in New Issue
Block a user