☰
OpenEMR Weno eRx 电子处方模块安装与配置指南:从模块管理器到启用 e-Prescribing
2026/10/3 2:04:59 网站建设 项目流程
  • 医疗健康
  • 后端

【免费下载链接】openemr

The most popular open source electronic health records and medical practice management solution.

项目地址:https://gitcode.com/GitHub_Trending/op/openemr
点击查看免费下载

本指南以 OpenEMR 官方模块oe-module-weno的 安装与配置说明 为骨架,完整讲解 Weno eRx(电子处方)模块的安装、三步管理员配置(Primary Admin / Weno User ID / Weno Location ID)、用户凭据设置以及启用后的后台服务行为,并结合本仓库源码(模块设置页、服务类、数据库建表脚本)补充底层实现细节。读完本文,你将掌握在 OpenEMR 中完成 Weno eRx 全流程开通、让处方医师成功开始电子开方的完整实操步骤与排错思路。

一、模块概览与所需前置凭据

oe-module-weno是 OpenEMR 官方发布的自定义模块(位于 interface/modules/custom_modules/oe-module-weno),用于将 OpenEMR 与 Weno Exchange 的免费电子处方(eRx)服务集成。从 version.php 可看到当前模块版本为3.1.0($v_major = '3'; $v_minor = '1'; $v_patch = '0'),模块由Weno EZ Integration命名(见 info.txt)。

在开始配置前,你需要先在 Weno 侧完成账号注册(注册与开发者页面入口在 weno_setup.php 的帮助面板中有链接)。注册 Weno 账号并完成 EZ Integration 签约后,你会获得以下四类必须值:

序号必须值格式说明用途
1账号持有者的 Admin 凭据邮箱 + 密码模块的 Primary Admin 分区,用于与 Weno 服务端通信与验证
2Weno User ID形如Uxxxx建立 Weno 与 OpenEMR 用户之间的对应关系,用于处方追踪
3每个设施(facility)的 Location ID形如Lxxxxx绑定处方开具地点,用于处方追踪
4分配给每位处方医师的用户凭据用户名(邮箱)+ 密码医师个人配置,缺失或错误时将无法开方

重要实践:建议所有用户/处方医师都在其「Users 设置」中设置默认设施(default facility),否则系统将回退使用所有执业设施中的第一个/默认设施作为其位置。

二、模块安装:从 Module Manager 开始

2.1 进入模块管理器

在 OpenEMR 顶栏选择Modules → Manage Modules,进入模块管理器(Module Manager,MM)页面。安装完成前,该模块会以「Install(安装)」按钮呈现。

2.2 安装、启用与卸载

  • 点击Install完成安装后,按钮会变为Enable(启用)。
  • 点击配置齿轮/扳手图标(Config cog/gear),或直接点击Enable,即可进入模块配置流程。
  • 若模块是首次安装,会弹出警告,提示 Weno Admin 设置尚未完成且未通过验证——此时模块配置图标显示为红色。点击该图标(无论红色还是正常状态),会打开「Weno eRx Service Admin Setup」配置面板。
  • 模块在 Primary Admin 分区通过验证之前无法启用(Enable 操作会被拦截)。
  • 面板中的垃圾桶图标用于注销(卸载)模块。卸载后,之前的 Weno 设置会完整保留在最后配置状态;当模块日后重新注册(Install)时,所有先前设置依旧生效。

这一"卸载保留配置"的行为与模块的配置存储机制有关:所有 Weno 配置均持久化在数据库globals与user_settings表中(详见本文第七节),卸载模块不会清库。

三、Setup Summary:三步走总览

「Weno eRx Service Admin Setup」配置面板中,三大区块已经涵盖了成功开始电子处方所需的绝大部分设置;唯一额外的配置项是:每位 Weno 处方医师的凭据需在其各自「User Settings」中单独设置。

总览流程如下:

  1. 在Primary Admin Section输入 Admin 凭据(加密密钥、Admin 用户名、Admin 密码)。
  2. 在Map Weno User Id's分区为所有授权用户填入其 Weno User ID(Uxxxx)。
  3. 在Map Weno Facility Id's分区为相应设施填入 Weno Location ID(Lxxxxx)。
  4. 点击Enable启用模块,开启首次药房目录下载。
  5. 前往「User Settings」页面为处方医师(含自己)录入 Weno 凭据——所有将通过 Weno eRx 开方的医师都必须设置凭据,否则 Weno eRx 小组件不会显示。
  6. 登出后重新登录,或点击配置面板中的Restart OpenEMR按钮,使顶部菜单生效:Admin → Other → Weno Management与Reports → Clients → Prescription Log将被启用。

四、Weno Primary Admin Section(必需,必须验证)

