diff --git a/backend/pmr_api.py b/backend/pmr_api.py index 4dbbe37..99e6312 100644 --- a/backend/pmr_api.py +++ b/backend/pmr_api.py @@ -172,36 +172,35 @@ def get_prescription_detail(prescription_id): conn.close() return jsonify({'success': False, 'error': '처방전을 찾을 수 없습니다'}), 404 - # 처방 약품 목록 (PS_sub_pharm 테이블 확인 필요) - cursor.execute(""" - SELECT COLUMN_NAME - FROM INFORMATION_SCHEMA.COLUMNS - WHERE TABLE_NAME = 'PS_sub_pharm' - """) - sub_columns = [row[0] for row in cursor.fetchall()] - - # 약품 목록 조회 + # 처방 약품 목록 (PS_sub_pharm + PM_DRUG.CD_GOODS JOIN) medications = [] - if 'PreSerial' in sub_columns: - cursor.execute(""" - SELECT * - FROM PS_sub_pharm - WHERE PreSerial = ? - ORDER BY 1 - """, (prescription_id,)) - - med_columns = [col[0] for col in cursor.description] - for row in cursor.fetchall(): - med_dict = dict(zip(med_columns, row)) - medications.append({ - 'medication_code': med_dict.get('GoodsCode') or med_dict.get('PCODE') or '', - 'med_name': med_dict.get('GoodsName') or med_dict.get('PNAME') or '', - 'dosage': med_dict.get('Once_Qty') or med_dict.get('POESSION') or 0, - 'frequency': med_dict.get('Times') or med_dict.get('PTIMES') or 0, - 'duration': med_dict.get('Days') or med_dict.get('PDAY') or 0, - 'total_qty': med_dict.get('Total_Qty') or 0, - 'type': med_dict.get('PS_Type', '0') - }) + cursor.execute(""" + SELECT + s.DrugCode, + s.Days, + s.QUAN, + s.QUAN_TIME, + s.PS_Type, + s.INV_QUAN, + g.GoodsName, + g.SUNG_CODE + FROM PS_sub_pharm s + LEFT JOIN PM_DRUG.dbo.CD_GOODS g ON s.DrugCode = g.DrugCode + WHERE s.PreSerial = ? + ORDER BY s.SUB_SERIAL + """, (prescription_id,)) + + for row in cursor.fetchall(): + medications.append({ + 'medication_code': row.DrugCode or '', + 'med_name': row.GoodsName or row.DrugCode or '', + 'dosage': float(row.QUAN) if row.QUAN else 0, + 'frequency': row.QUAN_TIME or 0, + 'duration': row.Days or 0, + 'total_qty': float(row.INV_QUAN) if row.INV_QUAN else 0, + 'type': '급여' if row.PS_Type in ['0', '4'] else '비급여' if row.PS_Type == '1' else row.PS_Type, + 'sung_code': row.SUNG_CODE or '' + }) conn.close()