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()