概述
GNU Health 是由西班牙医生 Luis Falcón 于 2008 年在 GNU Solidario 的资助下开发的开源电子病历 (EMR) 和医院信息系统。 最初被设想为发展中国家的免费医院和健康信息系统,它目前重要在尼日利亚、加纳、印度尼西亚、西班牙、阿根廷、多米尼加共和国、牙买加、巴西、墨西哥、秘鲁、加蓬、喀麦隆、刚果、巴基斯坦、菲律宾和南非的诊所中使用。
该程序在 2011 年获得了自由软件奖,并在 2016 年获得了 OSBAR(开源商业奖)。
子系统
GNU Health 是用Python语言,基于Tryton平台软件包,它包含了:
- 计算机化病历系统 EMR - Electronic Medical Record
- 医院管理信息系统 HMIS - Hospital Management Information System
- 化验室信息管理系统 LIMS - Laboratory Information Management System
- 个人健康管理系统 PHR - Personal Health Record
因为基于开源理念,此系统是针对Linux为主,按官网上的说法,专门的客户端也是针对Linux的,Windows和Mac平台只能借用Tryton的客户端,至于是否有功能上的差异还有待考证。
GNU Health官方文档
GNUHealth 主要功能领域
GNUHealth 的主要领域是:
- 个人和社区管理:人口统计、住所单位、家庭、业务领域和部门,…
- 患者管理:社会经济学、生活方式、遭遇/评估、住院、实验室报告、临床病史……
- 健康中心管理:财务、库存、药房、实验室、病床、手术室、预约、供应链管理、人力资源、…
- 信息管理:报告、人口统计和流行病学
这些领域涉及多学科团队,具有不同的职责。 例如,社会工作者可以收集住所单位(domiciliary units)的个人人口统计和状态,卫生专业人员可以管理患者,行政人员和会计师可以管理卫生中心,并且可以处理卫生中心产生的信息 并由卫生部主管部门管理。
这只是一个例子,展示了 GNUHealth 中团队合作对于在您的社区中获得最佳结果的重要性。
部署 GNUHealth:集中式与分布式安装
GNUHealth 在功能、数据库大小和事务量方面是可扩展的。例如,您可以在单个医生办公室或国家公立医院网络中安装 GNUHealth。根据部署的类型,您将考虑集中式(单个实例)与分布式安装。
单个 GNUHealth 实例:所有信息都驻留在一个数据库中,可以通过网络从同一健康中心(局域网)或不同健康中心的不同工作站访问。
分布式 GNUHealth 实例:在这种场景下,每个健康中心都有自己的数据库实例,并且可以在健康中心之间同步信息。当您想在通信基础设施欠佳的医院网络中部署 GNUHealth 时,就会出现这种情况。
不用说,选择部署方法需要仔细研究超出本书范围的资源(硬件、网络、人力资源、安全和访问控制、备份和灾难恢复策略……)。这两种安装方式各有利弊。
遗传疾病、癌症、神经退行性疾病和自身免疫性疾病是当今世界面临的一些艰巨而难以捉摸的挑战。在基因组学和精准医学领域,许多天然变异体的临床意义未知,也就是说,我们仍然不知道它们的致病性或它们对我们健康的作用。此外,最重要的是,社会经济决定因素仍然是 50% 疾病的背后原因。
将健康视为多种因素和行为者相互作用的结果,这一点很重要。 GNUHealth 联盟将有关个人生物学、家族史、生活方式和环境/社会经济地位的信息放在一起并将其背景化。我们不能再只关注健康和疾病的分子基础,而忽视个人的环境、社会状况和生活方式,反之亦然。如果我们真的想在我们的健康系统和后代的健康方面进行一场革命,我们必须以跨学科的方式工作,对人采取全面的方法。凭借这种全球视野,以及通过联邦参与节点收集的所有信息,我们将更接近于确定这些自然变异的重要性,并希望我们能找到治愈方法。
GNUHealth 联盟项目旨在在不同地区和国家之间建立一个以社区为基础的联合健康网络,为什么不建立在全球各国之间。一个联合体可以任意大。从具有多个节点的小型区域联合网络,到具有数千/数百万参与节点的大型全国性健康网络。
当下的问题
大多数 EMR / HIS 都是事务性系统。他们在特定框架上工作,在机构上生成交易/流程,并将信息存储在本地数据库中。一些例子是医疗遭遇、处方、住院、库存管理或计费。主要目标是“完成工作”。
尽管这种方法可以在地方一级(例如,特定的卫生机构)起作用,但它有一些内在的问题,要知道:
互操作性问题:大多数系统设计为在该特定框架上工作,使得其他环境难以交换信息
数据分析问题:交易系统通常不擅长报告。用户通常需要编写具体的报告,而动态报告/或数据分析并非易事,对性能造成很大影响,影响机构的正常运作。
数据隔离:如今,健康信息学存在很多孤岛。每个机构都有自己的系统/系统,与其他机构完全疏远。这种隔离给公共卫生系统带来的好处非常有限。
基本概念
HMIS 和 LIMS Notes 节点
以下概念对于理解 GNU Health HMIS 和 LIMS 节点的工作方式至关重要。
- 该模型 model 定义了 GNU Health 中的每个对象。 模型定义数据库对象(表)。 gnuhealth.patient患者是一个典型的例子。
- 字段Field:模型的构建块。 例如:年龄和性别是 gnuhealth.patient 字段。
- 视图View:视图是模型在屏幕上的表示。 大多数模型都有一个单独的表单来接受数据到模型中并从模型中显示数据。
- 树Tree:模型的列表格式。 树视图允许我们搜索选择多条记录。
- 输入界面Form:模型在屏幕上的表示,允许您输入数据。
- 表 Table:数据库服务器上的模型表示。 模型 gnuhealth.patient 映射到 postgreSQL 中的 gnuhealth_patient 表中。
- 记录 Record:特定数据库表中的每个唯一条目。 例如,Ana Betz 是 PostgreSQL 中 gnuhealth_patient 表上的一条记录。
- 模块 Module:模块是提供特定功能的程序。 GNU Health 提供了不同的模块来满足您的健康中心需求。 模块的例子是社会经济学、遗传学和外科。 您应该只安装您的中心实际需要的模块。
- 报告 Report:报告允许您以 Open Document / LibreOffice 格式 (ODF)、便携式文档格式 (PDF) 甚至直接将文档动态打印到打印机。
导航区 Navigation Area
现在是识别 GNU Health Screen 组件的时候了。 在以下屏幕截图中,我们标记了主要部分:
- 主菜单Main Menu:我们可以在不同的功能之间导航。配置、患者、财务… 您可以通过按 Ctrl+T 来停用主菜单(在低分辨率设备中很有用)
- 选项卡Tabs:Tryton 允许您同时打开多个记录。屏幕截图的“选项卡”部分显示了当前表单。
- 操作Actions:在选项卡部分下,您会发现对当前记录起作用的不同图标。例如,您可以创建新记录、生成报告、更改视图、选择与该患者关联的相关记录(约会、实验室测试…)。
- 记录表Record form:这是您查看和输入信息的地方。请注意,您可以在表单的下半部分使用选项卡式表单(笔记本),这样可以快速轻松地导航。在此示例中,记录中的一些选项卡是主要、药物、疾病、手术、社会经济学和妇科信息。此表格的上侧是静态的,因此卫生专业人员始终可以看到有关患者的最相关信息。
- 状态栏Status bar:屏幕下方显示状态栏。从左到右,这些是字段:
- 用户名User name:在这种情况下,我们以管理员身份登录
- 机构名称Organization Name:GNU Solidario Hospital
- 请求Requests:Tryton 有一个内部消息系统。您将实时收到通知。
- 服务器信息Server Information:右下部分为您提供登录和服务器信息。在此示例中,它显示“admin@localhost:8000/demo”。 admin 是登录名,localhost 是 GNU Health 服务器的名称,8000 是连接的端口,demo 是数据库名称。
表单字段和字段类型 Form fields and field types
现在让我们来看看最相关的字段类型以及如何正确使用它们。 我们将以之前的患者截图为例。
- 文本字段Text fields :这些类型的字段允许我们输入大量信息。你会看到它们通常像大盒子一样。在我们的示例中,“Patient Allergies and Critical Information”下的字段是一个文本字段。
字符字段Character fields :这些类型的字段类似于文本字段,但大小有限。此示例中字符字段很少,并且没有。生活方式部分中的饮食类型或遗传学上的基因 ID 是字符字段的示例。 - 日期字段Date Fields:单击这些字段将打开一个日历,因此您可以选择日期。或者,您可以手动输入日期。出生日期是一个日期字段。
- 日期时间字段DateTime Fields:类似于日期字段,但增加了时间。该字段的一个示例是新生儿模块中的新生儿出生日期/时间。
- 整数字段Integer fields:这些字段只允许整数。它们默认显示“0”。一个例子是每天的体育锻炼分钟数
- 浮点字段Float fields:您可以输入十进制数字。体温是浮动场的一个例子。
- 函数字段Function fields:这些是特殊字段,因为它们是实时计算的,大部分时间取决于其他字段的值。例如,患者年龄是一个函数字段。请注意,该字段具有灰色背景,这意味着它是只读的。它将根据患者的出生日期计算当前患者的年龄(年/月/日)。函数字段的另一个示例是患者的住院状态。
- 选择字段Selection fields:这些字段可让您从选项列表中进行选择。例如,患者性别或血型是选择字段。这种类型的字段可以最大限度地减少打字错误。
- 关系字段Relational fields:这些字段从相关模型中检索信息。它们的形式为 One2Many 或 Many2One。关系字段对于保持数据的唯一性很重要。通过使用这种类型的字段,您可以将现有记录的 ID 链接到另一条记录,而无需重复信息。患者是一个关系(One2Many)字段。它与政党模型有关,从中获取所有管理数据(社会保险号、地址等…)。
- 快捷键Shortcuts:[F2]打开相关记录,[F3]新建记录
- 必填字段Required fields:这些字段是必填的。您必须输入信息,否则将不会保存记录。您可以快速识别必填字段,因为它们具有蓝色背景。患者字段是必填字段。
GNUHealth是一个非常专业的软件包,作为IT人很难用简单描述讲得清楚,下面的截图可以让读者很快地了解这个软件包的概貌和规模。
主菜单一
主菜单二
主菜单三
药品明细(局部)
疾病分类(局部)
疾病诊断(局部)
医学操作(局部)
实验室检验计量单位
用药频率
药品用药途径
职业
儿童增长曲线