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,206 @@
import psycopg2
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")
conn.commit()
print("=" * 80)
print("查询患者:王俊彭 (病历号: PN0000000038)")
print("=" * 80)
print()
# 1. 查询患者基本信息和就诊ID
print("步骤1: 查询患者基本信息...")
cursor.execute("""
SELECT
p.id as patient_id,
p.name as patient_name,
e.id as encounter_id,
e.create_time as encounter_time
FROM adm_patient p
LEFT JOIN adm_encounter e ON e.patient_id = p.id
WHERE p.name = '王俊彭'
ORDER BY e.create_time DESC
LIMIT 5
""")
patient_rows = cursor.fetchall()
if not patient_rows:
print("✗ 未找到患者信息")
else:
for row in patient_rows:
print(
f" 患者ID: {row[0]}, 姓名: {row[1]}, 就诊ID: {row[2]}, 就诊时间: {row[3]}"
)
# 获取最新的就诊ID
encounter_id = patient_rows[0][2]
patient_id = patient_rows[0][0]
print(f"\n使用就诊ID: {encounter_id}")
print()
# 2. 查询手术申请单
print("步骤2: 查询手术申请单...")
cursor.execute(
"""
SELECT
id,
prescription_no,
type_code,
name,
create_time,
desc_json
FROM doc_request_form
WHERE encounter_id = %s
AND type_code = 'PROCEDURE'
AND delete_flag = '0'
ORDER BY create_time DESC
""",
(encounter_id,),
)
request_forms = cursor.fetchall()
if not request_forms:
print("✗ 未找到手术申请单")
else:
print(f"✓ 找到 {len(request_forms)} 条手术申请单:")
for rf in request_forms:
print(
f" 申请单ID: {rf[0]}, 单号: {rf[1]}, 类型: {rf[2]}, 名称: {rf[3]}, 时间: {rf[4]}"
)
if rf[5]:
try:
import json
desc = json.loads(rf[5])
surgery_name = desc.get("surgeryName", "N/A")
surgery_fee = desc.get("surgeryFee", "N/A")
print(f" -> 手术名称: {surgery_name}, 手术费用: {surgery_fee}")
except:
print(f" -> 手术详情: {rf[5][:100]}")
print()
# 3. 查询手术医嘱ServiceRequest
print("步骤3: 查询手术医嘱ServiceRequest...")
cursor.execute(
"""
SELECT
id,
prescription_no,
status_enum,
category_enum,
patient_id,
encounter_id,
create_time,
content_json
FROM wor_service_request
WHERE patient_id = %s
AND category_enum = 4
AND delete_flag = '0'
ORDER BY create_time DESC
""",
(patient_id,),
)
service_requests = cursor.fetchall()
if not service_requests:
print("✗ 未找到手术医嘱")
print("\n⚠️ 问题确认:有手术申请单但没有对应的手术医嘱!")
else:
print(f"✓ 找到 {len(service_requests)} 条手术医嘱:")
for sr in service_requests:
status_text = {1: "待签发", 2: "已签发", 3: "已执行"}.get(
sr[2], f"状态{sr[2]}"
)
print(
f" 医嘱ID: {sr[0]}, 单号: {sr[1]}, 状态: {status_text}, 就诊ID: {sr[5]}, 时间: {sr[6]}"
)
print()
# 4. 查询收费项目
print("步骤4: 查询收费项目ChargeItem...")
cursor.execute(
"""
SELECT
id,
bus_no,
status_enum,
total_price,
service_id
FROM adm_charge_item
WHERE patient_id = %s
AND service_table = 'wor_service_request'
AND delete_flag = '0'
ORDER BY create_time DESC
""",
(patient_id,),
)
charge_items = cursor.fetchall()
if not charge_items:
print("✗ 未找到收费项目")
else:
print(f"✓ 找到 {len(charge_items)} 条收费项目:")
for ci in charge_items:
print(f" 收费ID: {ci[0]}, 单号: {ci[1]}, 金额: {ci[3]}, 关联医嘱: {ci[4]}")
print()
# 5. 查询医嘱列表(用于对比)
print("步骤5: 查询该患者的所有医嘱...")
cursor.execute(
"""
SELECT
category_enum,
status_enum,
count(*) as count
FROM wor_service_request
WHERE patient_id = %s
AND delete_flag = '0'
GROUP BY category_enum, status_enum
ORDER BY category_enum
""",
(patient_id,),
)
categories = cursor.fetchall()
if categories:
print("✓ 医嘱统计:")
cat_names = {1: "西药", 2: "耗材", 3: "诊疗", 4: "手术"}
stat_names = {1: "待签发", 2: "已签发", 3: "已执行"}
for cat in categories:
cat_name = cat_names.get(cat[0], f"类型{cat[0]}")
stat_name = stat_names.get(cat[1], f"状态{cat[1]}")
print(f" {cat_name} - {stat_name}: {cat[2]}")
print()
print("=" * 80)
# 问题诊断
if request_forms and not service_requests:
print("\n🔴 问题确认:")
print(" ✓ 手术申请单存在doc_request_form")
print(" ✗ 手术医嘱不存在wor_service_request")
print("\n 结论:保存手术申请单时未生成手术医嘱")
print(" 原因:代码修复可能未生效或未部署到生产环境")
elif service_requests:
print("\n✅ 数据正常:")
print(" ✓ 手术申请单存在")
print(" ✓ 手术医嘱存在")
print("\n 请在医嘱TAB页面查看是否能显示")
print()
cursor.close()
conn.close()