Files
his/scripts/verify_fix.py

116 lines
3.1 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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")
print("=" * 80)
print("验证修复后的数据模拟新SQL查询")
print("=" * 80)
print()
encounter_id = 2038823905749327873
practitioner_id = 1980296166230962178
# 使用修改后的SQL逻辑
cursor.execute(
"""
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 T1.status_enum
""",
(practitioner_id, encounter_id),
)
rows = cursor.fetchall()
print(f"查询到 {len(rows)} 条记录:")
print()
for row in rows:
print(f"advice_type: {row[0]}")
print(f"request_id: {row[1]}")
print(f"unique_key: {row[2]}")
print(f"advice_name: {row[10]} ← 关键字段") # advice_name是第11个字段索引10
print(f"content_json: {row[6][:80] if row[6] else None}...")
print(f"status_enum: {row[14]}")
print(f"therapyEnum: {row[25]}")
print("-" * 80)
print()
# 检查手术医嘱
cursor.execute(
"""
SELECT
id,
prescription_no,
COALESCE(
(SELECT name FROM wor_activity_definition WHERE id = sr.activity_id AND delete_flag = '0'),
sr.content_json::jsonb->>'surgeryName'
) as advice_name,
status_enum,
content_json::jsonb->>'surgeryName' as surgery_name
FROM wor_service_request sr
WHERE category_enum = 4
AND delete_flag = '0'
AND encounter_id = %s
""",
(encounter_id,),
)
print("直接查询手术医嘱:")
for row in cursor.fetchall():
print(f" ID: {row[0]}, 单号: {row[1]}, advice_name: {row[2]}, 状态: {row[3]}")
cursor.close()
conn.close()