# 한약 재고관리 시스템 한의원/한약방을 위한 웹 기반 재고관리 및 조제관리 시스템입니다. ## 주요 기능 ### 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 ## 라이선스 이 프로젝트는 교육 및 테스트 목적으로 제작되었습니다. 상업적 사용 시 별도 협의가 필요합니다. ## 문의 기술 지원 및 문의사항은 이슈 트래커를 통해 등록해주세요.