优化ie的声明,避免反复创建

This commit is contained in:
2024-06-11 13:10:04 +08:00
parent 791336394e
commit 5004b40216
2 changed files with 49 additions and 53 deletions

View File

@@ -0,0 +1,23 @@
from paddlenlp import Taskflow
from config.keys import PATIENT_NAME, ADMISSION_DATE, DISCHARGE_DATE, MEDICAL_EXPENSES, PERSONAL_CASH_PAYMENT, \
PERSONAL_ACCOUNT_PAYMENT, PERSONAL_FUNDED_AMOUNT, MEDICAL_INSURANCE_TYPE, HOSPITAL, DEPARTMENT, DOCTOR
from config.photo_review import IE_BATCH_SIZE
# 基本医保结算单
settlement_list_schema = \
PATIENT_NAME + ADMISSION_DATE + DISCHARGE_DATE + MEDICAL_EXPENSES + PERSONAL_CASH_PAYMENT \
+ PERSONAL_ACCOUNT_PAYMENT + PERSONAL_FUNDED_AMOUNT + MEDICAL_INSURANCE_TYPE
settlement_ie = Taskflow("information_extraction", schema=settlement_list_schema, model="uie-x-base",
task_path="config/model/settlement_list_model", layout_analysis=True, batch_size=IE_BATCH_SIZE)
# 出院记录
discharge_record_schema = \
HOSPITAL + DEPARTMENT + PATIENT_NAME + ADMISSION_DATE + DISCHARGE_DATE + DOCTOR
discharge_ie = Taskflow("information_extraction", schema=discharge_record_schema, model="uie-x-base",
task_path="config/model/discharge_record_model", layout_analysis=True, batch_size=IE_BATCH_SIZE)
# 费用清单
cost_list_schema = PATIENT_NAME + ADMISSION_DATE + DISCHARGE_DATE + MEDICAL_EXPENSES
cost_ie = Taskflow("information_extraction", schema=cost_list_schema, model="uie-x-base",
task_path="config/model/cost_list_model", layout_analysis=True, batch_size=IE_BATCH_SIZE)

View File

