- patient_query: 대체조제 원본 처방 제외 - rx_query: 대체조제 원본 처방 제외 - PS_Type=9는 대체조제시 원래 처방된 약(조제 안됨) - 기타 배치 스크립트 및 문서 추가
85 lines
3.1 KiB
Python
85 lines
3.1 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""
|
|
확실한 매칭만 일괄 등록
|
|
"""
|
|
import sys, io
|
|
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
|
|
sys.path.insert(0, 'c:\\Users\\청춘약국\\source\\pharmacy-pos-qr-system\\backend')
|
|
|
|
from db.dbsetup import get_db_session
|
|
from sqlalchemy import text
|
|
from datetime import datetime
|
|
|
|
# 확실한 매칭 목록 (MSSQL 제품명, DrugCode, APC)
|
|
MAPPINGS = [
|
|
# 파라캅
|
|
('파라캅L(5kg이상)', 'LB000003159', '0230338510101'), # 파라캅 L 정 10정
|
|
('파라캅S(5kg이하)', 'LB000003160', '0230347110106'), # 파라캅 에스 정 10정
|
|
# 세레니아
|
|
('세레니아정16mg(개멀미약)', 'LB000003353', '0231884610109'), # 세레니아 정 16mg / 4정
|
|
('세레니아정24mg(개멀미약)', 'LB000003354', '0231884620107'), # 세레니아 정 24mg / 4정
|
|
# ── 2차 매칭 (2026-03-08) ──
|
|
# 클라펫 (유일후보)
|
|
('(판)클라펫정50(100정)', 'LB000003504', '0232065900005'), # 클라펫 정
|
|
# 넥스가드 (체중매칭)
|
|
('넥스가드L(15~30kg)', 'LB000003531', '0232155400009'), # 넥스가드 스펙트라 츄어블 정 대형견용
|
|
('넥스가드xs(2~3.5kg)', 'LB000003530', '0232169000004'), # 넥스가드 츄어블 정 소형견용
|
|
# 하트웜 (체중매칭)
|
|
('하트웜솔루션츄어블M(12~22kg)', 'LB000003155', '0230758520105'), # 하트웜 솔루션 츄어블 0.136mg / 114mg / 6 정
|
|
('하트웜솔루션츄어블S(11kg이하)', 'LB000003156', '0230758510107'), # 하트웜 솔루션 츄어블 0.068mg / 57mg / 6 정
|
|
]
|
|
|
|
session = get_db_session('PM_DRUG')
|
|
today = datetime.now().strftime('%Y%m%d')
|
|
|
|
print('=== 일괄 APC 매핑 ===\n')
|
|
|
|
for name, drugcode, apc in MAPPINGS:
|
|
# 기존 가격 조회
|
|
existing = session.execute(text("""
|
|
SELECT TOP 1 CD_MY_UNIT, CD_IN_UNIT
|
|
FROM CD_ITEM_UNIT_MEMBER
|
|
WHERE DRUGCODE = :dc
|
|
ORDER BY SN DESC
|
|
"""), {'dc': drugcode}).fetchone()
|
|
|
|
if not existing:
|
|
print(f'❌ {name}: 기존 레코드 없음')
|
|
continue
|
|
|
|
# 이미 APC 있는지 확인
|
|
check = session.execute(text("""
|
|
SELECT 1 FROM CD_ITEM_UNIT_MEMBER
|
|
WHERE DRUGCODE = :dc AND CD_CD_BARCODE = :apc
|
|
"""), {'dc': drugcode, 'apc': apc}).fetchone()
|
|
|
|
if check:
|
|
print(f'⏭️ {name}: 이미 등록됨')
|
|
continue
|
|
|
|
# INSERT
|
|
try:
|
|
session.execute(text("""
|
|
INSERT INTO CD_ITEM_UNIT_MEMBER (
|
|
DRUGCODE, CD_CD_UNIT, CD_NM_UNIT, CD_MY_UNIT, CD_IN_UNIT,
|
|
CD_CD_BARCODE, CD_CD_POS, CHANGE_DATE
|
|
) VALUES (
|
|
:drugcode, '015', 1.0, :my_unit, :in_unit,
|
|
:barcode, '', :change_date
|
|
)
|
|
"""), {
|
|
'drugcode': drugcode,
|
|
'my_unit': existing.CD_MY_UNIT,
|
|
'in_unit': existing.CD_IN_UNIT,
|
|
'barcode': apc,
|
|
'change_date': today
|
|
})
|
|
session.commit()
|
|
print(f'✅ {name} → {apc}')
|
|
except Exception as e:
|
|
session.rollback()
|
|
print(f'❌ {name}: {e}')
|
|
|
|
session.close()
|
|
print('\n완료!')
|