# qtemr **Repository Path**: rustway/qtemr ## Basic Information - **Project Name**: qtemr - **Description**: 一个使用 Rust 和大语言模型构建的智能医疗质控系统,支持病历结构化处理、质控规则管理和自动化质量检查。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-09-09 - **Last Updated**: 2026-01-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # QTEMR - 基于大模型的医疗质控系统 一个使用 Rust 和大语言模型构建的智能医疗质控系统,支持病历结构化处理、质控规则管理和自动化质量检查。 ## 🚀 功能特性 ### 核心功能 - **病历结构化处理**: 将原始病历文本转换为标准化的JSON-LD格式 - **智能质控检查**: 基于大模型的自动化医疗质量控制 - **规则管理系统**: 支持质控规则的CRUD操作、版本管理和分类 - **批量处理**: 高效的并发处理能力,支持大规模数据处理 - **结果存储**: 完整的质控结果存储、查询和统计分析 ### 技术特性 - **异步架构**: 基于 Tokio 的高性能异步处理 - **类型安全**: 充分利用 Rust 的类型系统保证内存和线程安全 - **模块化设计**: 清晰的模块划分,易于维护和扩展 - **错误处理**: 完善的错误处理和重试机制 - **配置管理**: 灵活的配置系统,支持环境变量覆盖 - **日志记录**: 结构化日志,支持多种输出格式 ## 📋 系统要求 - Rust 1.70+ - SQLite 3.35+ - 大语言模型 API 访问权限(支持 OpenAI、Claude 等) ## 🛠️ 安装和配置 ### 1. 克隆项目 ```bash git clone cd qtemr ``` ### 2. 安装依赖 ```bash cargo build --release ``` ### 3. 配置系统 创建配置文件 `config.toml`: ```toml [database] url = "sqlite:./data/qtemr.db" max_connections = 10 connection_timeout = 30 enable_migration = true idle_timeout = 600 enable_wal = true [llm] provider = "openai" base_url = "https://api.openai.com/v1" api_key = "your-api-key-here" default_model = "gpt-4" timeout = 60 max_retries = 3 retry_delay = 1000 temperature = 0.1 max_tokens = 4096 max_concurrent_requests = 5 rate_limit_per_minute = 60 [server] host = "127.0.0.1" port = 8080 workers = 4 request_timeout = 30 max_request_size = 10485760 [logging] level = "info" file_path = "./logs/qtemr.log" console = true format = "json" max_file_size_mb = 100 max_files = 10 structured = true [quality_control] concurrent_checks = 4 cache_duration = 3600 enable_batch_processing = true batch_size = 50 confidence_threshold = 0.8 [retry] max_attempts = 3 initial_delay_ms = 1000 max_delay_ms = 30000 backoff_multiplier = 2.0 jitter_factor = 0.1 [cache] enabled = true max_entries = 10000 ttl_seconds = 3600 cleanup_interval_seconds = 300 ``` ### 4. 初始化数据库 ```bash cargo run -- init ``` ## 🎯 使用方法 ### CLI 命令行界面 #### 基本命令 ```bash # 查看帮助 cargo run -- --help # 初始化系统 cargo run -- init # 查看系统状态 cargo run -- status ``` #### 病历管理 ```bash # 添加病历 cargo run -- record add --file ./examples/record.txt # 列出病历 cargo run -- record list # 查看病历详情 cargo run -- record show # 删除病历 cargo run -- record delete # 处理原始文本 cargo run -- record process --text "患者张三,男,45岁..." ``` #### 质控规则管理 ```bash # 添加规则 cargo run -- rule add --file ./examples/rule.json # 列出规则 cargo run -- rule list # 查看规则详情 cargo run -- rule show # 更新规则 cargo run -- rule update --file ./examples/updated_rule.json # 删除规则 cargo run -- rule delete # 启用/禁用规则 cargo run -- rule toggle ``` #### 质控检查 ```bash # 单个病历检查 cargo run -- check single --record --rule # 批量检查 cargo run -- check batch --records --concurrency 4 # 重试失败的检查 cargo run -- check retry --max-attempts 3 ``` #### 结果查询 ```bash # 查看结果 cargo run -- result list --record # 查看结果详情 cargo run -- result show # 获取统计信息 cargo run -- result stats --start-date 2024-01-01 --end-date 2024-12-31 ``` ### Web API 接口 #### 启动 API 服务器 ```bash cargo run -- server --port 8080 --host 127.0.0.1 ``` #### API 端点 **健康检查** ```bash GET /health GET /status ``` **病历管理** ```bash GET /records # 列出病历 POST /records # 创建病历 GET /records/{id} # 获取病历 DELETE /records/{id} # 删除病历 POST /records/process # 处理原始文本 ``` **规则管理** ```bash GET /rules # 列出规则 POST /rules # 创建规则 GET /rules/{id} # 获取规则 PUT /rules/{id} # 更新规则 DELETE /rules/{id} # 删除规则 POST /rules/{id}/toggle # 切换规则状态 ``` **质控检查** ```bash POST /check/single # 单个检查 POST /check/batch # 批量检查 POST /check/retry # 重试失败检查 ``` **结果查询** ```bash GET /results # 列出结果 GET /results/{id} # 获取结果 GET /results/stats # 获取统计信息 ``` ## 🏗️ 项目结构 ``` qtemr/ ├── src/ │ ├── main.rs # 程序入口 │ ├── lib.rs # 库入口 │ ├── api.rs # Web API 模块 │ ├── cli.rs # CLI 界面模块 │ ├── config.rs # 配置管理 │ ├── database.rs # 数据库管理 │ ├── engine.rs # 质控引擎 │ ├── error.rs # 错误处理 │ ├── llm.rs # 大模型接口 │ ├── logging.rs # 日志记录 │ ├── processor.rs # 病历处理器 │ ├── rule_manager.rs # 规则管理 │ ├── storage.rs # 结果存储 │ └── models/ # 数据模型 │ ├── mod.rs │ ├── medical_record.rs │ ├── quality_rule.rs │ └── quality_result.rs ├── tests/ │ ├── integration_tests.rs # 集成测试 │ └── unit_tests.rs # 单元测试 ├── examples/ # 示例文件 ├── docs/ # 文档 ├── Cargo.toml # 项目配置 └── README.md # 项目说明 ``` ## 🧪 测试 ### 运行测试 ```bash # 运行所有测试 cargo test # 运行单元测试 cargo test --lib # 运行集成测试 cargo test --test integration_tests # 运行特定测试 cargo test test_medical_record_crud ``` ### 性能测试 ```bash # 运行性能测试(需要 --release 模式) cargo test --release -- --ignored performance ``` ## 📊 性能特性 - **并发处理**: 支持多线程并发处理,可配置并发数 - **批量操作**: 优化的批量处理算法,提高大数据量处理效率 - **缓存机制**: 智能缓存策略,减少重复计算和API调用 - **连接池**: 数据库连接池管理,优化资源使用 - **异步I/O**: 全异步架构,最大化I/O性能 ## 🔧 开发指南 ### 代码规范 - 遵循 Rust 官方代码规范 - 使用 `cargo fmt` 格式化代码 - 使用 `cargo clippy` 进行代码检查 - 编写完整的文档注释 ### 贡献指南 1. Fork 项目 2. 创建功能分支 3. 编写测试 4. 提交代码 5. 创建 Pull Request ## 📝 许可证 本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。 ## 🤝 支持 如果您遇到问题或有建议,请: - 提交 Issue - 发送邮件至 support@example.com - 查看文档 [docs/](docs/) ## 🎉 致谢 感谢所有贡献者和开源社区的支持! --- **QTEMR** - 让医疗质控更智能、更高效!