这是三大分区中唯一要求点击 "Validate and Save" 按钮完成提交的分区(其他分区均为值变更时自动保存)。

  • 所有字段都必须填写并通过验证。
  • 若邮箱/密码无效,验证会弹出对应告警提示。
  • 若加密密钥(Encryption Key)被判定无效,会弹出告警并启用 "Encryption Reset"(加密重置)按钮。处理顺序:先尝试重新输入密钥;若仍失败,点击 Reset 将创建一把新密钥。该变更会同步反映到管理员的主 Weno 账号,无需用户再做其他操作。
  • 可以把加密密钥理解为更常见的术语——API Token。

从源码 weno_setup.php 可以还原该分区的完整字段与校验逻辑:

  • 字段包括:weno_rx_enable(启用 Weno eRx 服务)、weno_rx_enable_test(启用测试模式,会在药房下载中自动包含测试药房)、weno_encryption_key(Weno 开发者页面签发的加密密钥)、weno_admin_username(Weno 登录邮箱,同时用于后台药房目录下载)、weno_admin_password。
  • 提交时先经CsrfUtils::checkCsrfInput校验 CSRF,再由 ModuleService::saveVendorGlobals() 将配置持久化到数据库。
  • 校验返回码语义(前端 JS 处理逻辑):false表示加密密钥未通过验证(显示 Reset 按钮);900表示 Admin 用户名/密码无效(提示回到 Weno Dashboard 修正);998/999表示网络连接问题。
  • 每次验证/保存都会通过 WenoLogService::insertWenoLog() 写入审计日志(如"Module setup modified."/"Primary Admin verify Encryption Key")。

4.1 验证的底层实现:XML 调用 Weno 服务端

