fix: 조제 이력 조회 쿼리 개선 (기존 로직 참고)
- PM_BASE 세션과 PM_PRES 세션 분리 - 1단계: CD_PERSON에서 전화번호로 CUSCODE 조회 (PHONE/TEL_NO/PHONE2) - 2단계: PS_main에서 CUSCODE로 조제 기록 확인
This commit is contained in:
parent
d0e7d6bbd2
commit
c33d857fa6
@ -1858,10 +1858,13 @@ def admin():
|
|||||||
recent_users = []
|
recent_users = []
|
||||||
|
|
||||||
# MSSQL 세션 (조제 이력 확인용)
|
# MSSQL 세션 (조제 이력 확인용)
|
||||||
|
base_session = None
|
||||||
|
pres_session = None
|
||||||
try:
|
try:
|
||||||
mssql_session = db_manager.get_session('PM_PRES')
|
base_session = db_manager.get_session('PM_BASE')
|
||||||
|
pres_session = db_manager.get_session('PM_PRES')
|
||||||
except:
|
except:
|
||||||
mssql_session = None
|
pass
|
||||||
|
|
||||||
for user in recent_users_raw:
|
for user in recent_users_raw:
|
||||||
user_dict = dict(user)
|
user_dict = dict(user)
|
||||||
@ -1870,19 +1873,29 @@ def admin():
|
|||||||
|
|
||||||
# 조제 이력 확인 (MSSQL)
|
# 조제 이력 확인 (MSSQL)
|
||||||
user_dict['has_prescription'] = False
|
user_dict['has_prescription'] = False
|
||||||
if mssql_session and user['phone']:
|
if base_session and pres_session and user['phone']:
|
||||||
try:
|
try:
|
||||||
phone_clean = user['phone'].replace('-', '').replace(' ', '')
|
phone_clean = user['phone'].replace('-', '').replace(' ', '')
|
||||||
pres_check = mssql_session.execute(text("""
|
|
||||||
SELECT TOP 1 p.CusCode
|
# 1단계: PM_BASE에서 전화번호로 CUSCODE 조회
|
||||||
FROM PM_BASE.dbo.CD_PERSON p
|
cuscode_query = text("""
|
||||||
INNER JOIN PS_main ps ON p.CUSCODE = ps.CusCode
|
SELECT TOP 1 CUSCODE
|
||||||
WHERE REPLACE(REPLACE(p.PHONE, '-', ''), ' ', '') = :phone
|
FROM CD_PERSON
|
||||||
OR REPLACE(REPLACE(p.PHONE2, '-', ''), ' ', '') = :phone
|
WHERE REPLACE(REPLACE(PHONE, '-', ''), ' ', '') = :phone
|
||||||
OR REPLACE(REPLACE(p.TEL_NO, '-', ''), ' ', '') = :phone
|
OR REPLACE(REPLACE(TEL_NO, '-', ''), ' ', '') = :phone
|
||||||
"""), {'phone': phone_clean}).fetchone()
|
OR REPLACE(REPLACE(PHONE2, '-', ''), ' ', '') = :phone
|
||||||
if pres_check:
|
""")
|
||||||
user_dict['has_prescription'] = True
|
cus_row = base_session.execute(cuscode_query, {'phone': phone_clean}).fetchone()
|
||||||
|
|
||||||
|
if cus_row:
|
||||||
|
# 2단계: PM_PRES에서 CUSCODE로 조제 기록 확인
|
||||||
|
pres_check = pres_session.execute(text("""
|
||||||
|
SELECT TOP 1 PreSerial FROM PS_main WHERE CusCode = :cuscode
|
||||||
|
"""), {'cuscode': cus_row.CUSCODE}).fetchone()
|
||||||
|
|
||||||
|
if pres_check:
|
||||||
|
user_dict['has_prescription'] = True
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logging.warning(f"조제 이력 확인 실패 (user {user['id']}): {e}")
|
logging.warning(f"조제 이력 확인 실패 (user {user['id']}): {e}")
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user