초기 정리: PIT3000 분석 자료 업로드
- 좌표/SQL/API 분석 문서화 - 재현 스크립트와 예시 응답 추가 - 개인정보/원본 실행파일 제외
This commit is contained in:
73
README.md
Normal file
73
README.md
Normal file
@@ -0,0 +1,73 @@
|
||||
# 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 접속정보는 저장소에 넣지 않습니다.
|
||||
Reference in New Issue
Block a user