feat: PMR 효능효과(add_info) 추가
- CD_MC.PRINT_TYPE JOIN으로 효능 조회 - 약품 테이블에 효능 표시 - 라벨 미리보기에 효능 포함
This commit is contained in:
@@ -176,7 +176,7 @@ def get_prescription_detail(prescription_id):
|
||||
conn.close()
|
||||
return jsonify({'success': False, 'error': '처방전을 찾을 수 없습니다'}), 404
|
||||
|
||||
# 처방 약품 목록 (PS_sub_pharm + PM_DRUG.CD_GOODS JOIN)
|
||||
# 처방 약품 목록 (PS_sub_pharm + CD_GOODS + CD_MC JOIN)
|
||||
medications = []
|
||||
cursor.execute("""
|
||||
SELECT
|
||||
@@ -187,17 +187,24 @@ def get_prescription_detail(prescription_id):
|
||||
s.PS_Type,
|
||||
s.INV_QUAN,
|
||||
g.GoodsName,
|
||||
g.SUNG_CODE
|
||||
g.SUNG_CODE,
|
||||
m.PRINT_TYPE,
|
||||
m.SIM_EFFECT
|
||||
FROM PS_sub_pharm s
|
||||
LEFT JOIN PM_DRUG.dbo.CD_GOODS g ON s.DrugCode = g.DrugCode
|
||||
LEFT JOIN PM_DRUG.dbo.CD_MC m ON s.DrugCode = m.DRUGCODE
|
||||
WHERE s.PreSerial = ?
|
||||
ORDER BY s.SUB_SERIAL
|
||||
""", (prescription_id,))
|
||||
|
||||
for row in cursor.fetchall():
|
||||
# 효능: PRINT_TYPE > SIM_EFFECT > 없음
|
||||
add_info = row.PRINT_TYPE or row.SIM_EFFECT or ''
|
||||
|
||||
medications.append({
|
||||
'medication_code': row.DrugCode or '',
|
||||
'med_name': row.GoodsName or row.DrugCode or '',
|
||||
'add_info': add_info,
|
||||
'dosage': float(row.QUAN) if row.QUAN else 0,
|
||||
'frequency': row.QUAN_TIME or 0,
|
||||
'duration': row.Days or 0,
|
||||
@@ -346,6 +353,7 @@ def preview_label():
|
||||
|
||||
patient_name = data.get('patient_name', '')
|
||||
med_name = data.get('med_name', '')
|
||||
add_info = data.get('add_info', '')
|
||||
dosage = float(data.get('dosage', 0))
|
||||
frequency = int(data.get('frequency', 0))
|
||||
duration = int(data.get('duration', 0))
|
||||
@@ -355,6 +363,7 @@ def preview_label():
|
||||
image = create_label_image(
|
||||
patient_name=patient_name,
|
||||
med_name=med_name,
|
||||
add_info=add_info,
|
||||
dosage=dosage,
|
||||
frequency=frequency,
|
||||
duration=duration,
|
||||
@@ -377,7 +386,7 @@ def preview_label():
|
||||
return jsonify({'success': False, 'error': str(e)}), 500
|
||||
|
||||
|
||||
def create_label_image(patient_name, med_name, dosage, frequency, duration, unit='정'):
|
||||
def create_label_image(patient_name, med_name, add_info='', dosage=0, frequency=0, duration=0, unit='정'):
|
||||
"""
|
||||
라벨 이미지 생성 (29mm 용지 기준)
|
||||
"""
|
||||
@@ -442,19 +451,17 @@ def create_label_image(patient_name, med_name, dosage, frequency, duration, unit
|
||||
# 괄호 앞에서 분리
|
||||
if '(' in med_name:
|
||||
main_name = med_name.split('(')[0].strip()
|
||||
sub_info = '(' + med_name.split('(', 1)[1] if '(' in med_name else ''
|
||||
else:
|
||||
main_name = med_name
|
||||
sub_info = ''
|
||||
|
||||
# 약품명 줄바꿈
|
||||
name_lines = wrap_text(main_name, drug_font, label_width - 30)
|
||||
for line in name_lines:
|
||||
y = draw_centered(line, y, drug_font)
|
||||
|
||||
# 부가정보
|
||||
if sub_info:
|
||||
y = draw_centered(sub_info, y, small_font, fill="gray")
|
||||
# 효능효과 (add_info)
|
||||
if add_info:
|
||||
y = draw_centered(f"({add_info})", y, small_font, fill="gray")
|
||||
|
||||
y += 5
|
||||
|
||||
|
||||
Reference in New Issue
Block a user