@@ -2,13 +2,13 @@ import json
import logging import logging
from time import sleep from time import sleep
from paddlenlp import Taskflow
from sqlalchemy import update from sqlalchemy import update
from config.keys import PATIENT_NAME, ADMISSION_DATE, DISCHARGE_DATE, MEDICAL_EXPENSES, PERSONAL_CASH_PAYMENT, \ from config.keys import PATIENT_NAME, ADMISSION_DATE, DISCHARGE_DATE, MEDICAL_EXPENSES, PERSONAL_CASH_PAYMENT, \
PERSONAL_ACCOUNT_PAYMENT, PERSONAL_FUNDED_AMOUNT, MEDICAL_INSURANCE_TYPE, HOSPITAL, DEPARTMENT, DOCTOR PERSONAL_ACCOUNT_PAYMENT, PERSONAL_FUNDED_AMOUNT, MEDICAL_INSURANCE_TYPE, HOSPITAL, DEPARTMENT, DOCTOR
from config.mysql import MysqlSession from config.mysql import MysqlSession
from config.photo_review import PHHD_BATCH_SIZE, SLEEP_MINUTES, IE_BATCH_SIZE from config.photo_review import PHHD_BATCH_SIZE, SLEEP_MINUTES
from photo_review import settlement_ie, discharge_ie, cost_ie
from photo_review.entity.bd_yljg import BdYljg from photo_review.entity.bd_yljg import BdYljg
from photo_review.entity.bd_ylks import BdYlks from photo_review.entity.bd_ylks import BdYlks
from photo_review.entity.zx_ie_cost import ZxIeCost from photo_review.entity.zx_ie_cost import ZxIeCost
@@ -23,7 +23,7 @@ from photo_review.util.util import get_default_datetime
# 关键信息提取 # 关键信息提取
def information_extraction(schema, phrecs, task_path): def information_extraction(ie, phrecs):
result = {} result = {}
docs = [] docs = []
doc_phrecs = [] doc_phrecs = []
@@ -32,9 +32,6 @@ def information_extraction(schema, phrecs, task_path):
if pic_path: if pic_path:
docs.append({"doc": pic_path}) docs.append({"doc": pic_path})
doc_phrecs.append(phrec) doc_phrecs.append(phrec)
ie = Taskflow("information_extraction", schema=schema, model="uie-x-base", task_path=task_path,
layout_analysis=True, batch_size=IE_BATCH_SIZE)
ie_results = ie(docs) ie_results = ie(docs)
now = get_default_datetime() now = get_default_datetime()
@@ -123,40 +120,17 @@ def photo_review(pk_phhd):
elif phrec.cRectype == "4": elif phrec.cRectype == "4":
cost_list.append(phrec) cost_list.append(phrec)
name_key = PATIENT_NAME settlement_list_ie_result = information_extraction(settlement_ie, settlement_list)
admission_date_key = ADMISSION_DATE
discharge_date_key = DISCHARGE_DATE
medical_expenses_key = MEDICAL_EXPENSES
personal_cash_payment_key = PERSONAL_CASH_PAYMENT
personal_account_payment_key = PERSONAL_ACCOUNT_PAYMENT
personal_funded_amount_key = PERSONAL_FUNDED_AMOUNT
medical_insurance_type_key = MEDICAL_INSURANCE_TYPE
hospital_key = HOSPITAL
department_key = DEPARTMENT
doctor_key = DOCTOR
# 基本医保结算单
settlement_list_schema = \
name_key + admission_date_key + discharge_date_key + medical_expenses_key + personal_cash_payment_key \
+ personal_account_payment_key + personal_funded_amount_key + medical_insurance_type_key
# 出院记录
discharge_record_schema = \
hospital_key + department_key + name_key + admission_date_key + discharge_date_key + doctor_key
# 费用清单
cost_list_schema = name_key + admission_date_key + discharge_date_key + medical_expenses_key
settlement_list_ie_result = information_extraction(settlement_list_schema, settlement_list,
"config/model/settlement_list_model")
settlement_data = { settlement_data = {
"pk_phhd": pk_phhd, "pk_phhd": pk_phhd,
"name": handle_name(get_best_value_in_keys(settlement_list_ie_result, name_key)), "name": handle_name(get_best_value_in_keys(settlement_list_ie_result, PATIENT_NAME)),
"admission_date_str": get_best_value_in_keys(settlement_list_ie_result, admission_date_key), "admission_date_str": get_best_value_in_keys(settlement_list_ie_result, ADMISSION_DATE),
"discharge_date_str": get_best_value_in_keys(settlement_list_ie_result, discharge_date_key), "discharge_date_str": get_best_value_in_keys(settlement_list_ie_result, DISCHARGE_DATE),
"medical_expenses_str": get_best_value_in_keys(settlement_list_ie_result, medical_expenses_key), "medical_expenses_str": get_best_value_in_keys(settlement_list_ie_result, MEDICAL_EXPENSES),
"personal_cash_payment_str": get_best_value_in_keys(settlement_list_ie_result, personal_cash_payment_key), "personal_cash_payment_str": get_best_value_in_keys(settlement_list_ie_result, PERSONAL_CASH_PAYMENT),
"personal_account_payment_str": get_best_value_in_keys(settlement_list_ie_result, personal_account_payment_key), "personal_account_payment_str": get_best_value_in_keys(settlement_list_ie_result, PERSONAL_ACCOUNT_PAYMENT),
"personal_funded_amount_str": get_best_value_in_keys(settlement_list_ie_result, personal_funded_amount_key), "personal_funded_amount_str": get_best_value_in_keys(settlement_list_ie_result, PERSONAL_FUNDED_AMOUNT),
"medical_insurance_type": get_best_value_in_keys(settlement_list_ie_result, medical_insurance_type_key) "medical_insurance_type": get_best_value_in_keys(settlement_list_ie_result, MEDICAL_INSURANCE_TYPE)
} }
settlement_data["admission_date"] = handle_date(settlement_data["admission_date_str"]) settlement_data["admission_date"] = handle_date(settlement_data["admission_date_str"])
settlement_data["admission_date"] = handle_date(settlement_data["admission_date_str"]) settlement_data["admission_date"] = handle_date(settlement_data["admission_date_str"])
@@ -167,20 +141,19 @@ def photo_review(pk_phhd):
settlement_data["personal_funded_amount"] = handle_decimal(settlement_data["personal_funded_amount_str"]) settlement_data["personal_funded_amount"] = handle_decimal(settlement_data["personal_funded_amount_str"])
save_or_update_ie(ZxIeSettlement, pk_phhd, settlement_data) save_or_update_ie(ZxIeSettlement, pk_phhd, settlement_data)
discharge_record_ie_result = information_extraction(discharge_record_schema, discharge_record, discharge_record_ie_result = information_extraction(discharge_ie, discharge_record)
"config/model/discharge_record_model")
discharge_data = { discharge_data = {
"pk_phhd": pk_phhd, "pk_phhd": pk_phhd,
"hospital": get_best_value_in_keys(discharge_record_ie_result, hospital_key), "hospital": get_best_value_in_keys(discharge_record_ie_result, HOSPITAL),
"department": get_best_value_in_keys(discharge_record_ie_result, department_key), "department": get_best_value_in_keys(discharge_record_ie_result, DEPARTMENT),
"name": handle_name(get_best_value_in_keys(discharge_record_ie_result, name_key)), "name": handle_name(get_best_value_in_keys(discharge_record_ie_result, PATIENT_NAME)),
"admission_date_str": get_best_value_in_keys(discharge_record_ie_result, admission_date_key), "admission_date_str": get_best_value_in_keys(discharge_record_ie_result, ADMISSION_DATE),
"discharge_date_str": get_best_value_in_keys(discharge_record_ie_result, discharge_date_key), "discharge_date_str": get_best_value_in_keys(discharge_record_ie_result, DISCHARGE_DATE),
"doctor": handle_name(get_best_value_in_keys(discharge_record_ie_result, doctor_key)) "doctor": handle_name(get_best_value_in_keys(discharge_record_ie_result, DOCTOR))
} }
discharge_data["admission_date"] = handle_date(discharge_data["admission_date_str"]) discharge_data["admission_date"] = handle_date(discharge_data["admission_date_str"])
discharge_data["discharge_date"] = handle_date(discharge_data["discharge_date_str"]) discharge_data["discharge_date"] = handle_date(discharge_data["discharge_date_str"])
hospital_value = get_values_of_keys(discharge_record_ie_result, hospital_key) hospital_value = get_values_of_keys(discharge_record_ie_result, HOSPITAL)
if hospital_value: if hospital_value:
session = MysqlSession() session = MysqlSession()
yljg = session.query(BdYljg.pk_yljg, BdYljg.name) \ yljg = session.query(BdYljg.pk_yljg, BdYljg.name) \
@@ -189,7 +162,7 @@ def photo_review(pk_phhd):
if yljg: if yljg:
discharge_data["pk_yljg"] = yljg.pk_yljg discharge_data["pk_yljg"] = yljg.pk_yljg
discharge_data["hospital"] = yljg.name discharge_data["hospital"] = yljg.name
department_value = get_values_of_keys(discharge_record_ie_result, department_key) department_value = get_values_of_keys(discharge_record_ie_result, DEPARTMENT)
if department_value: if department_value:
department_values = [] department_values = []
for dept in department_value: for dept in department_value:
@@ -205,13 +178,13 @@ def photo_review(pk_phhd):
discharge_data["department"] = ylks.name discharge_data["department"] = ylks.name
save_or_update_ie(ZxIeDischarge, pk_phhd, discharge_data) save_or_update_ie(ZxIeDischarge, pk_phhd, discharge_data)
cost_list_ie_result = information_extraction(cost_list_schema, cost_list, "config/model/cost_list_model") cost_list_ie_result = information_extraction(cost_ie, cost_list)
cost_data = { cost_data = {
"pk_phhd": pk_phhd, "pk_phhd": pk_phhd,
"name": handle_name(get_best_value_in_keys(cost_list_ie_result, name_key)), "name": handle_name(get_best_value_in_keys(cost_list_ie_result, PATIENT_NAME)),
"admission_date_str": get_best_value_in_keys(cost_list_ie_result, admission_date_key), "admission_date_str": get_best_value_in_keys(cost_list_ie_result, ADMISSION_DATE),
"discharge_date_str": get_best_value_in_keys(cost_list_ie_result, discharge_date_key), "discharge_date_str": get_best_value_in_keys(cost_list_ie_result, DISCHARGE_DATE),
"medical_expenses_str": get_best_value_in_keys(cost_list_ie_result, medical_expenses_key) "medical_expenses_str": get_best_value_in_keys(cost_list_ie_result, MEDICAL_EXPENSES)
} }
cost_data["admission_date"] = handle_date(cost_data["admission_date_str"]) cost_data["admission_date"] = handle_date(cost_data["admission_date_str"])
cost_data["discharge_date"] = handle_date(cost_data["discharge_date_str"]) cost_data["discharge_date"] = handle_date(cost_data["discharge_date_str"])