# medical-data-project
**Repository Path**: qlad/medical-data-project
## Basic Information
- **Project Name**: medical-data-project
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-07-16
- **Last Updated**: 2026-07-16
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 医疗数据平台 (medical-data-project)
[](https://github.com/qlAD/medical-data-project/actions/workflows/ci.yml)
一个端到端的中文医疗数据平台:**爬取 → 转换 → 存储 → 展示**,覆盖疾病及药品、医院数万条数据。面向学术研究。
## 架构
```mermaid
flowchart LR
website["medical-website
Next.js 公开百科站
(疾病/药品/医院 + 登录门禁)"]
pipeline["data-pipeline
Spring Boot 爬虫/API
crawl→sanitize→store → SQLite → REST/图表"]
frontend["data-pipeline-frontend
React 管理后台
(触发爬取/统计/导出)"]
website <-.-> |"抓取 / 数据源"| pipeline
pipeline -- "REST /api/pipeline" --> frontend
```
## 子项目
| 目录 | 技术栈 | 说明 |
|------|--------|------|
| [`data-pipeline/`](./data-pipeline) | Java 21 · Spring Boot 4.1 · jsoup · sqlite-jdbc · POI · JFreeChart | 爬虫 + 清洗 + 统计 + REST API + 图表/导出 |
| [`data-pipeline-frontend/`](./data-pipeline-frontend) | React 19 · Vite 8 · TypeScript · Tailwind 4 | 管线管理后台(触发爬取、看统计图表、导出)|
| [`medical-website/`](./medical-website) | Next.js 16 · React 19 · better-sqlite3 · jose/bcryptjs | 面向公众的疾病百科,含 JWT 登录与内容门禁 |
## 数据流
1. **爬取**:`data-pipeline` 用 jsoup 抓取 `medical-website` 的疾病/药品/医院页(列表并行发现、详情并行抓取,带礼貌延迟与登录认证)。
2. **转换/存储**:清洗并推断标志位后写入 SQLite(`INSERT OR REPLACE`,重跑前先清空以全量替换)。
3. **服务**:REST API 暴露统计(`@Cacheable` 缓存,爬取完成后失效)、JFreeChart 图表 PNG、Excel/CSV 导出。
4. **展示**:管理后台消费 API;公开站从 SQLite 只读渲染,前 3 页公开、更深内容需登录。
## 本地运行
```bash
# 1) 后端 API(:8080)
cd data-pipeline && ./mvnw spring-boot:run
# 2) 管理后台(:5173,代理 /api → :8080)
cd data-pipeline-frontend && npm install && npm run dev
# 3) 公开站(:3000)
cd medical-website && npm install && cp .env.example .env.local && npm run dev
```
各子项目的环境变量、测试与更多细节见其各自的 README。
## 作者
**qlAD** · 大连东软信息学院 · 仅供学术研究使用。