106 lines
2.4 KiB
Python
106 lines
2.4 KiB
Python
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("直接检查 ServiceRequest 数据")
|
|
print("=" * 80)
|
|
print()
|
|
|
|
# 直接查询表数据
|
|
cursor.execute("""
|
|
SELECT
|
|
id,
|
|
category_enum,
|
|
content_json,
|
|
activity_id
|
|
FROM wor_service_request
|
|
WHERE encounter_id = 2038823905749327873
|
|
AND delete_flag = '0'
|
|
AND parent_id IS NULL
|
|
""")
|
|
|
|
print("原始数据:")
|
|
for row in cursor.fetchall():
|
|
print(f" ID: {row[0]}")
|
|
print(f" category_enum: {row[1]}")
|
|
print(f" activity_id: {row[3]}")
|
|
if row[2]:
|
|
import json
|
|
|
|
try:
|
|
content = json.loads(row[2]) if isinstance(row[2], str) else row[2]
|
|
print(f" content_json.surgeryName: {content.get('surgeryName', 'N/A')}")
|
|
except:
|
|
print(f" content_json: {row[2][:100]}")
|
|
print()
|
|
|
|
print()
|
|
print("=" * 80)
|
|
print("测试 COALESCE 语法")
|
|
print("=" * 80)
|
|
print()
|
|
|
|
# 测试 COALESCE 语法
|
|
cursor.execute("""
|
|
SELECT
|
|
id,
|
|
COALESCE(category_enum, 3) as advice_type,
|
|
COALESCE(content_json::jsonb->>'surgeryName', '默认值') as surgery_name
|
|
FROM wor_service_request
|
|
WHERE category_enum = 4
|
|
AND delete_flag = '0'
|
|
LIMIT 1
|
|
""")
|
|
|
|
row = cursor.fetchone()
|
|
if row:
|
|
print(f"COALESCE 测试:")
|
|
print(f" ID: {row[0]}")
|
|
print(f" advice_type: {row[1]}")
|
|
print(f" surgery_name: {row[2]}")
|
|
else:
|
|
print("未找到记录")
|
|
|
|
print()
|
|
print("=" * 80)
|
|
print("检查 activity_definition 关联")
|
|
print("=" * 80)
|
|
print()
|
|
|
|
# 检查 activity_definition
|
|
cursor.execute("""
|
|
SELECT
|
|
sr.id,
|
|
sr.activity_id,
|
|
ad.name as activity_name,
|
|
COALESCE(ad.name, sr.content_json::jsonb->>'surgeryName') as coalesce_name
|
|
FROM wor_service_request sr
|
|
LEFT JOIN wor_activity_definition ad ON ad.id = sr.activity_id AND ad.delete_flag = '0'
|
|
WHERE sr.category_enum = 4
|
|
AND sr.delete_flag = '0'
|
|
AND sr.encounter_id = 2038823905749327873
|
|
""")
|
|
|
|
for row in cursor.fetchall():
|
|
print(f" ServiceRequest ID: {row[0]}")
|
|
print(f" activity_id: {row[1]}")
|
|
print(f" activity_name: {row[2]}")
|
|
print(f" coalesce_name: {row[3]}")
|
|
print()
|
|
|
|
cursor.close()
|
|
conn.close()
|