WenoValidate.php 实现了与 Weno 服务端(https://online.wenoexchange.com/webapi/restapi/WenoManage)的通信:

  • 密码以md5()摘要形式出现在请求中,请求体为Manage_Accountschema 的 XML,其中<ValidateEncKey>携带加密密钥、<AdminUser><Email>/<MD5Password>携带管理员凭据。
  • requestEncryptionKeyReset()则构造<ResetEncKey>True</ResetEncKey>的 XML 请求,向服务端申请新密钥,再通过setNewEncryptionKey()写回数据库并更新全局配置。

4.2 Optional:User Setting Credentials 快捷子分区

同一面板中还有一个可选的快捷子分区(User Setting Subsection),用于快速为当前登录用户录入 Weno 处方凭据(weno_provider_email与weno_provider_password),其效果等同于在该用户的「User Settings」中配置 Weno 凭据,可节省逐个导航的时间。

五、Map Weno User Id's(必需,自动保存)

该分区呈现一张所有授权用户的表格,包含:

  • 用户名、姓名(Last/First);
  • 若已分配,显示其默认设施;未设置时显示提示"Please add Users Default Facility";
  • 一个输入框用于录入该用户的 Weno User ID(Uxxxx)。

此值的意义在于在 Weno 与 OpenEMR 用户之间建立关联关系,用于处方追踪。每当输入或修改 Weno User ID,值都会自动保存,无需点击保存按钮。

作为便利,每行提供一个编辑按钮(铅笔图标),点击后弹出对话框,以编辑模式打开该用户的 Users 设置,可直接修改任意设置(例如分配默认设施)——这等同于从顶部菜单Admin → Users选择对应的 Weno 处方医师进行编辑。

源码层面,weno_users.php 通过ModuleService::getWenoProviderUsers()查询可配置用户(排除gwstaff*/GS:前缀的 Greenway 迁移显示用户),保存时执行:

  • UPDATE users SET weno_prov_id = ? WHERE id = ?(写入 users 表的weno_prov_id字段);
  • INSERT INTO user_settings ... ON DUPLICATE KEY UPDATE写入global:weno_provider_uid。

六、Map Weno Facility Id's(必需,自动保存)

该分区将每个本地设施(facility)与 Weno 签发的 Location ID(Lxxxxx)一一对应。同样自动保存。需要说明的是,这份数据也可以在启用模块后从顶部菜单Admin → Other → Weno Management访问与维护。

setup_facilities.php 展示了具体实现:以表格列出facility表中的设施(名称、地址、城市),每个设施一行提供 Weno Location ID 输入框;变更时自动提交,执行UPDATE facility SET weno_id = ? WHERE id = ?——即 Weno Location ID 被持久化在 OpenEMRfacility表的weno_id列。

注意:处方用户应在其 User settings 中设置默认设施,这与 Weno User ID 分区一样,是形成 Weno 与 OpenEMR 设施关联、用于处方追踪的必需步骤。

七、其他配置途径(顶部菜单)

除了配置面板,同样的设置项还可从顶部菜单完成:

  1. Admin → Users:选择与 Weno User IDUxxx关联的用户,在Weno User ID字段中输入并保存。
  2. Admin → Other → Weno Management:为各设施(locations)录入分配的 Location IDLxxxxx。
  3. 患者顶栏用户图标 → Settings:向下滚动找到Weno按钮并点击,在Weno User Email与Weno User Password字段中输入用户名(邮箱)和密码并Save。

⚠️重要警告:若这些凭据缺失或错误,你将无法开具处方。

八、源码级原理:配置存储、后台服务与数据表

8.1 配置存储与加密

ModuleService.php 是配置读写核心:

  • 全局项(weno_rx_enable、weno_rx_enable_test、weno_encryption_key、weno_admin_username、weno_admin_password)存储在globals表中;
  • 用户项(weno_provider_email、weno_provider_password、weno_provider_uid)存储在user_settings表中(label 前缀global:);
  • 敏感值(加密密钥、Admin 密码、Provider 密码)在入库前通过ServiceContainer::getCrypto()的encryptForDatabase()加密,读取时decryptFromDatabase()解密。

isWenoConfigured()会检查四个必需项是否齐全(weno_rx_enable、weno_admin_username、weno_admin_password、weno_encryption_key),任一为空则返回 false 并把后台任务置为 inactive——这正是"未配置完成前模块无法启用"的实现保障。

8.2 后台服务(Background Services)

table.sql 注册了两个后台服务(位于background_services表):

服务名标题执行间隔函数说明
WenoExchangePharmaciesWeno Exchange Pharmacy1440 分钟(每日)downloadWenoPharmacy药房目录下载
WenoExchangeWeno Log Sync30 秒downloadWenoPrescriptionLog处方日志同步

两者的入口均为 scripts/weno_log_sync.php。ModuleService::setTaskState()/setModuleState()负责在模块启用、配置完整时将这些任务置为 active('1'),并在模块停用或配置缺失时置为'0'。

8.3 模块数据表

table.sql还定义了模块的三张数据表:

  • weno_pharmacy:药房目录快照,含 NCPDP、NPI、店名、地址、经纬度、电话、Test_Pharmacy测试标记、On_WENO等字段,NCPDP_safe唯一索引;
  • weno_assigned_pharmacy:患者(pid)的主/备选药房(primary_ncpdp/alternate_ncpdp),含is_history与search_persist字段;
  • weno_download_log:下载日志(value、status、created_at、data_in_context)。

8.4 事件与菜单注入

Bootstrap.php(模块启动类,MODULE_MENU_NAME = "Weno")通过 OpenEMR 事件分发器注册菜单(MenuEvent)、患者人口学渲染(药房分区)、全局设置项(GlobalsInitializedEvent)等,使Admin → Other → Weno Management、Reports → Clients → Prescription Log以及处方界面中的 Weno eRx 小组件在模块启用后出现在系统中。

九、启用后的验证与收尾

完成三区配置并通过验证后:

  1. 点击Enable启用模块,随后触发首次药房目录下载(由WenoExchangePharmacies后台任务驱动,日志可查weno_download_log)。
  2. 为所有处方医师在 User Settings 中录入 Weno 凭据(邮箱 + 密码)。
  3. 登出再登录,或点击配置面板中的Restart OpenEMR(等同浏览器刷新,用于生效新菜单与配置项)。
  4. 确认顶部菜单出现Admin → Other → Weno Management与Reports → Clients → Prescription Log;处方开具界面正常显示 Weno eRx 小组件。

十、常见问题速查

现象原因与处理
模块配置图标为红色、无法 EnablePrimary Admin 分区未完成验证;补齐四项必需值并通过 Validate
验证提示邮箱/密码无效(返回码 900)回到 Weno Dashboard 核对 Admin 账号,重新输入
加密密钥无效告警先重输密钥;仍失败则点击Encryption Reset生成新密钥(等价于重置 API Token)
网络告警(返回码 998/999)检查 OpenEMR 服务器到 Weno 服务端online.wenoexchange.com的连通性
处方医师无法开方 / 小组件不显示检查该用户在 User Settings 中的 Weno 邮箱与密码是否缺失或错误;并确认已映射 Weno User ID 与默认设施
卸载后重新安装配置丢失正常情况下配置持久化于数据库(globals/user_settings/facility),卸载不清库;若仍异常,可核对table.sql中的清理注释语句(DELETE FROM user_settings WHERE setting_label LIKE 'global:weno%'等,仅在需要彻底重置时执行)

通过以上步骤,即可在 OpenEMR 中完成 Weno eRx 模块的完整安装、管理员配置、医师凭据设置与后台服务启用,正式开启电子处方工作流。

  • 医疗健康
  • 后端

【免费下载链接】openemr

The most popular open source electronic health records and medical practice management solution.

项目地址:https://gitcode.com/GitHub_Trending/op/openemr
点击查看免费下载
上一篇:OpCore Simplify:智能黑苹果配置新体验
下一篇:CUB终极指南:如何快速掌握NVIDIA CUDA协同处理库

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询