# Caresy-api **Repository Path**: java-and-net/caresy-api ## Basic Information - **Project Name**: Caresy-api - **Description**: MIT | 一款基于.NET 10框架的开源HIS(医院综合管理)系统-后端,代号【Caresy】,采用MIT开源协议 - **Primary Language**: C# - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-02 - **Last Updated**: 2026-06-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: dotNET, Csharp, his, hospital ## README # EOM.Caresy - 医院信息系统 (Hospital Information System) 基于 **.NET 10 WebAPI** 的完整院内 EOM.Caresy 系统后端,覆盖门诊、住院、药房、检验、影像、手术、财务、病案等 24 个功能模块,**99 个实体、106 个 API 控制器**,开箱即用。 ## 🏗️ 技术栈 | 技术 | 版本 | 说明 | |------|------|------| | .NET | 10 | 目标框架 `net10.0` | | ASP.NET Core WebAPI | 10 | RESTful API | | Entity Framework Core | 10 | Code-First + Fluent API | | PostgreSQL | — | 默认数据库,可切换 SQL Server / MySQL / SQLite | | JWT Bearer Token | — | 无状态认证 | | Swagger / Swashbuckle | — | 自动生成 API 文档 | ## 📦 项目结构 ``` Caresy/ ├── Caresy.sln ├── src/ │ ├── Caresy.Domain/ # 领域层:实体(99个)+ 接口(IRepository / IUnitOfWork / IPasswordHasher) │ ├── Caresy.Application/ # 应用层:Service 接口(112个)+ 实现(99个),按模块分组 │ ├── Caresy.Contract/ # 契约层:DTO(55个文件),按模块分组 │ ├── Caresy.Infrastructure/ # 基础设施层:EF Core DbContext + Repository + UnitOfWork + SeedData │ └── Caresy.WebAPI/ # 表现层:Controller(106个)+ 中间件 + 过滤器 + 扩展方法 ├── Dockerfile ├── docker-compose.yml ├── .gitignore ├── .dockerignore └── README.md ``` ## 🏛️ 分层架构 ``` ┌──────────────────────────────────────────────────────────────────────┐ │ WebAPI (Controller + 中间件 + Swagger) │ │ ↓ 注入 Service │ │ Application (Service 业务逻辑) │ │ ↓ 注入 Repository (via IUnitOfWork) │ │ Infrastructure (EF Core + Repository 实现) │ │ ↓ 实现接口 │ │ Domain (实体 + 接口定义) │ │ │ │ Contract (DTO 数据传输对象,被 Application / WebAPI 共同引用) │ └──────────────────────────────────────────────────────────────────────┘ ``` **关键设计:** - `IRepository` 泛型仓储,支持 `Include` 关联查询 - `IUnitOfWork` 统一管理 99 个实体仓储 + 事务管理(Begin/Commit/Rollback) - `PagedRequest` / `PagedResult` 通用分页 - `ApiResult` 统一响应格式 - 库存实体(Medicine / WarehouseStock / MaterialStock)支持 `RowVersion` 乐观并发 --- ## 📋 功能模块总览(24 个模块,99 个实体) ### 1. 认证中心 `Auth` | 实体 | 说明 | |------|------| | User | 用户账号(用户名/密码/工号/手机/邮箱/头像) | | UserRole | 用户-角色关联 | **能力:** JWT 登录、Token 刷新、密码修改、当前用户信息 --- ### 2. 系统管理 `System` | 实体 | 说明 | |------|------| | Institution | 机构信息(医院名称/地址/电话/等级) | | SystemConfig | 系统参数配置(分组 + 键值对) | | DictionaryType | 字典分类(60 种类型) | | DictionaryItem | 字典项(213 个编码-名称映射) | | Department | 科室维护 | | AuditLog | 审计日志(自动记录所有写操作) | | Registration | 门诊挂号 | | Appointment | 预约管理 | | Bill | 门诊账单 | | BillItem | 账单明细 | | Admission | 住院登记 | | Ward | 病房管理 | | Bed | 床位管理 | | StockLog | 库存操作日志 | | DrugPriceLog | 药品价格变更日志 | **能力:** 字典表维护(替代所有硬编码中文值)、机构配置、全局审计日志自动记录 --- ### 3. 权限管理 `Permission` | 实体 | 说明 | |------|------| | Menu | 菜单(树形,支持目录/菜单/按钮三种类型) | | Role | 角色管理 | | RoleMenu | 角色-菜单权限分配 | | DepartmentGroup | 科室分组/病区 | | DepartmentGroupItem | 分组-科室关联 | **能力:** RBAC 角色权限、按钮级菜单控制、科室分组管理 --- ### 4. 基础数据 `MasterData` | 实体 | 说明 | |------|------| | Doctor | 医生档案(职称/专长/挂号费) | | Patient | 患者档案(姓名/性别/身份证/血型/过敏史) | | ServiceItem | 诊疗项目(检查/检验/治疗/手术/护理/材料) | | PriceList | 价表管理(统一价格 + 调价记录) | | Diagnosis | 诊断字典(ICD-10 编码) | | Frequency | 执行频次(QD/BID/TID/QID/PRN 等) | | AdministrationRoute | 用药途径(口服/静滴/肌注/皮下等) | | Surgery | 手术维护(分级管理 + 麻醉方式 + 预计时长) | | ICDCode | ICD 编码字典 | **能力:** 机构全部基础字典数据的 CRUD --- ### 5. 排班管理 `Schedule` | 实体 | 说明 | |------|------| | RegistrationType | 号别维护(普通号/专家号/急诊号/特需号) | | Schedule | 排班表(按日期 + 时段 + 医生 + 号源数) | | Prescription | 处方(含诊断/审核状态) | | PrescriptionItem | 处方明细(药品/剂量/频次/天数) | | MedicalRecord | 门诊病历(主诉/现病史/体格检查/诊断) | | LabReport | 检验报告 | | LabReportItem | 检验明细项 | **能力:** 按日排班、号源管理、处方开具(审核后自动扣库存)、病历书写、检验报告 --- ### 6. 药品维护 `Pharmacy` | 实体 | 说明 | |------|------| | Medicine | 药品字典(名称/规格/单位/单价/库存上下限) | | DrugCategory | 药品分类(树形结构) | | Supplier | 供应商(供应商/生产商/代理商) | | Warehouse | 仓库(药库/门诊药房/住院药房/急诊药房) | | WarehouseStock | 仓库库存(含批号/有效期/并发控制) | | StockOperation | 出入库操作单(入库/出库/退库/退货) | | StockOperationItem | 操作单明细 | | StockCheck | 库存盘点单 | | StockCheckItem | 盘点明细 | **能力:** 药品全生命周期管理、出入库审核流程、库存盘点(盘盈盘亏自动调整)、乐观并发控制 --- ### 7. 配药发药 `PharmacyDispensing` | 实体 | 说明 | |------|------| | DispensingRecord | 配药记录 | | ReturnDrugRecord | 退药记录 | | WaitingDispensing | 待配药队列 | **能力:** 门诊/住院配药、退药申请与审批、配药队列管理 --- ### 8. 住院管理 `NurseStation` | 实体 | 说明 | |------|------| | InpatientOrder | 住院医嘱(长期/临时) | | InpatientFee | 住院费用 | | NursingRecord | 护理记录(体征/出入量/护理措施) | **能力:** 医嘱开立、费用记账、护理记录 --- ### 9. 结算管理 `Settlement` | 实体 | 说明 | |------|------| | Settlement | 出院结算 | | SettlementItem | 结算明细 | | PrePayment | 预交金管理 | **能力:** 出院结算、预交金充值、费用汇总 --- ### 10. 医保对接 `Insurance` | 实体 | 说明 | |------|------| | InsuranceType | 医保类型(职工/居民/新农合/商业保险) | | InsuranceCatalog | 医保目录(甲类/乙类/丙类 + 自付比例) | | InsuranceClaim | 医保理赔记录 | **能力:** 医保目录维护、自付比例计算、理赔记录 --- ### 11. 财务管理 `Finance` | 实体 | 说明 | |------|------| | DailySettlement | 收费员日结 | | RefundRecord | 退费审批记录 | | FinancialReport | 财务报表 | **能力:** 收费员日结对账、退费审批流程、财务报表生成 --- ### 12. 电子病历 `EMR` | 实体 | 说明 | |------|------| | MedicalRecordTemplate | 病历模板 | | MedicalRecordQuality | 病历质控(评分/缺陷项) | **能力:** 病历模板管理、病历质量评分 --- ### 13. 手术麻醉 `SurgeryAnesthesia` | 实体 | 说明 | |------|------| | SurgeryApply | 手术申请(含手术等级/术式/麻醉方式) | | AnesthesiaRecord | 麻醉记录 | | SurgeryPostOp | 术后评估 | **能力:** 手术申请审批、麻醉记录、术后评估 --- ### 14. 影像管理 `RIS` | 实体 | 说明 | |------|------| | ImagingApply | 影像检查申请 | | ImagingReport | 影像报告 | **能力:** 影像申请、报告书写 --- ### 15. 临床路径 `ClinicalPathway` | 实体 | 说明 | |------|------| | ClinicalPathway | 临床路径定义 | | PathwayStage | 路径阶段 | | PathwayExecution | 路径执行记录 | **能力:** 临床路径模板、阶段管理、执行跟踪 --- ### 16. 合理用药 `DrugReview` | 实体 | 说明 | |------|------| | DrugInteraction | 药物相互作用 | | AllergyAlert | 过敏预警 | | DrugUsageRule | 用药规则(剂量/频次/禁忌) | **能力:** 药物相互作用检查、过敏提醒、超剂量预警 --- ### 17. 病案管理 `CaseManagement` | 实体 | 说明 | |------|------| | CaseRecord | 病案首页 | | ICDDiagnosis | ICD 诊断编码 | | CDDiagnosis | 中医诊断编码 | **能力:** 病案归档、ICD-10 / 中医编码管理 --- ### 18. 检验管理 `LIS` | 实体 | 说明 | |------|------| | LabSample | 标本采集记录 | | LabCriticalValue | 危急值报告 | | LabQualityControl | 质控记录 | **能力:** 标本管理、危急值上报与处理、质控管理 --- ### 19. 人事管理 `Staff` | 实体 | 说明 | |------|------| | Employee | 员工档案 | | Attendance | 考勤记录 | | Training | 培训记录 | **能力:** 员工管理、考勤打卡、培训记录 --- ### 20. 物资耗材 `Materials` | 实体 | 说明 | |------|------| | Material | 物资/耗材 | | MaterialCategory | 物资分类 | | MaterialStock | 物资库存(RowVersion 并发控制) | | MaterialStockLog | 物资出入库记录 | | Supplier (共享) | 供应商 | **能力:** 物资入库出库、库存管理、分类维护 --- ### 21. 设备管理 `Equipment` | 实体 | 说明 | |------|------| | Equipment | 设备台账 | | EquipmentMaintenance | 维护记录 | **能力:** 设备登记、维护保养记录 --- ### 22. 体检管理 `PhysicalExam` | 实体 | 说明 | |------|------| | ExamPackage | 体检套餐 | | ExamRegistration | 体检登记 | | ExamReport | 体检报告 | **能力:** 套餐管理、体检登记、报告生成 --- ### 23. 输血管理 `BloodSupply` | 实体 | 说明 | |------|------| | BloodApply | 输血申请 | | BloodMatch | 配血记录 | | BloodTransfusion | 输血记录 | **能力:** 输血申请、交叉配血、输血记录 --- ### 24. 消毒供应 `Sterilization` | 实体 | 说明 | |------|------| | SterilizationPackage | 消毒包管理 | | SterilizationRecord | 消毒记录 | **能力:** 消毒包追溯、灭菌记录 --- ## 🔤 字典系统 所有实体中的状态/类型/分类字段使用 **编码存储**(非硬编码中文),通过 `DictionaryType` + `DictionaryItem` 统一维护: | 字典分类 | 编码示例 | 说明 | |----------|---------|------| | `gender` | male / female / unknown | 性别 | | `blood_type` | A / B / AB / O | 血型 | | `registration_status` | registered / visited / cancelled | 挂号状态 | | `admission_status` | admitted / discharged | 住院状态 | | `bill_status` | pending / paid / partial / voided | 账单状态 | | `prescription_status` | prescribed / dispensed / cancelled | 处方状态 | | `surgery_status` | pending / scheduled / completed / cancelled | 手术状态 | | `surgery_level` | 1 / 2 / 3 / 4 | 手术等级 | | `anesthesia_type` | general / local / spinal | 麻醉方式 | | `bed_status` | free / occupied / maintenance | 床位状态 | | `bed_type` | ordinary / vip / icu | 病房类型 | | `doctor_title` | resident / attending /副主任 / 主任 | 医生职称 | | `lab_report_status` | pending / testing / completed | 检验状态 | | `lab_result` | normal / abnormal / critical | 检验结果 | | `imaging_status` | pending / scheduled / completed | 影像状态 | | `stock_operation_type` | inbound / outbound / return_in / return_out | 出入库类型 | | `dispensing_status` | pending / dispensing / dispensed | 配药状态 | | `case_status` | drafting / submitted / archived | 病案状态 | | `drug_review_status` | approved / rejected / pending | 用药审核状态 | | `sterilization_status` | sterilizing / completed / expired | 消毒状态 | | `blood_apply_status` | pending / matched / transfused | 输血状态 | | ... | 共 60 个分类、213 个字典项 | | **API:** ``` GET /api/DictionaryTypes — 获取所有字典分类 GET /api/DictionaryItems?Keyword= — 获取指定分类下的字典项 ``` --- ## 📊 报表统计(Dashboard) | API | 说明 | |-----|------| | `GET /api/Dashboard/overview` | 首页概览(今日挂号/在院人数/床位/待处理数) | | `GET /api/Dashboard/revenue` | 收入统计(按日/周/月/年汇总) | | `GET /api/Dashboard/department-workload` | 科室工作量(挂号/入院/出院/手术/收入) | | `GET /api/Dashboard/doctor-workload` | 医生工作量(处方/挂号/收入排名) | | `GET /api/Dashboard/drug-consumption` | 药品消耗统计(用量/金额 TOP 20) | | `GET /api/Dashboard/registration-trend` | 挂号趋势图数据 | --- ## 🔒 审计日志 全局 `AuditActionFilter` 自动拦截所有 **POST / PUT / DELETE** 请求,记录: | 字段 | 说明 | |------|------| | 操作人 | UserId + UserName(从 JWT 中提取) | | 操作类型 | CREATE / UPDATE / DELETE | | 操作模块 | 从 Controller 命名空间推断 | | 操作实体 | 从 Controller 名推断 | | 请求方法/路径 | HTTP Method + Path | | 请求参数 | Body(自动脱敏,移除 Password 字段) | | 响应状态码 | HTTP Status Code | | 客户端 IP | RemoteIpAddress | | 耗时 | 毫秒级 Stopwatch | | 是否成功 | IsSuccess + ErrorMessage | **API:** ``` GET /api/AuditLogs — 查询审计日志(支持分页+多条件筛选) GET /api/AuditLogs/{id} — 日志详情 ``` --- ## 📊 数据统计 | 维度 | 数量 | |------|------| | 功能模块 | **24 个** | | Domain 实体 | **99 个** | | Service 接口 | **112 个**(含 13 个子实体只读接口) | | Service 实现 | **99 个** | | DTO 文件 | **55 个** | | Controller | **106 个** | | Fluent API FK 配置 | **115 个** | | 并发控制(RowVersion) | **3 个** | | 全局过滤器 | **2 个**(Validation + Audit) | | 全局中间件 | **2 个**(Exception + RequestLogging) | | 字典分类 / 字典项 | **60 / 213** | | 种子数据组 | **182+** | | 源码文件总数 | **485 个** | --- ## 🚀 快速开始 ### 方式一:Docker 运行(推荐) ```bash docker-compose up -d ``` 访问 Swagger: http://localhost:5000/swagger ### 方式二:本地运行 ```bash cd src/Caresy.WebAPI dotnet run ``` > 需要 .NET 10 SDK。首次启动自动执行数据库迁移和种子数据初始化。 --- ## 🔐 预置账号 | 用户名 | 密码 | 角色 | |--------|------|------| | `admin` | `Admin@123` | 系统管理员(全部权限) | | `doctor1` | `Doctor@123` | 医生 | | `staff1` | `Admin@123` | 前台/收费员 | --- ## 📡 主要 API 端点 ### 认证 ``` POST /api/Auth/login — 登录获取 Token POST /api/Auth/change-password — 修改密码 GET /api/Auth/current-user — 当前用户信息 ``` ### 系统管理 ``` CRUD /api/Institutions — 机构信息 CRUD /api/SystemConfigs — 系统参数配置 CRUD /api/DictionaryTypes — 字典分类 CRUD /api/DictionaryItems — 字典项 CRUD /api/Departments — 科室管理 GET /api/AuditLogs — 审计日志查询 ``` ### 权限管理 ``` CRUD /api/Menus — 菜单管理 GET /api/Menus/tree — 菜单树形结构 CRUD /api/Roles — 角色管理 POST /api/Roles/assign-menus — 分配菜单权限 CRUD /api/Users — 用户管理 CRUD /api/DepartmentGroups — 科室分组 ``` ### 基础数据 ``` CRUD /api/Doctors — 医生档案 CRUD /api/Patients — 患者档案 CRUD /api/ServiceItems — 诊疗项目 CRUD /api/PriceLists — 价表管理 CRUD /api/Diagnoses — 诊断字典 CRUD /api/Frequencies — 执行频次 CRUD /api/AdministrationRoutes — 用药途径 CRUD /api/Surgeries — 手术维护 CRUD /api/ICDCodes — ICD 编码 ``` ### 挂号 / 门诊 ``` CRUD /api/RegistrationTypes — 号别维护 CRUD /api/Schedules — 排班管理 CRUD /api/Registrations — 当日挂号 CRUD /api/Appointments — 预约管理 CRUD /api/MedicalRecords — 门诊病历 CRUD /api/Prescriptions — 处方管理 CRUD /api/Billing — 门诊收费 CRUD /api/BillItems — 账单明细 ``` ### 住院管理 ``` CRUD /api/Admissions — 住院登记 CRUD /api/Wards — 病房管理 CRUD /api/Beds — 床位管理 CRUD /api/InpatientOrders — 住院医嘱 CRUD /api/InpatientFees — 住院费用 CRUD /api/NursingRecords — 护理记录 ``` ### 药品管理 ``` CRUD /api/Medicines — 药品字典 CRUD /api/DrugCategories — 药品分类 CRUD /api/Suppliers — 供应商 CRUD /api/Warehouses — 仓库管理 CRUD /api/WarehouseStocks — 库存查询 CRUD /api/StockOperations — 出入库操作单 CRUD /api/StockChecks — 库存盘点 CRUD /api/StockLogs — 库存日志 CRUD /api/DrugPriceLogs — 药品价格日志 ``` ### 配药发药 ``` CRUD /api/DispensingRecords — 配药记录 CRUD /api/ReturnDrugRecords — 退药记录 CRUD /api/WaitingDispensings — 待配药队列 ``` ### 检验管理 (LIS) ``` CRUD /api/LabSamples — 标本采集 CRUD /api/LabCriticalValues — 危急值报告 CRUD /api/LabQualityControls — 质控记录 CRUD /api/LabReports — 检验报告 ``` ### 影像管理 (RIS) ``` CRUD /api/ImagingApplys — 影像申请 CRUD /api/ImagingReports — 影像报告 ``` ### 手术麻醉 ``` CRUD /api/SurgeryApplys — 手术申请 CRUD /api/AnesthesiaRecords — 麻醉记录 CRUD /api/SurgeryPostOps — 术后评估 ``` ### 护理站 ``` CRUD /api/NursingRecords — 护理记录 CRUD /api/InpatientOrders — 医嘱执行 ``` ### 结算 / 财务 ``` CRUD /api/Settlements — 出院结算 CRUD /api/SettlementItems — 结算明细 CRUD /api/PrePayments — 预交金 CRUD /api/DailySettlements — 收费员日结 CRUD /api/RefundRecords — 退费记录 CRUD /api/FinancialReports — 财务报表 ``` ### 医保 ``` CRUD /api/InsuranceTypes — 医保类型 CRUD /api/InsuranceCatalogs — 医保目录 CRUD /api/InsuranceClaims — 理赔记录 ``` ### 电子病历 / 病案 ``` CRUD /api/MedicalRecordTemplates — 病历模板 CRUD /api/MedicalRecordQualitys — 病历质控 CRUD /api/CaseRecords — 病案首页 CRUD /api/ICDDiagnoses — ICD 诊断编码 CRUD /api/CDDiagnoses — 中医诊断编码 ``` ### 临床路径 ``` CRUD /api/ClinicalPathways — 路径定义 CRUD /api/PathwayStages — 路径阶段 CRUD /api/PathwayExecutions — 路径执行 ``` ### 合理用药 ``` CRUD /api/DrugInteractions — 药物相互作用 CRUD /api/AllergyAlerts — 过敏预警 CRUD /api/DrugUsageRules — 用药规则 ``` ### 人事 / 物资 / 设备 ``` CRUD /api/Employees — 员工档案 CRUD /api/Attendances — 考勤记录 CRUD /api/Trainings — 培训记录 CRUD /api/Materials — 物资/耗材 CRUD /api/MaterialCategories — 物资分类 CRUD /api/MaterialStocks — 物资库存 CRUD /api/Equipment — 设备台账 CRUD /api/EquipmentMaintenances — 维护记录 ``` ### 体检 / 输血 / 消毒 ``` CRUD /api/ExamPackages — 体检套餐 CRUD /api/ExamRegistrations — 体检登记 CRUD /api/ExamReports — 体检报告 CRUD /api/BloodApplys — 输血申请 CRUD /api/BloodMatches — 配血记录 CRUD /api/BloodTransfusions — 输血记录 CRUD /api/SterilizationPackages — 消毒包 CRUD /api/SterilizationRecords — 消毒记录 ``` ### 报表统计 ``` GET /api/Dashboard/overview — 首页概览 GET /api/Dashboard/revenue — 收入统计 GET /api/Dashboard/department-workload — 科室工作量 GET /api/Dashboard/doctor-workload — 医生工作量 GET /api/Dashboard/drug-consumption — 药品消耗 GET /api/Dashboard/registration-trend — 挂号趋势 ``` --- ## 🗄️ 数据库 默认使用 PostgreSQL,修改 `appsettings.json` 即可切换: ```json { "ConnectionStrings": { "Default": "Host=localhost;Port=5432;Database=caresydb;Username=postgres;Password=your_password" } } ``` 首次启动自动执行: 1. **Auto-Migrate** — 自动创建表结构 2. **SeedData** — 初始化 182+ 组种子数据(科室、医生、患者、药品、字典、菜单、角色等) 支持的数据库(修改 EF Core Provider 即可): - PostgreSQL(默认,`UseNpgsql`) - SQL Server(`UseSqlServer`) - MySQL(`UseMySql`) - SQLite(`UseSqlite`,仅限开发测试) --- ## 🛡️ 中间件 & 过滤器 | 组件 | 说明 | |------|------| | `GlobalExceptionMiddleware` | 全局异常捕获,统一返回 `ApiResult` 格式 | | `RequestLoggingMiddleware` | 请求/响应日志记录 | | `ValidationFilter` | Model 验证,自动返回 400 错误详情 | | `AuditActionFilter` | 审计日志自动记录(拦截 POST/PUT/DELETE) | --- ## 📝 License MIT