74 lines
3.0 KiB
Markdown
74 lines
3.0 KiB
Markdown
# PIT3000 인쇄/영수증 Reverse Engineering Notes
|
|
|
|
PIT3000/PM2000V6의 약제비 A4 출력물과 관련된 **QuickReport/FastReport 객체 좌표, SQL 필드 매핑, 샘플 렌더러**를 정리한 저장소입니다.
|
|
|
|
## 핵심 결론
|
|
|
|
| 출력물/서식 | 엔진 | 확인 내용 |
|
|
|---|---|---|
|
|
| 약제비 계산서·영수증 | **QuickReport** (`TQRLabel`, `TQRShape`, `TQRBand`, `TQRDBText`) | PM_MAIN 쪽 QuickReport 객체가 실제 A4 영수증 본체에 가장 근접 |
|
|
| 진료비(약제비) 납입 확인서 | **QuickReport** | PM_PharmCharge/PM_MAIN 내부 QuickReport blob에 존재 |
|
|
| `frx_presprint` | FastReport (`TfrxReport`) | 제목이 `판매 내역서`; A4 약제비 영수증 본체가 아님 |
|
|
| `frxTeoul_A4_*` | FastReport | 터울/약봉투 계열로 분리해서 봐야 함 |
|
|
|
|
> 주의: `SUNG_CODE`는 성분코드입니다. 보험코드로 취급하면 안 됩니다.
|
|
|
|
## 포함 자료
|
|
|
|
- `data/quickreport/quickreport_receipt_canonical_top.csv`
|
|
QuickReport A4 후보 객체 좌표/라벨/데이터셋 필드.
|
|
- `data/quickreport/quickreport_receipt_summary.md`
|
|
QuickReport 후보 요약.
|
|
- `data/fastreport/frx_presprint_objects_canonical.csv`
|
|
FastReport `frx_presprint` 판매내역서 객체.
|
|
- `sql/a4_receipt_amount_query.md`
|
|
A4 영수증/납입확인서 금액 필드와 추정 SQL 흐름.
|
|
- `scripts/render_a4_receipt_pm_main.py`
|
|
PM_MAIN QuickReport 약제비 계산서·영수증 좌표 기반 샘플 렌더러.
|
|
- `scripts/render_a4_quickreport_receipt.py`
|
|
PM_PharmCharge QuickReport 납입확인서/영수증 후보 렌더러.
|
|
- `examples/rendered/`
|
|
실제 SQL 샘플 필드 매핑으로 만든 PDF/PNG 결과.
|
|
|
|
## 빠른 실행
|
|
|
|
```bash
|
|
python3 -m venv .venv
|
|
. .venv/bin/activate
|
|
pip install reportlab pymupdf
|
|
python scripts/render_a4_receipt_pm_main.py
|
|
```
|
|
|
|
결과는 `out/` 또는 스크립트 내부 `examples/rendered/` 경로로 생성하도록 조정해서 사용하면 됩니다.
|
|
|
|
## 현재 매핑 상태
|
|
|
|
`PM_BASE..CD_SELL_MASTE` 계열에서 확보된 샘플 필드:
|
|
|
|
```text
|
|
CUSCODE, PRESERIAL, PREPASS, INDATE, PANAME, PANUM,
|
|
TOT_C, CHUNG_C, BON_C, CARD_C, CHASH_C, PAPER_C, BI_PRICE, BI_CNT
|
|
```
|
|
|
|
대표 매핑:
|
|
|
|
| QuickReport 객체 | SQL/계산 필드 | 의미 |
|
|
|---|---|---|
|
|
| `Q_PreSerial` | `PRESERIAL` | 영수증번호/처방 serial |
|
|
| `Q_paname` | `PANAME` | 환자명 |
|
|
| `Q_InDate` | `INDATE` | 조제일자 |
|
|
| `Q_Price_A` | `TOT_C` | 약제비 총액 |
|
|
| `Q_Price_p` | `BON_C` | 본인부담금 |
|
|
| `Q_Price_c` | `CHUNG_C` | 보험자부담금 |
|
|
| `Q_s_FastMon` | `BI_PRICE` | 비급여/전액본인부담 계열 |
|
|
| `Q_CardPrice` | `CARD_C` | 카드 결제액 |
|
|
| `Q_CashPrint` | `PAPER_C` | 현금영수증/지류 계열 |
|
|
| `Q_Chah` | `CHASH_C` | 현금 계열 |
|
|
| `Q_PersonNum` | `PANUM` | 주민번호/식별번호, 반드시 마스킹 |
|
|
|
|
## 보안/개인정보
|
|
|
|
- 원본 EXE, DB dump, 원본 환자명/주민번호는 포함하지 않습니다.
|
|
- 샘플 산출물의 환자명은 더미값/마스킹값으로 치환했습니다.
|
|
- 실제 운영 DB 접속정보는 저장소에 넣지 않습니다.
|