- database_schema.md: 전체 테이블 구조 상세 설명 - 27개 테이블의 컬럼 정의 및 설명 - 테이블 간 관계 설명 - 주요 비즈니스 규칙 문서화 - database_erd.md: ER 다이어그램 및 데이터 플로우 - Mermaid 다이어그램으로 시각화 - 재고 흐름도, 처방-조제 흐름 설명 - 인덱스 전략 및 데이터 무결성 규칙 - api_documentation.md: REST API 상세 명세 - 약재, 처방, 조제, 재고, 환자 관리 API - 요청/응답 형식 예시 - 에러 처리 방식 - README 업데이트: 문서 링크 추가 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
214 lines
6.8 KiB
Markdown
214 lines
6.8 KiB
Markdown
# 한약 재고관리 시스템
|
|
|
|
한의원/한약방을 위한 웹 기반 재고관리 및 조제관리 시스템입니다.
|
|
|
|
## 주요 기능
|
|
|
|
### 1. 환자 관리
|
|
- 환자 등록 (이름, 전화번호, 주민번호, 성별, 생년월일)
|
|
- 환자 검색 및 조회
|
|
- 환자별 조제 이력 관리
|
|
|
|
### 2. 입고 관리
|
|
- Excel 파일을 통한 대량 입고 처리
|
|
- 도매상별 입고 관리
|
|
- 로트별 재고 추적 (원산지, 입고일, 단가 등)
|
|
|
|
### 3. 처방 관리 (약속 처방)
|
|
- 자주 사용하는 처방 템플릿 등록
|
|
- 처방별 구성 약재 및 용량 설정
|
|
- 처방 재사용 및 가감 기능
|
|
|
|
### 4. 조제 관리
|
|
- 처방 선택 후 즉시 조제
|
|
- 약재 가감 기능
|
|
- FIFO 방식 재고 차감
|
|
- 조제 원가 자동 계산
|
|
|
|
### 5. 재고 현황
|
|
- 실시간 재고 조회
|
|
- 약재별 재고 수량 및 금액
|
|
- 로트별 상세 재고 현황
|
|
|
|
## 시스템 아키텍처
|
|
|
|
```
|
|
┌─────────────────────────────────────────┐
|
|
│ 웹 브라우저 (클라이언트) │
|
|
│ HTML + Bootstrap + jQuery │
|
|
└──────────────────┬──────────────────────┘
|
|
│ HTTP/AJAX
|
|
│
|
|
┌──────────────────▼──────────────────────┐
|
|
│ Flask 웹 서버 (Backend) │
|
|
│ REST API + 템플릿 렌더링 │
|
|
└──────────────────┬──────────────────────┘
|
|
│
|
|
┌──────────────────▼──────────────────────┐
|
|
│ SQLite Database │
|
|
│ (재고, 환자, 처방, 조제 데이터) │
|
|
└─────────────────────────────────────────┘
|
|
```
|
|
|
|
## 데이터베이스 구조
|
|
|
|
### 핵심 테이블
|
|
- `herb_masters` - 약재 마스터 (성분코드 기준, 454개 표준 약재)
|
|
- `herb_items` - 약재 제품 (제조사별 개별 제품)
|
|
- `patients` - 환자 정보
|
|
- `suppliers` - 도매상 정보
|
|
- `purchase_receipts` - 입고장 헤더
|
|
- `purchase_receipt_lines` - 입고장 상세
|
|
- `inventory_lots` - 로트별 재고
|
|
- `formulas` - 처방 마스터
|
|
- `formula_ingredients` - 처방 구성 약재 (ingredient_code 기반)
|
|
- `compounds` - 조제 작업
|
|
- `compound_consumptions` - 로트별 차감 내역
|
|
- `stock_ledger` - 재고 원장 (모든 변동 기록)
|
|
|
|
### 핵심 개념
|
|
- **성분코드 (ingredient_code)**: 표준 약재 식별자
|
|
- **2단계 약재 체계**: 마스터(성분) → 제품(제조사별)
|
|
- **1제 = 20첩 = 30파우치** (기본값, 조정 가능)
|
|
- **로트 관리**: 입고 시점별로 재고를 구분 관리
|
|
- **FIFO 차감**: 오래된 재고부터 우선 사용
|
|
- **원가 추적**: 로트별 단가 기준 정확한 원가 계산
|
|
|
|
## 📚 문서
|
|
|
|
- [데이터베이스 스키마](docs/database_schema.md) - 전체 테이블 구조 상세 설명
|
|
- [ER 다이어그램](docs/database_erd.md) - 엔티티 관계도 및 데이터 플로우
|
|
- [API 문서](docs/api_documentation.md) - REST API 엔드포인트 상세 명세
|
|
|
|
## 설치 방법
|
|
|
|
### 1. 필수 요구사항
|
|
- Python 3.8 이상
|
|
- pip (Python 패키지 관리자)
|
|
|
|
### 2. 설치 과정
|
|
|
|
```bash
|
|
# 1. 프로젝트 클론 또는 다운로드
|
|
cd kdrug
|
|
|
|
# 2. 가상환경 생성 및 활성화
|
|
python3 -m venv venv
|
|
source venv/bin/activate # Windows: venv\Scripts\activate
|
|
|
|
# 3. 필요 패키지 설치
|
|
pip install flask flask-cors pandas openpyxl
|
|
|
|
# 4. 서버 실행
|
|
python app.py
|
|
```
|
|
|
|
### 3. 웹 브라우저에서 접속
|
|
```
|
|
http://localhost:5001
|
|
```
|
|
|
|
## 사용 방법
|
|
|
|
### 1. 초기 설정
|
|
1. 시스템 실행 후 웹 브라우저로 접속
|
|
2. 약재 마스터 데이터 준비 (Excel 업로드로 자동 생성 가능)
|
|
|
|
### 2. Excel 입고장 업로드
|
|
Excel 파일 형식 (필수 컬럼):
|
|
- 제품코드 (보험코드 9자리)
|
|
- 업체명
|
|
- 약재명
|
|
- 구입일자 (YYYYMMDD)
|
|
- 구입량 (그램 단위)
|
|
- 구입액 (원)
|
|
- 원산지
|
|
|
|
### 3. 환자 등록
|
|
1. 좌측 메뉴에서 "환자 관리" 클릭
|
|
2. "새 환자 등록" 버튼 클릭
|
|
3. 필수 정보 입력 (이름, 전화번호)
|
|
4. 선택 정보 입력 (주민번호, 성별, 생년월일 등)
|
|
|
|
### 4. 처방 등록 (약속 처방)
|
|
1. 좌측 메뉴에서 "처방 관리" 클릭
|
|
2. "새 처방 등록" 버튼 클릭
|
|
3. 처방명 입력 (예: 쌍화탕, 보중익기탕 등)
|
|
4. 구성 약재 추가
|
|
- 약재 선택
|
|
- 1첩당 용량(g) 입력
|
|
5. 저장
|
|
|
|
### 5. 조제 실행
|
|
1. 좌측 메뉴에서 "조제 관리" 클릭
|
|
2. "새 조제" 버튼 클릭
|
|
3. 환자 선택
|
|
4. 처방 선택 (등록된 처방 템플릿)
|
|
5. 제수 입력 (기본 1제)
|
|
6. 약재 가감 (필요시)
|
|
- 용량 조정
|
|
- 약재 추가/삭제
|
|
7. "조제 실행" 클릭
|
|
8. 자동으로 재고 차감 및 원가 계산
|
|
|
|
### 6. 재고 확인
|
|
1. 좌측 메뉴에서 "재고 현황" 클릭
|
|
2. 약재명으로 검색 가능
|
|
3. 현재 재고량, 로트 수, 평균 단가, 재고 금액 확인
|
|
|
|
## 시스템 특징
|
|
|
|
### 장점
|
|
- **간편한 Excel 업로드**: 기존 Excel 입고장을 그대로 활용
|
|
- **약속 처방 기능**: 자주 사용하는 처방을 템플릿으로 저장
|
|
- **가감 기능**: 처방 기본 구성에서 유연한 조정 가능
|
|
- **정확한 원가 계산**: 로트별 단가 추적으로 정확한 원가 산출
|
|
- **FIFO 재고 관리**: 선입선출 원칙 자동 적용
|
|
- **웹 기반**: 별도 설치 없이 브라우저에서 사용
|
|
|
|
### 보안 고려사항
|
|
- 주민번호 등 민감 정보는 암호화 필요 (프로덕션 환경)
|
|
- 사용자 인증/권한 관리 기능 추가 필요
|
|
- HTTPS 적용 권장
|
|
|
|
## 향후 개발 계획
|
|
|
|
1. **보험 청구 연동**
|
|
- 건강보험 첩약 코드 완벽 지원
|
|
- 청구 자료 자동 생성
|
|
|
|
2. **고급 리포트**
|
|
- 월별/분기별 매출 분석
|
|
- 약재별 사용량 통계
|
|
- 환자별 처방 이력
|
|
|
|
3. **모바일 지원**
|
|
- 반응형 웹 디자인
|
|
- 모바일 앱 개발
|
|
|
|
4. **재고 알림**
|
|
- 최소 재고 수준 설정
|
|
- 재고 부족 알림
|
|
- 유효기간 임박 알림
|
|
|
|
5. **다중 사용자**
|
|
- 사용자 계정 관리
|
|
- 권한별 접근 제어
|
|
- 작업 이력 추적
|
|
|
|
## 기술 스택
|
|
|
|
- **Backend**: Flask 3.1.2 (Python Web Framework)
|
|
- **Database**: SQLite (경량 관계형 데이터베이스)
|
|
- **Frontend**: Bootstrap 5.1.3 + jQuery 3.6.0
|
|
- **Excel 처리**: pandas + openpyxl
|
|
- **API**: RESTful JSON API
|
|
|
|
## 라이선스
|
|
|
|
이 프로젝트는 교육 및 테스트 목적으로 제작되었습니다.
|
|
상업적 사용 시 별도 협의가 필요합니다.
|
|
|
|
## 문의
|
|
|
|
기술 지원 및 문의사항은 이슈 트래커를 통해 등록해주세요. |