root 8b4e8f7a0a feat: PMPLUS20(v2) 테이블 매핑 완료 및 쿼리 수정
- config.py: PMPLUS20 서버(192.168.0.201\PMPLUS20) 및 SA 비밀번호 수정
- v2_pmplus20.py: PS_MAIN→TBSID040_03, CD_SUNAB→TBSIR000_01 매핑 적용
  - 컬럼 매핑: PRICE_T→TOT_PRICE, PRICE_C→INS_PRICE, PRICE_P→EXE_PRICE 등
  - Drug_T4 = NON_DRUG_PRICE + EXP_EXE_PRICE
  - Holiday = HD_ADD + PRES_TIME_GUBUN 조합
  - PreGubun = MPRE_TYPE (차상위 F 별도 처리)
  - PRES_GUBUN='E' 재고보정 레코드 제외
- PMPLUS20_MIGRATION_GUIDE.md: 전체 매핑 가이드 문서 추가
- app.py: 포트 5060→5050 변경

20260324 기준 검증: 건수/금액/보험별/결제별 일치 확인
PRICE_N(수납) 2건 차이(23,420원)는 비급여 수납 처리 개선에 의한 정상 차이

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 14:45:31 +00:00

Pharmacy Stats API

QT-POS 통계 다이얼로그 API 버전

구조

pharmacy-stats-api/
├── app.py                      # Flask 메인
├── config.py                   # DB 연결 설정
├── queries/
│   ├── v1_pharmit3000.py      # PharmIT3000 쿼리
│   └── v2_pmplus20.py         # PMPLUS20 쿼리
└── templates/
    └── stats.html             # 비교 UI

API 엔드포인트

v1 - PharmIT3000

Endpoint 설명
/v1/api/stats 전체 통계
/v1/api/stats/insurance 보험별 통계
/v1/api/stats/time 시간가산별 통계
/v1/api/stats/payment 결제수단별 통계
/v1/api/stats/hospital 병원별 통계

v2 - PMPLUS20

동일한 구조의 /v2/api/stats/... 엔드포인트

비교

Endpoint 설명
/api/compare v1 vs v2 비교

쿼리 파라미터

  • from: 시작일 (YYYYMMDD)
  • to: 종료일 (YYYYMMDD)

예: /v1/api/stats?from=20260401&to=20260401

테이블 매핑

역할 PharmIT3000 (v1) PMPLUS20 (v2)
판매 헤더 PM_PRES.PS_MAIN PM_MAIN.TBSIM040_28
판매 상세 PM_PRES.PS_SUB_PHARM PM_MAIN.TBSIM040_29
수납 정보 PM_PRES.CD_SUNAB PM_MAIN.TBSIR000_01
약품 마스터 PM_DRUG.CD_GOODS PM_MAIN.TBSIM040_01

실행

pip install -r requirements.txt
python app.py

서버: http://0.0.0.0:5060

환경변수

PHARMIT_SERVER=192.168.0.4\PM2014
PHARMIT_USER=sa
PHARMIT_PASS=password

PMPLUS_SERVER=192.168.0.4\PM2014
PMPLUS_USER=sa
PMPLUS_PASS=password
Description
QT-POS Stats API
Readme 131 KiB
Languages
Python 69.3%
HTML 30.7%