
简介本资源是专为基层医疗信息化场景设计的Wi6.5数据库系统即‘随心所欲XP工作站医疗数据库’面向医疗IT运维人员、Delphi开发者及医院信息系统二次开发工程师解决XP环境下轻量级、高稳定性医疗数据管理需求。包内共967个文件涵盖147个HTML前端页面、138个DFM窗体定义、88个PAS核心逻辑单元、74个C/C底层模块、44个EXE可执行程序及9个GDB数据库文件完整呈现基于InterBase 6.5构建的患者档案、诊疗记录、处方费用等模块化结构另有SQL脚本、报表模板RPT、帮助文档HLP和加密配置文件IBCONFIG体现典型医疗数据建模与权限控制实践。压缩包28.43MB适配Windows XP平台目录中可见MAKEFILE.BC、LAYOUT.BIN、MASTAPP.BPR等工程构建要素具备完整编译部署能力。已有1004人学习下载可直接用于教学演示、旧系统维护或DelphiInterBase医疗项目参考开发。1. 这不是XP系统兼容补丁而是一套跑在Windows XP环境下的轻量级医疗业务数据库方案解决基层诊所无网、低配、断电续用的刚性需求你可能第一眼看到“随心所欲XP工作站医疗数据库”会皱眉——XP2001年的系统还搞医疗数据库别急这不是怀旧行为艺术。我去年在某县域医共体下沉支持时亲眼见过三线城市周边17家村卫生室其中12台主力终端仍是XP SP3系统CPU是赛扬G1610内存2GB硬盘还是5400转机械盘连USB口都锈迹斑斑。它们不联网不装杀毒软件但每天要开处方、录慢病随访、打疫苗登记。Wi6.5数据库就是为这种“黑盒环境”设计的它不依赖SQL Server或MySQL服务进程不走ODBC驱动层而是用原生Windows API直读写加密的.wdb文件启动即用双击wi65.exe就弹出主界面录入一条高血压随访记录平均耗时1.8秒实测i3-21003.1GHz。它不是替代HIS而是当HIS崩溃、断网、升级失败时医生能立刻切过去继续干活的“医疗后悔药”。适合乡镇卫生院信息员、社区站全科医生、流动体检队数据录入员——你要的不是云原生架构而是“插上U盘就能开方”的确定性。2. Wi6.5数据库核心机制解析为什么它能在XP上零依赖运行且不丢数据Wi6.5数据库的本质是一个嵌入式、单文件、事务安全的本地数据库引擎其设计哲学与SQLite高度相似但针对医疗场景做了深度定制。它不安装服务、不注册COM组件、不修改注册表关键项仅写入极少量用户偏好到HKEY_CURRENT_USER\Software\WI65所有业务逻辑封装在单个wi65.exe中。数据以加密二进制块形式存于.wdb文件内每个块含完整事务头含时间戳、操作类型、校验码写入前先落盘到临时.tmp文件成功后再原子重命名——这是它在频繁断电环境下仍能保证数据不损坏的核心机制。2.1 数据存储结构.wdb文件不是简单表格堆叠而是分段式日志索引混合体Wi6.5将一个.wdb文件划分为三个逻辑区区域名称物理位置内容说明医疗场景意义Header Block文件开头512字节数据库版本号Wi6.5固定为0x0605、加密密钥盐值、初始创建时间、总记录数快照启动时快速校验文件完整性避免因U盘拔插导致的头部损坏误判为“空库”Log SegmentHeader后连续区域按时间序追加的事务日志每条日志含操作类型INSERT/UPDATE/DELETE、表名哈希、字段变更向量、CRC32校验处方修改、随访状态更新等操作均在此记录断电后可通过重放日志恢复到最后一致状态Index Tree文件末尾动态增长区B树索引键为“患者ID就诊日期”复合键值为Log Segment中对应日志偏移量支持按患者查历史全部就诊记录响应时间稳定在O(log n)不随数据量线性增长提示.wdb文件默认启用AES-128-CBC加密密钥由用户密码经PBKDF210000轮SHA256派生。若忘记密码没有后门密钥无法解密——这是医疗数据合规的硬性要求不是技术缺陷。2.2 医疗业务模型固化6张核心表与字段语义约束Wi6.5不开放建表功能而是预置6张符合《基层医疗卫生信息系统功能规范2021版》的实体表。所有字段类型、长度、非空约束、枚举值均固化避免基层人员随意填写导致后续统计失效。例如PATIENT表ID18位身份证号自动校验格式与校验码、NAME≤10汉字、GENDER仅允许男/女/未知、BIRTHDAYYYYY-MM-DD格式自动计算年龄并写入AGE字段VISIT表PATIENT_ID外键关联、VISIT_DATE日期不允许未来日期、DIAGNOSIS_ICD10下拉选择仅限国家医保版ICD-10前三位编码如J00-J99呼吸系统PRESCRIPTION表VISIT_ID外键、DRUG_NAME从内置药品库选择含通用名商品名规格、DOSE数值单位单位限定为mg/ml/片/粒这种“收口式设计”牺牲了灵活性但换来的是导出Excel报表时诊断分类、药品统计、慢病随访率等指标可直接用SUMIFS公式计算无需清洗。2.3 启动与运行时行为无后台进程、无端口占用、无系统服务依赖执行wi65.exe后进程行为如下创建一个隐藏的WI65_RUNTIME子目录位于exe同级路径存放临时索引缓存、日志回滚文件所有UI控件使用纯GDI绘制不调用.NET FrameworkXP默认无.NET 4.0网络相关功能如打印到网络打印机通过Windows Spooler API调用不走WinHTTP或WinInet内存占用恒定在12–18MB实测XP SP3 2GB RAM无内存泄漏连续运行72小时后RSS稳定在14.2MB。这意味着你把它拷贝到U盘在任何一台XP电脑上双击即用关机断电后下次打开数据状态与断电前完全一致——这才是“随心所欲”的底层底气。3. 部署与初始化从空白U盘到可开方的医疗工作站只需5步部署Wi6.5数据库不是安装而是“复制配置”。整个过程不需管理员权限普通用户账户即可完成。以下步骤基于某乡镇卫生院信息员A同学的实际操作录像整理已脱敏。3.1 准备工作获取纯净版Wi6.5包与基础配置模板Wi6.5官方发布包为ZIP格式解压后包含wi65.exe主程序3.21MBSHA256:a7f9e...c3d2data_template.wdb空库模板含6张表结构及基础字典12KBconfig.ini文本配置文件控制界面语言、默认打印机、药品库路径等druglib.csv标准药品库UTF-8编码含1247种基药字段code,name,spec,unit,category注意data_template.wdb不可直接双击打开——它必须通过Wi6.5的“新建数据库”功能导入否则会因缺少运行时元数据而报错“Invalid database header”。3.2 创建首个医疗数据库规避“空库无法登录”陷阱这是新手最高频翻车点。Wi6.5首次运行时若未指定数据库路径会弹出向导要求“创建新库”但此时若直接点击“确定”程序会生成一个无密码、无表结构的无效.wdb文件后续无法修复。正确操作流程# 步骤1在U盘根目录新建文件夹 mkdir D:\WI65_WORKSTATION # 步骤2将data_template.wdb复制进去并重命名为业务库名 copy D:\download\data_template.wdb D:\WI65_WORKSTATION\clinic_2024.wdb # 步骤3双击wi65.exe主界面左上角点击【文件】→【打开数据库】 # 步骤4导航至 D:\WI65_WORKSTATION\选中 clinic_2024.wdb点击【打开】 # 步骤5首次打开时强制设置密码6–12位含大小写字母数字密码将绑定该.wdb文件此时界面上方状态栏显示“数据库clinic_2024.wdb已连接记录数0”表示初始化成功。切记密码设置后无法修改只能导出数据重建新库。3.3 导入药品库与诊断字典确保临床录入合规Wi6.5不提供在线字典更新所有医疗术语必须本地CSV导入。druglib.csv和icd10.csv需按严格格式准备# druglib.csv 示例注意首行必须是标题编码必须UTF-8无BOM code,name,spec,unit,category 00101,阿莫西林胶囊,0.25g*24粒,盒,抗生素 00102,氯雷他定片,10mg*6片,盒,抗过敏导入命令在Wi6.5主界面操作【系统】→【字典管理】→【药品库】→【从CSV导入】选择druglib.csv勾选“覆盖重复编码”点击【导入】导入完成后状态栏提示“成功导入1247条药品”此时处方界面的药品搜索框才可正常下拉选择。逻辑说明Wi6.5在导入时会对code字段做唯一性校验若CSV中存在重复code则跳过该行并记录到import_error.log。category字段用于后续统计“抗生素使用率”若为空则归入“其他”。3.4 配置打印机与导出路径让处方真正“打出来”Wi6.5的打印功能不依赖通用驱动而是调用Windows GDI直接发送EMF指令。因此必须预先配置在Windows XP中添加一台本地打印机即使无物理设备可选“Microsoft XPS Document Writer”作为虚拟打印机打开config.ini修改以下两行[PRINT] default_printer Microsoft XPS Document Writer prescription_template A4_prescription_v2.tplA4_prescription_v2.tpl是模板文件用记事本打开可见占位符患者姓名{{PATIENT.NAME}} 年龄{{PATIENT.AGE}}岁 诊断{{VISIT.DIAGNOSIS_ICD10}} - {{VISIT.DIAGNOSIS_DESC}} 药品{{PRESCRIPTION.DRUG_NAME}} {{PRESCRIPTION.SPEC}} × {{PRESCRIPTION.QUANTITY}}{{PRESCRIPTION.UNIT}}配置生效后选中一条就诊记录点击【打印】→【处方单】即可输出标准A4处方。4. 常见问题排查那些让基层医生拍桌子的5个真实坑以及怎么绕过去Wi6.5在XP环境下的稳定性极高但因基层使用场景特殊U盘反复插拔、杀毒软件误报、老旧打印机驱动冲突仍存在几类高频问题。以下是某县疾控中心技术支持组近半年收集的TOP5问题按“现象→原因→解决”结构还原4.1 现象双击wi65.exe无反应任务管理器里看不到进程原因XP系统缺少msvcp120.dll和msvcr120.dllVisual C 2013运行库而Wi6.5编译时静态链接了部分C STL但仍有少数API调用依赖这两个DLL。解决下载微软官方离线包vcredist_x86.exe2013 Redistributable运行安装若无法联网将msvcp120.dll和msvcr120.dll从已安装机器的C:\Windows\System32\复制放入wi65.exe同目录验证在CMD中执行depends.exe wi65.exeDependency Walker工具检查红色标记的缺失DLL是否清零。4.2 现象打开数据库时报错“Database is corrupted or encrypted with different key”原因该.wdb文件曾被另一台电脑用不同密码打开过或U盘在写入中途被拔出导致日志段损坏。解决不要尝试用记事本修改文件.wdb是二进制格式任意编辑必毁使用Wi6.5自带修复工具在命令行进入程序目录执行wi65.exe /repair D:\WI65_WORKSTATION\clinic_2024.wdb工具会扫描Log Segment完整性自动截断损坏日志并重建索引树。成功率约82%基于137例实测。4.3 现象录入处方时药品下拉列表为空但druglib.csv确认已导入原因config.ini中[DRUG]节的library_path指向错误路径或CSV文件编码不是UTF-8常见为ANSI或GBK。解决用Notepad打开druglib.csv菜单栏【编码】→【转为UTF-8无BOM格式】→保存检查config.ini中library_path .\druglib.csv相对路径或library_path D:\WI65_WORKSTATION\druglib.csv绝对路径确保路径存在且可读重启Wi6.5【系统】→【字典管理】→【药品库】→【刷新缓存】。4.4 现象打印处方时卡死或输出内容错位、字体乱码原因XP默认打印机驱动为“Generic / Text Only”不支持中文GDI渲染或模板文件.tpl中使用了XP不支持的字体如“微软雅黑”。解决在【控制面板】→【打印机和传真】中右键默认打印机→【属性】→【详细信息】→【打印处理器】将“RAW”改为“NT EMF 1.008”编辑A4_prescription_v2.tpl将所有font微软雅黑替换为font宋体XP SP3自带重启Wi6.5重新加载模板。4.5 现象导出Excel时日期字段显示为数字如44562而非“2022-01-01”原因Wi6.5导出CSV时日期字段按Excel序列号自1900-01-01起的天数输出这是CSV标准行为非Bug。解决在Excel中选中日期列 → 右键【设置单元格格式】→【数字】→【日期】→ 选择“2012年3月14日”格式或在CSV中用公式转换DATE(1900,1,1)A1假设日期数字在A1单元格长期方案修改config.ini中[EXPORT]节添加date_format YYYY-MM-DD重启后导出CSV将直接为字符串格式。5. 数据迁移与跨平台协作如何把XP工作站的数据安全迁移到新系统当乡镇卫生院终于升级到Windows 10或需要将村医录入的数据汇总到县级平台时“怎么把.wdb里的数据拿出来”就成了刚需。Wi6.5不提供ODBC驱动也不生成SQL脚本但提供了三套经过生产验证的迁移路径按数据量和目标系统分层设计。5.1 小规模迁移5000条记录CSV导出 Excel清洗10分钟搞定这是最常用、最稳妥的方式。Wi6.5的导出功能专为基层设计支持按表、按条件、按时间段导出为CSV【文件】→【导出数据】→ 选择表如VISIT、PRESCRIPTION→ 设置时间范围如“2024-01-01 至 2024-06-30”→ 勾选“包含表头”→ 保存为visit_export.csvCSV采用UTF-8编码字段间用英文逗号分隔字符串自动加半角双引号如张三,男,1985-03-12关键参数说明date_format在config.ini中配置影响VISIT_DATE、BIRTHDAY等字段输出格式number_precision控制DOSE、QUANTITY等数值字段的小数位数默认0位整数export_encoding可设为GBK适配老版Excel但会丢失部分Unicode字符。导出后在Excel中用【数据】→【从文本/CSV】导入选择UTF-8编码自动识别分隔符即可获得结构化表格。某社区站用此法3天内完成2023全年12746条随访记录的清洗与上报。5.2 中等规模迁移5000–10万条使用Wi6.5内置CLI工具批量导出JSON供Python脚本处理Wi6.5附带命令行工具wi65_cli.exe支持无界面导出适合写批处理脚本# 导出所有就诊记录为JSON数组每行一个对象 wi65_cli.exe -db D:\WI65_WORKSTATION\clinic_2024.wdb -table VISIT -format json -output visit.json # 导出指定患者的所有处方按PATIENT_ID过滤 wi65_cli.exe -db D:\WI65_WORKSTATION\clinic_2024.wdb -table PRESCRIPTION -where PATIENT_ID320102199001011234 -format json -output zhangsan_rx.json生成的visit.json是标准JSON Lines格式每行一个JSON对象可用Python轻松解析import json from datetime import datetime with open(visit.json, r, encodingutf-8) as f: for line in f: record json.loads(line.strip()) # 转换日期字符串为datetime对象便于后续分析 record[VISIT_DATE] datetime.strptime(record[VISIT_DATE], %Y-%m-%d) # 映射ICD-10编码到中文描述需自行维护映射字典 record[DIAGNOSIS_DESC] icd10_map.get(record[DIAGNOSIS_ICD10], 未知诊断) # 存入Pandas DataFrame或写入MySQL参数说明-where支持简单SQL WHERE语法仅、IN、BETWEEN不支持JOIN或子查询-format json比csv更易处理嵌套关系但文件体积大30%。5.3 大规模迁移10万条或对接新HIS通过Wi6.5的“只读共享模式”实时同步当县级平台要求“村医录入后数据实时出现在县医院HIS中”可启用Wi6.5的网络共享模式。该模式不开放数据库文件直读而是启动一个轻量HTTP服务端口8080提供RESTful API# 启动只读服务需在config.ini中先配置[NETWORK]节 wi65_cli.exe -db D:\WI65_WORKSTATION\clinic_2024.wdb -service readonly -port 8080此时外部系统可通过HTTP GET请求获取数据# 获取最近100条就诊记录JSON格式 curl http://192.168.1.100:8080/api/v1/visit?limit100since2024-01-01 # 获取某患者的全部处方 curl http://192.168.1.100:8080/api/v1/prescription?patient_id320102199001011234安全机制服务默认只监听127.0.0.1本机若需局域网访问需在config.ini中显式设置bind_address 0.0.0.0并配合Windows防火墙限制IP段。所有API返回数据已脱敏身份证号中间4位为****电话号码后4位为****。5.4 迁移后的数据一致性验证三步交叉核对法数据迁移不是“导出再导入”就结束必须验证一致性。我给自己定的铁律是任何迁移操作后必须执行三步核对总量核对对比源库与目标库的记录总数Wi6.5中【系统】→【数据库统计】→ 查看VISIT表“总记录数”目标库如MySQLSELECT COUNT(*) FROM visit;允许误差0条必须完全相等关键字段分布核对抽样检查诊断、药品、性别等字段的分布比例在Wi6.5导出visit.csv用Excel透视表统计DIAGNOSIS_ICD10各编码出现次数在目标库执行相同SQLSELECT DIAGNOSIS_ICD10, COUNT(*) FROM visit GROUP BY DIAGNOSIS_ICD10;两份结果排序后逐行比对差异率应为0%。单条记录溯源核对随机选取5条记录人工比对原始数据在Wi6.5中找到一条典型记录如患者ID320102199001011234就诊日期2024-03-15记录所有字段值包括VISIT_DATE、DIAGNOSIS_ICD10、PRESCRIPTION关联的药品名与数量在目标库中用相同条件查询逐字段比对特别注意日期格式、空格、全角/半角符号如“”vs“,”。从那以后我每次做迁移都强制走一遍这三步。有一次发现MySQL里DIAGNOSIS_ICD10字段被截断定义为VARCHAR(3)但实际有J00.1这样的4位编码就是靠第二步分布核对揪出来的。希望帮到你。本文还有配套的精品资源点击获取