Merge develop into test - sync latest code

This commit is contained in:
2026-04-10 12:31:19 +08:00
1255 changed files with 107256 additions and 24904 deletions

View File

@@ -0,0 +1,214 @@
import psycopg2
import json
import sys
sys.stdout.reconfigure(encoding="utf-8")
conn = psycopg2.connect(
host="192.168.110.252",
port=15432,
database="postgresql",
user="postgresql",
password="Jchl1528",
)
cursor = conn.cursor()
cursor.execute("SET search_path TO hisdev, public")
print("=" * 80)
print("模拟前端处理逻辑,检查是否会报错")
print("=" * 80)
print()
encounter_id = 2038823905749327873
practitioner_id = 1980296166230962178
# 查询所有数据UNION ALL 三部分)
cursor.execute(
"""
(SELECT 1 AS advice_type,
T1.id AS request_id,
T1.id || '-1' AS unique_key,
T1.practitioner_id AS requester_id,
T1.create_time AS request_time,
CASE WHEN T1.practitioner_id = %s THEN '1' ELSE '0' END AS biz_request_flag,
T1.content_json AS content_json,
T1.skin_test_flag AS skin_test_flag,
T1.infusion_flag AS inject_flag,
T1.group_id AS group_id,
T2.NAME AS advice_name,
T3.total_volume AS volume,
T1.lot_number AS lot_number,
T1.quantity AS quantity,
T1.unit_code AS unit_code,
T1.status_enum AS status_enum,
T1.method_code AS method_code,
T1.rate_code AS rate_code,
T1.dose AS dose,
T1.dose_unit_code AS dose_unit_code,
T4.id AS charge_item_id,
T4.total_price AS total_price,
T4.status_enum AS charge_status,
al.id AS position_id,
al.name AS position_name,
T1.dispense_per_duration AS dispense_per_duration,
T2.part_percent AS part_percent,
ccd.name AS condition_definition_name,
T1.therapy_enum AS therapyEnum,
T1.sort_number AS sort_number,
T1.based_on_id AS based_on_id
FROM med_medication_request AS T1
LEFT JOIN med_medication_definition AS T2 ON T2.ID = T1.medication_id
AND T2.delete_flag = '0'
LEFT JOIN med_medication AS T3 ON T3.medication_def_id = T2.ID
AND T3.delete_flag = '0'
LEFT JOIN adm_charge_item AS T4 ON T4.service_id = T1.ID AND T4.delete_flag = '0' AND
T4.service_table = 'med_medication_request'
LEFT JOIN adm_location AS al ON al.ID = T1.perform_location AND al.delete_flag = '0'
LEFT JOIN cli_condition AS cc ON cc.id = T1.condition_id AND cc.delete_flag = '0'
LEFT JOIN cli_condition_definition AS ccd ON ccd.id = cc.definition_id
WHERE T1.delete_flag = '0' AND T1.tcm_flag = 0 AND T1.generate_source_enum = 1
AND T1.encounter_id = %s
AND T1.refund_medicine_id IS NULL)
UNION ALL
(SELECT 2 AS advice_type,
T1.id AS request_id,
T1.id || '-2' AS unique_key,
T1.requester_id AS requester_id,
T1.create_time AS request_time,
CASE WHEN T1.requester_id = %s THEN '1' ELSE '0' END AS biz_request_flag,
T1.content_json AS content_json,
null AS skin_test_flag,
null AS inject_flag,
null AS group_id,
T2.NAME AS advice_name,
T2.SIZE AS volume,
T1.lot_number AS lot_number,
T1.quantity AS quantity,
T1.unit_code AS unit_code,
T1.status_enum AS status_enum,
'' AS method_code,
T1.rate_code AS rate_code,
NULL AS dose,
'' AS dose_unit_code,
T3.id AS charge_item_id,
T3.total_price AS total_price,
T3.status_enum AS charge_status,
al.id AS position_id,
al.name AS position_name,
null AS dispense_per_duration,
T2.part_percent AS part_percent,
'' AS condition_definition_name,
2 AS therapyEnum,
99 AS sort_number,
T1.based_on_id AS based_on_id
FROM wor_device_request AS T1
LEFT JOIN adm_device_definition AS T2 ON T2.ID = T1.device_def_id
AND T2.delete_flag = '0'
LEFT JOIN adm_charge_item AS T3
ON T3.service_id = T1.ID AND T3.delete_flag = '0' AND
T3.service_table = 'wor_device_request'
LEFT JOIN adm_location AS al ON al.ID = T1.perform_location AND al.delete_flag = '0'
WHERE T1.delete_flag = '0' AND T1.generate_source_enum = 1
AND T1.encounter_id = %s
AND T1.refund_device_id IS NULL)
UNION ALL
(SELECT 3 AS advice_type,
T1.id AS request_id,
T1.id || '-3' AS unique_key,
T1.requester_id AS requester_id,
T1.create_time AS request_time,
CASE WHEN T1.requester_id = %s THEN '1' ELSE '0' END AS biz_request_flag,
T1.content_json AS content_json,
null AS skin_test_flag,
null AS inject_flag,
null AS group_id,
COALESCE(T2.NAME, T1.content_json::jsonb->>'surgeryName') AS advice_name,
'' AS volume,
'' AS lot_number,
T1.quantity AS quantity,
T1.unit_code AS unit_code,
T1.status_enum AS status_enum,
'' AS method_code,
'' AS rate_code,
NULL AS dose,
'' AS dose_unit_code,
T3.id AS charge_item_id,
T3.total_price AS total_price,
T3.status_enum AS charge_status,
ao.id AS position_id,
ao.name AS position_name,
null AS dispense_per_duration,
1 AS part_percent,
'' AS condition_definition_name,
T1.therapy_enum AS therapyEnum,
99 AS sort_number,
T1.based_on_id AS based_on_id
FROM wor_service_request AS T1
LEFT JOIN wor_activity_definition AS T2
ON T2.ID = T1.activity_id
AND T2.delete_flag = '0'
LEFT JOIN adm_charge_item AS T3 ON T3.service_id = T1.ID AND T3.delete_flag = '0' AND
T3.service_table = 'wor_service_request'
LEFT JOIN adm_organization AS ao ON ao.ID = T1.org_id AND ao.delete_flag = '0'
WHERE T1.delete_flag = '0' AND T1.generate_source_enum = 1
AND T1.parent_id IS NULL
AND T1.encounter_id = %s)
ORDER BY status_enum
""",
(
practitioner_id,
encounter_id,
practitioner_id,
encounter_id,
practitioner_id,
encounter_id,
),
)
rows = cursor.fetchall()
print(f"查询到 {len(rows)} 条记录")
print()
# 模拟前端处理
error_count = 0
success_count = 0
for i, row in enumerate(rows):
request_id = row[1]
unique_key = row[2]
advice_name = row[10]
content_json = row[6]
try:
# 模拟前端JSON.parse(item.contentJson)
if content_json is None or content_json == "":
parsed_content = {}
else:
parsed_content = (
json.loads(content_json)
if isinstance(content_json, str)
else content_json
)
success_count += 1
# 检查手术医嘱
if unique_key.endswith("-3") and advice_name:
print(f"✓ 第{i + 1}条: advice_type=3 (ServiceRequest)")
print(f" request_id: {request_id}")
print(f" advice_name: {advice_name}")
print(f" content_json解析成功")
print()
except Exception as e:
error_count += 1
print(f"✗ 第{i + 1}条报错: {e}")
print(f" request_id: {request_id}")
print(f" content_json: {content_json}")
print()
print(f"成功: {success_count}, 失败: {error_count}")
cursor.close()
conn.close()