5.4 KiB
5.4 KiB
데이터베이스 구조 (2025-06-30 정리)
개요
양구청춘약국 시스템은 3개의 데이터베이스를 사용합니다:
| DB | 용도 | 위치 |
|---|---|---|
| MSSQL (PM_DRUG) | POS 제품/재고/판매 | localhost (팜IT3000) |
| MSSQL (PM_PRES) | 처방전/조제 | localhost (팜IT3000) |
| PostgreSQL | 동물약 상세 정보 (RAG) | 192.168.0.87:5432 |
| SQLite | 마일리지 시스템 | backend/db/mileage.db |
MSSQL 테이블 구조 (PM_DRUG)
핵심 테이블 관계
┌─────────────────────────────────────────────────────────────┐
│ CD_GOODS (제품 마스터) - 178,182개 │
│ └── DrugCode (PK): LB000003157 │
│ │ │
│ ┌─────────┴─────────────┬──────────────────────────┐ │
│ ▼ ▼ ▼ │
│ CD_SALEGOODS CD_ITEM_UNIT_MEMBER CD_BARCODE│
│ (대표 바코드) (바코드 N개) ★ (인체용) │
│ 3,053개 N:1 관계 306,565개│
└─────────────────────────────────────────────────────────────┘
CD_GOODS (제품 마스터)
팜IT3000 전체 제품 DB. 약국이 개별 등록한 제품은 LB, S로 시작.
| 컬럼 | 타입 | 설명 |
|---|---|---|
| DrugCode | nvarchar | PK. LB000003157 (약국등록), 050000010 (표준) |
| GoodsName | nvarchar | 제품명 |
| Saleprice | decimal | 판매가 |
| BARCODE | nvarchar | (보통 비어있음 - CD_SALEGOODS 사용) |
| POS_BOON | nvarchar | 분류코드. 010103 = 동물약 |
| GoodsSelCode | nvarchar | B = 판매용 |
CD_SALEGOODS (판매용 제품)
약국에서 실제 판매하는 제품. 대표 바코드 1개 저장.
| 컬럼 | 타입 | 설명 |
|---|---|---|
| DrugCode | nvarchar | FK → CD_GOODS |
| GoodsName | nvarchar | 제품명 |
| BARCODE | nvarchar | 대표 바코드 (자체생성: 999000000xxxx) |
| SplCode | nvarchar | 공급처 코드 |
| SplName | nvarchar | 공급처명 |
CD_ITEM_UNIT_MEMBER (바코드 N개) ★
한 제품에 여러 바코드 저장. APC 코드는 여기에 저장됨!
| 컬럼 | 타입 | 설명 |
|---|---|---|
| DRUGCODE | nvarchar | FK → CD_GOODS.DrugCode |
| CD_CD_BARCODE | nvarchar | 바코드 (APC: 0230237810109) |
| CD_CD_UNIT | nvarchar | 단위코드 (13, 015 등) |
| CD_MY_UNIT | decimal | 판매가 |
| CD_IN_UNIT | decimal | 입고가 |
| CHANGE_DATE | nvarchar | 변경일 (YYYYMMDD) |
| SN | bigint | 일련번호 |
CD_BARCODE (인체용 표준)
식약처 인체용 의약품 표준 바코드. 동물약은 없음!
| 컬럼 | 타입 | 설명 |
|---|---|---|
| DRUGCODE | nvarchar | 제품코드 |
| BARCODE | nvarchar | 표준 바코드 |
| BASECODE | nvarchar | 표준코드 |
| ETCNAME | nvarchar | 제품명 |
| CL_GUBUN | nvarchar | 구분 (전문의약품 등) |
PostgreSQL 구조 (apdb_master)
동물약품 상세 정보. 농림축산검역본부 데이터 + LLM 가공.
apc 테이블 (핵심)
| 컬럼 | 타입 | 설명 |
|---|---|---|
| apc | varchar | PK. 0230237810109 |
| product_name | varchar | 제품명 |
| company_name | varchar | 제조사 |
| main_ingredient | varchar | 주성분 |
| efficacy_effect | text | 효능/효과 (HTML) |
| dosage_instructions | text | 용법/용량 (HTML) |
| precautions | text | 주의사항 (HTML) |
| llm_pharm | jsonb | LLM 가공 정보 ★ |
| image_url1 | varchar | 앞면 이미지 |
| image_url2 | varchar | 뒷면 이미지 |
| weight_min_kg | float | 최소 체중 |
| weight_max_kg | float | 최대 체중 |
llm_pharm JSON 구조 (핵심!)
{
"사용가능 동물": "개, 고양이",
"분류": "내부구충제",
"성분1": "메벤다졸",
"성분2": "프라지콴텔",
"체중/부위": "체중 5~9kg: 1정, 10~19kg: 2정...",
"기간/용법": "1일 1회, 1~2일간 경구투여",
"월령금기": "생후 1주 미만 사용 금지",
"반려인주의": "사람이 복용 시 즉시 의사의 조치 필요",
"앞이미지": "https://...",
"뒤이미지": "https://..."
}
바코드 체계
| 패턴 | 설명 | 예시 |
|---|---|---|
023xxxxxxxx |
APC (동물약 표준) | 0230237810109 |
999000000xxxx |
약국 자체 생성 | 9990000001134 |
880xxxxxxxxx |
일반 GS1 바코드 | 8809989000009 |
연결 예시
안텔민킹(5kg이상) 조회:
-- MSSQL: 바코드 조회
SELECT CD_CD_BARCODE
FROM CD_ITEM_UNIT_MEMBER
WHERE DRUGCODE = 'LB000003157'
AND CD_CD_BARCODE LIKE '023%';
-- → 0230237810109
-- PostgreSQL: 상세 정보 조회
SELECT llm_pharm->>'사용가능 동물', efficacy_effect
FROM apc
WHERE apc = '0230237810109';
-- → 개, 고양이
이미지 URL 규칙
https://ani.0bin.in/img/{APC}_F.jpg # 앞면
https://ani.0bin.in/img/{APC}_B.jpg # 뒷면
https://ani.0bin.in/img/{APC}_D.jpg # 상세
예: https://ani.0bin.in/img/0230237810109_F.jpg