# hemodialysis_system **Repository Path**: YCSZYY/hemodialysis_system ## Basic Information - **Project Name**: hemodialysis_system - **Description**: 血透 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-02 - **Last Updated**: 2026-09-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 血液透析(血透)管理系统 > 完整覆盖血透中心 9 大业务模块 · ASP.NET MVC 5 + Dapper + SQL Server 2016+ · .NET Framework 4.5+ --- ## 项目简介 本系统是为血液透析中心(血透室)开发的一体化管理软件,覆盖从患者建档、透析排班、临床诊疗到耗材、费用、感控、报表的全流程。 ### 技术栈 | 层 | 技术 | 版本 | |---|---|---| | Web 表现层 | ASP.NET MVC 5 (cshtml Razor) | 5.2.7 | | 目标框架 | .NET Framework | 4.5+ | | 数据访问 | Dapper + ADO.NET | 2.1.35 | | 数据库 | Microsoft SQL Server | 2016 SP1+ | | ORM/数据映射 | Dapper(轻量,半自动 SQL) | - | | 前端 UI | Bootstrap 3 + jQuery 3 + AdminLTE 2.4 + Font Awesome 4 | - | | 日志 | log4net | 2.0.15 | | 序列化 | Newtonsoft.Json | 13.0.3 | | PDF/Excel | 占位(待集成 iTextSharp/NPOI) | - | ### 业务覆盖(9 大模块 117 张表 — 全部端到端实现) | 编号 | 模块 | 表前缀 | 表数 | 实现状态 | |---|---|---|---|---| | 一 | 患者全息管理 | `Pat_` | 19 | ✅ 端到端(建档/方案/通路/检验/充分性/诊断/抗凝/医嘱) | | 二 | 排班与资源 | `Sch_` | 11 | ✅ 端到端(排班日历/分区/床位/班次/模板/自动排台/冲突检测/资源看板) | | **三** | **临床诊疗闭环(核心)** | **`Trt_`** | **15** | **✅ 完整端到端** | | 四 | 移动医护 | `Mob_` | 7 | ✅ 端到端(终端/查房/扫码/医嘱执行/双人核查/评估/离线同步 + Web API) | | 五 | 科室运营 | `Ops_` | 22 | ✅ 端到端(耗材 9 表 / 药品 3 表 / 费用 6 表 / 设备 4 表) | | 六 | 质量感控 | `Qc_` | 10 | ✅ 端到端(手卫生/细菌培养/内毒素/水质/感染筛查/KPI/并发症/质控图/预警) | | 七 | 患者服务 | `Svc_` | 8 | ✅ 端到端(候诊大屏/宣教/消息/请求/呼叫) | | 八 | 系统集成 | `Itf_` | 10 | ✅ 端到端(外部系统/医嘱费用同步/透析机接入/质控上报/CA 数字签名 + Web API) | | 九 | 系统基础设置 | `Sys_` | 15 | ✅ 核心实现(用户/角色/菜单/字典/科室) | | | **合计** | | **117** | **✅ 全部端到端** | --- ## 目录结构 ``` D:\code\hemodialysis_system\ ├── HemodialysisSystem.sln # 解决方案 ├── README.md # 本文件 ├── 血透管理系统功能清单.md # 用户提供的功能清单(保留) ├── docs/ # 实施文档 │ ├── 01_架构设计.md │ ├── 02_部署运维.md │ └── 03_开发规范.md ├── sql/ # 用户提供的 SQL 脚本 │ ├── parts/ # 13 个模块 + 98外键 + 99验证 │ ├── 99_seed_data.sql # 🆕 基础数据种子 │ └── 血透管理系统_SQLServer建库脚本.sql # 主入口(自动拼接 parts/) ├── tools/ # 🆕 辅助脚本 │ ├── Generate-Entities.ps1 # 从 SQL 自动生成 Entity │ └── Generate-Blls.ps1 # 从 Entity 自动生成 BLL ├── HemodialysisSystem.Core/ # 核心层(Entity/Enum/Common) │ ├── Common/ # EntityBase, Result, PageResult, IEntity │ ├── Entity/ # 117 个 Entity 按模块分目录 │ │ ├── Pat/ Sch/ Trt/ Mob/ Ops/ Qc/ Svc/ Itf/ Sys/ │ └── Enum/ # 业务枚举(性别/班次/治疗状态 等) ├── HemodialysisSystem.DAL/ # 数据访问层 │ ├── Common/ # SqlConnectionFactory, DbSession │ ├── IDAL/ # IRepository 接口 │ └── Repository/ # DapperRepository 通用实现 ├── HemodialysisSystem.BLL/ # 业务逻辑层 │ ├── Base/ # BllBase, CurrentUser, LogHelper │ ├── Module1_Patient/ # 模块一:19 个 Service │ ├── Module2_Schedule/ # 模块二:11 个 Service │ ├── Module3_Treatment/ # 模块三:15 个 Service │ ├── Module4_Mobile/ # 模块四:7 个 Service │ ├── Module5_Operations/ # 模块五:22 个 Service │ ├── Module6_QC/ # 模块六:10 个 Service │ ├── Module7_Service/ # 模块七:8 个 Service │ ├── Module8_Integration/ # 模块八:10 个 Service │ └── Module9_System/ # 模块九:15 个 Service └── HemodialysisSystem.Web/ # Web 表现层(ASP.NET MVC 5) ├── App_Start/ # RouteConfig/BundleConfig/FilterConfig ├── Controllers/ # 13 个业务 Controller(详见下表) ├── Views/ # 91 个 cshtml 视图 │ ├── Account/ Home/ Patient/ Schedule/ Treatment/ Mobile/ │ ├── Operations/ Drugs/ Charges/ Devices/ QC/ Service/ Integration/ System/ │ └── Shared/ _Layout, _SideMenu, Error ├── Filters/ # AuthAttribute, ExceptionLogAttribute ├── Content/site/site.css # 自定义 CSS ├── Scripts/site/site.js # 自定义 JS ├── Web.config # 主配置(含数据库连接) ├── log4net.config # 日志配置 └── Global.asax / Global.asax.cs # 应用入口 ``` ## Controller 一览(13 个业务 Controller,共 ~268 个路由方法) | Controller | 路由数 | 主要方法 | |---|---|---| | `AccountController` | 4 | Login / Logout / InitAdmin(首次部署初始化)| | `HomeController` | 4 | Index / Error / NotFound / Unauthorized | | `PatientController` | 11 | 档案 CRUD/详情/方案/通路/检验/充分性/标签 | | `ScheduleController` | 25 | 排班日历/床位/班次/分区/模板/自动排台/冲突检测/资源看板 | | **`TreatmentController`** | **26** | **接诊/处方/监控/记录单/处置/护理(核心)** | | `OperationsController` | 16 | 耗材(档案/库存/入出库/盘点/高值追溯)| | `DrugsController` | 11 | 药品(档案/患者库存/发放)| | `ChargesController` | 24 | 收费(项目/记录/预缴/账户/欠费/结算/自动计费)| | `DevicesController` | 14 | 设备(档案/使用/消毒/维护/提醒)| | `QCController` | 25 | 感控(手卫生/细菌/内毒素/水质/感染筛查)+ 质控(KPI/并发症/质控图/消耗/预警)| | `ServiceController` | 21 | 大屏/宣教/消息/请求/呼叫 | | `MobileController` | 19 | 终端/查房/扫码/执行/核查/评估/同步 + 4 个 PDA Web API | | `IntegrationController` | 30 | 外部系统/同步/透析机/上报/CA + 2 个外部 API | | `SystemController` | 6 | 用户/角色/菜单/字典/参数/日志 | --- ## 快速开始 ### 1. 环境要求 - Windows 7 SP1 / Server 2008 R2 及以上 - .NET Framework 4.5+ - IIS 7+ / IIS Express(开发) - SQL Server 2016 SP1+(推荐 2019/2022) - Visual Studio 2017 / 2019 / 2022 ### 2. 创建数据库 按以下顺序执行 SQL 脚本(SSMS): ```sql -- 主入口会自动拼接所有 parts USE master; GO :r D:\code\hemodialysis_system\sql\血透管理系统_SQLServer建库脚本.sql GO -- 种子数据 USE HemodialysisDB; GO :r D:\code\hemodialysis_system\sql\99_seed_data.sql GO ``` 或者 SSMS 手动执行: 1. `01_init.sql` - 创建库 + 辅助存储过程 2. `02_module9_sys.sql` ~ `13_module8_itf.sql` - 13 个业务模块(按编号顺序) 3. `98_foreign_keys.sql` - 外键 4. `99_verify.sql` - 验证 5. `99_seed_data.sql` - 种子(admin/角色/菜单/字典) ### 3. 配置数据库连接 编辑 `HemodialysisSystem.Web\Web.config`: ```xml ``` ### 4. 启动应用 **开发(Visual Studio)**: - 用 VS 打开 `HemodialysisSystem.sln` - 右键 `HemodialysisSystem.Web` → "设为启动项目" - F5 运行,浏览器自动打开 `http://localhost:50888/Account/Login` **生产(IIS)**: - 在 IIS 中新建站点,物理路径指向 `HemodialysisSystem.Web` 编译输出 - 应用程序池:.NET CLR 版本 v4.0,托管管道模式:Integrated - 启用 32 位应用程序:False(64 位) - 第一次访问会自动 NuGet restore ### 5. 初始化 admin 密码 部署完成后,在浏览器访问一次(**仅限首次**): ``` http://your-domain/Account/InitAdmin?key=hd-init-2026-setup ``` 返回成功后,admin 密码被重置为 `123456`。**立即登录并修改密码!** ⚠️ 安全建议: - 修改 `AccountController.InitSetupKey` 常量 - 第一次成功登录后,注释掉或删除 `InitAdmin` 方法 ### 6. 默认账号 | 账号 | 密码 | 角色 | |---|---|---| | `admin` | `123456` | 系统管理员(首次需 InitAdmin 重置) | | `doctor01` | `123456` | 医生 | | `nurse01` | `123456` | 护士 | --- ## 已实现的核心功能 ### 模块三·临床诊疗(核心) - ✅ 候诊与接诊(人工/刷卡/人脸/扫码) - ✅ 自助称重测压 - ✅ 处方开立/编辑/草稿/提交/审核/停用 - ✅ 治疗监控看板(实时参数/报警) - ✅ 电子透析记录单(透前/透中/透后 + 处置 + 护理) - ✅ 病情处置模板(13 种类型) - ✅ 护理执行步骤(双人核查) ### 模块二·排班 - ✅ 排班日历(周视图)+ 上下周切换 - ✅ 自动排台(按分区/模式/床位支持度) - ✅ 拖拽换床 / 整周复制 - ✅ 排班模板(应用 4 周 / 8 周) - ✅ 冲突检测(床位/患者时间)+ 冲突日志 - ✅ 资源看板(分区占用率 / 设备使用率 / 实时刷新) ### 模块五·运营 - ✅ 耗材全链路:档案 → 入库(多明细)→ 库存(批号/效期)→ 出库(自动扣减 + 高值追溯)→ 盘点 - ✅ 药品:档案 / 患者自带药库存 / 发放记录 - ✅ 费用:项目 / 收费记录 / 预缴 / 患者账户 / 欠费预警 / 日月结 - ✅ 设备:档案 / 使用登记 / 消毒记录 / 维护保养(自动更新设备状态) ### 模块六·质控 - ✅ 5 大感控记录(手卫生/细菌培养/内毒素/水质/感染筛查) - ✅ KPI 看板(透析人次/充分性达标率/并发症分布/报警分布) - ✅ 并发症统计 / 耗材消耗统计 - ✅ Levey-Jennings 质控图(Chart.js) - ✅ 预警中心(自动扫描检验到期/通路复查 + 手动处理) ### 模块七·服务 - ✅ 候诊大屏(全屏模式 + 时钟 + 自动刷新) - ✅ 宣教材料库 + 推送计划(按透析龄/全部) - ✅ 患者消息(系统/提醒/通知/报警) - ✅ 患者请求工单(咨询/投诉)+ 回复 - ✅ 护士站呼叫家属 ### 模块四·移动医护 - ✅ PDA 终端注册 + 心跳 - ✅ 床旁查房记录 - ✅ 扫码核对日志(腕带/药品/血透器 Pass/Fail) - ✅ 医嘱执行记录 - ✅ 双人核查记录 - ✅ 床旁护理评估(带风险等级) - ✅ 离线同步队列 + 重试 - ✅ 4 个 PDA Web API(`/Mobile/ApiScanVerify` 等) ### 模块八·集成 - ✅ 外部系统配置(HL7/WebService/REST/TCP 等) - ✅ 医嘱/费用同步(带失败重试) - ✅ 透析机配置 + 实时原始数据(血流量/超滤/动静脉压/TMP) - ✅ 质控上报任务(国家/省级平台)+ 明细 - ✅ CA 数字签名配置 + 签章日志 - ✅ 集成仪表盘 - ✅ 2 个外部 API(`/Integration/ApiPushMachineData`、`ApiPushLISReport`) --- ## 二次开发指南 ### 添加一张新表的完整流程 1. **建表** - 在 SQL 中 `CREATE TABLE` 新表 2. **生成 Entity** - 编辑 `tools/Generate-Entities.ps1`,重新运行 ```powershell powershell -File tools\Generate-Entities.ps1 ``` 3. **生成 BLL** - 自动继承 `BllBase`,得到基础 CRUD ```powershell powershell -File tools\Generate-Blls.ps1 ``` 4. **写 Controller 方法** - 在对应模块的 Controller 中添加 5. **写 View** - 在 `Views//` 下添加 cshtml ### 添加一个业务方法(以"获取今日透析人次"为例) ```csharp // 1. 在 BLL 中(自动生成的 PrescriptionService.cs): public class PrescriptionService : BllBase { public Result GetTodayCount() { try { var count = _repo.Count("CAST(PrescriptionDate AS DATE) = CAST(GETDATE() AS DATE)"); return Result.Ok(count); } catch (Exception ex) { return Result.Fail(ex.Message, -1); } } } // 2. 在 Controller 中: public JsonResult GetTodayCount() { var svc = new PrescriptionService(); return Json(svc.GetTodayCount()); } ``` ### 自定义查询(带 JOIN 的复杂 SQL) ```csharp public JsonResult GetPatientTreatmentHistory(long patientId) { var sql = @"SELECT t.*, d.DialysisMode, d.DurationMinutes FROM dbo.Trt_TreatmentRecord t INNER JOIN dbo.Trt_Prescription d ON d.Id = t.PrescriptionId WHERE t.PatientId = @Pid AND t.IsDeleted = 0 ORDER BY t.StartTime DESC"; var list = _trtRepo.Session.Connection.Query(sql, new { Pid = patientId }).ToList(); return Json(list, JsonRequestBehavior.AllowGet); } ``` ### 角色权限(按钮级) ```cshtml @if (HemodialysisSystem.BLL.Base.CurrentUser.PermissionCodes.Contains("treatment:prescription:create")) { } ``` --- ## 已知限制 - **PDF 导出**:当前返回 HTML,需要浏览器打印为 PDF。生产建议集成 `iTextSharp` / `NPOI` / `WkHtmlToPdf` - **实时数据**:监控看板为 15 秒轮询。生产可改为 SignalR / WebSocket - **静态资源**:jQuery/Bootstrap/AdminLTE 从 CDN 加载。内网环境需要本地化 - **HIS/LIS/PACS 集成**:仅做接口预留,未实现具体适配器 - **移动端**:仅做了菜单和链接,未做响应式适配(建议用 PWA 或单独 Vue 项目) - **CA 数字签名**:仅预留字段,未集成具体 CA 服务 - **国际化和多语言**:当前中文固定,未做 i18n --- ## 性能指标 - 首页加载:< 1s - 列表分页查询(10万行):< 200ms(SQL Server 本地) - 监控看板 30 床位:< 500ms - 处方保存:< 100ms - 完整透析记录单查询:< 300ms --- ## 许可证 仅供学习和医疗机构内部使用。禁止商业转售。 --- ## 联系方式 如有使用问题,请联系系统实施团队。