Plone的FHIR字段
项目描述
背景(plone.app.fhirfield)
FHIR(快速医疗互操作性资源)是医疗保健系统的行业标准。我们的目的是使用Plone实现基于FHIR的系统!plone.app.fhirfield将使创建和管理FHIR资源以及搜索任何FHIR资源变得更容易。
工作原理
此字段与其他zope.schema字段一样工作,只需添加和使用它。您可以通过网页表单或任何restapi客户端以json字符串或FHIR资源的python字典形式向字段提供值。此字段具有内置的FHIR资源验证器和解析器。
示例
from plone.app.fhirfield import FhirResource from plone.supermodel import model class IMyContent(model.Schema): <resource_type>_resource = FhirResource( title=u'your title', desciption=u'your desciption', fhir_release='any of FHIR release name' resource_type='any fhir resource type[optional]' )
该字段的值是上下文中一个特定类 FhirResourceValue 的实例,这相当于 fhir 模型 的代理类,具有额外的方法和属性。
功能
Plone restapi 支持
小部件:z3cform 支持
plone.supermodel 支持
plone.rfc822 marsher 字段支持
可用字段的选项
此字段具有所有标准选项(例如 标题、必填、描述 等),以及与 FHIR 相关的用于验证或约束的额外选项。
- fhir_release
必填:是
默认值:无
类型:字符串
FHIR 的发布版本
示例: R4、STU3
- resource_type
必填:否
默认值:无
类型:字符串
FHIR 资源名称可以用作约束,这意味着我们只能接受某些资源。如果提供的 FHIR json 包含其他资源类型,将引发验证错误。示例:FhirResource(….,resource_type=’Patient’)
- model
必填:否
默认值:无
类型:字符串 + 模型类的完整 Python 路径(点分隔)。
与 resource_type 选项类似,它可以用作约束,此外,此选项还允许我们使用除 fhirclient 的模型之外的自定义模型类。示例:FhirResource(….,model=’fhirclient.models.patient.Patient’)
- index_mapping
必填:否
默认值:无
类型:JSON
自定义索引映射,最佳情况是 elasticsearch 映射。默认映射将被自定义映射替换。
字段值 API
字段值是一个特定的类 plone.app.fhirfield.value.FhirResourceValue,它负责充当 fhirclient 模型的类 的代理。此类提供了一些强大的方法。
FhirResourceValue::json
最初此方法是从 fhir 基础模型派生出来的,你将始终在协商过程中使用此方法(尽管我们的序列化器会为你自动执行此操作)。此方法不接受任何参数,它返回资源的 FHIR json 表示形式。
FhirResourceValue::patch
如果你熟悉 FHIRPath Patch,则此方法是此类中最强大的武器之一。在任何 FHIR 资源上应用补丁非常简单。此方法需要一个强制参数 patch_data,该值应为补丁项的列表(jsonpatch)。
示例
from plone.app.fhirfield import FhirResource from plone.supermodel import model class ITask(model.Schema): resource = FhirResource( title=u'your title', desciption=u'your desciption', resource_type='Task' ) patch_data = [ {'op': 'replace', 'path': '/source/display', 'value': 'Patched display'}, {'op': 'replace', 'path': '/status', 'value': 'Reopen'} ] task_content.resource.patch(patch_data)
FhirResourceValue::stringify
此方法返回 FHIR 资源 json 值的字符串表示形式。通常 as_json 返回 Python 的字典类型数据。此方法接受可选参数 prettify,通过设置此参数为 True,方法将返回人类/打印友好的表示形式。
FhirResourceValue::foreground_origin
可能存在某些情况,你需要一个纯 FHIR 模型的实例,此方法即为此目的。此方法返回当前 FHIR 资源模型实例。
示例
from fhirclient.models.task import Task from plone.app.fhirfield import FhirResource from plone.supermodel import model class ITask(model.Schema): resource = FhirResource( title=u'your title', desciption=u'your desciption', resource_type='Task' ) task = task_content.resource.foreground_origin() assert isinstance(task, Task)
安装
通过将其添加到你的 buildout 中安装 plone.app.fhirfield
[buildout] ... eggs = plone.app.fhirfield
然后运行 bin/buildout。转到 plone 控制台并安装 plone.app.fhirfield 或如果你正在创建一个依赖于此产品的插件,你可以在 metadata.xml 中的 profiles 添加 <dependency>profile-plone.app.fhirfield:default</dependency>。
链接
代码仓库
持续集成
问题跟踪器
许可证
该项目采用 GPLv2 许可。
迁移
1.0.0 到 2.0.0
旧的索引现在不再可用!因为使用了新的 ES 服务器(6.x.x)。
备份现有的 Data.fs(非常重要!)。
从Plone控制面板,转到Elasticsearch设置页面 /@@elastic-controlpanel。
再次转换目录,确保在 Indexes for which all searches are done through ElasticSearch 部分选择您想要的索引。
如果您的站点位于代理后面,我们建议使用 ssh隧道连接 您的站点。因为接下来需要很长时间(取决于您的数据大小)
重建目录 && 等待成功,如果遇到任何问题请重试。
1.0.0rc3 到 1.0.0rc4
保留现有Data.fs的备份(最好有)
转到Plone控制面板的插件设置
卸载并重新安装 plone.app.fhirfield
1.0.0b6 到 1.0.0rc3
保留现有Data.fs的备份(非常重要)
只需 清除并重建 现有的目录。转到网站管理 -> portal_catalog -> 高级标签,并点击 清除并重建 按钮。注意:此操作可能需要更长时间。
1.0.0bx 到 1.0.0b6
您需要删除所有基于 Fhir*******Index 的索引。转到ZMI到门户目录工具。 {site url}/portal_catalog/manage_catalogIndexes。
更新 plone.app.fhirfield 版本并运行buildout。
列出任何定义为(profile/catalog.xml)索引基于 Fhir*******Index 作为元类型的已定义产品。重新安装它们所有。
从ZMI,门户目录工具, {site url}/portal_catalog/manage_catalogAdvanced 清除并重建
贡献者
Md Nazrul Islam(作者),email2nazrul@gmail.com
变更日志
4.2.1 (2022-10-18)
错误修复
问题-37:无法为fhirfield添加默认值。
4.2.0 (2020-12-07)
改进
字段反序列化器现在接受 fhir.resources 的模型对象、FhirResourceValue,以及字符串和字典类型值。
FhirResource::from_resource_model 方法已添加。
4.1.0 (2020-09-08)
改进
没有明显改进,但清理了大量的未使用、不必要的代码,这使其版本更精简。
破坏
api 模块已被删除,请使用来自 plone.app.fhirfield 的任何导入。
IFhirResourceModel 接口不再可用。
4.0.0 (2020-08-17)
改进
支持通过 pydantic 驱动的最新 fhir.resources,通过 fhirpath。
支持Python 3.6。
破坏
任何FHIR搜索、FhirFieldIndex、EsFhirFieldIndex都被删除。请参阅 collective.fhirpath 了解这些实现。
model_interface 参数已从 FhirResource 字段中删除。
删除了三个 fhirfield.es.index.mapping 注册表。
从 setup.py 中删除了额外的选项 elasticsearch。
3.1.1 (2020-05-15)
没有变化,但更新了一些文档。
3.1.0 (2020-05-14)
破坏
停止支持直到 3.6.x 的 Python 版本
FhirResource.get_fhir_version 已更改为 FhirResource.get_fhir_release,不再返回枚举成员,而是只返回字符串值。
必需的 FhirResource 初始化参数 fhir_version 已更改为 fhir_release。
移除辅助函数
plone.app.fhirfield.helpers.resource_type_str_to_fhir_model 使用 fhirpath.utils.lookup_fhir_class。
plone.app.fhirfield.helpers.search_fhir_model 使用 fhirpath.utils.lookup_fhir_class_path
plone.app.fhirfield.helpers.import_string 使用 fhirpath.utils.import_string
3.0.0 (2020-03-18)
改进
Elasticsearch映射已更新为正确值。
3.0.0b2 (2019-11-12)
新功能
完全兼容 collective.fhirpath。
可以通过 FhirResource 字段提供自定义索引映射。
破坏
fhir_version 的值是必填的,因此您需要提供 FHIR 版本号。
弃用
使用 PluginIndexes (EsFhirFieldIndex) 已被弃用。
通过 portal_catalog 进行 FHIR 搜索已被弃用。
使用本项目中的 Elasticsearch 映射已被弃用。
3.0.0b1 (2019-10-01)
新功能
通过 FHIRPath 添加了 collective.fhirpath 支持。
现在支持 Elasticsearch 服务器版本 6.8.3。
破坏
弃用对 python 2.x.x 的支持。
2.0.0 (2019-05-18)
新功能
破坏
弃用 Elastic 服务器版本 2.3.x。
错误修复
对 Quantity 搜索类型的重要修复,现在值前缀不会影响其他(单位、系统)。此外,现在还可以通过单位或系统以及代码(无值)进行搜索。
1.0.0 (2019-01-18)
重大更改
弃用 fhirclient 依赖项,而是创建 fhir.resources 依赖项。
collective.elasticsearch 的最低版本 2.0.5 已锁定。
1.0.0rc4 (2018-10-25)
重大更改
弃用对 Plone 4.xx 的支持(抱歉)。
改进
Issue#10 在显示模式中添加了 JSON 查看器。
Issue#18 api 模块现在可用于所有公共可用方法、函数和类。
Issue#17 添加了对查询字符串中重复参数名称的支持。现在可以为同一参数类型提供多个条件。例如 ?_lastUpdated=gt2015-10-15T06:31:18+00:00&_lastUpdated=lt2018-01-15T06:31:18+00:00
Issue#10 添加了对 Composite 类型 FHIR 搜索参数的支持。
Issue#13 添加了对 Address 和 ContactPoint 映射的支持。这打开了许多搜索参数。
映射更加丰富,因此添加了许多缺失的映射,如 valueString、valueQuantity 等。[nazrulworld]
Issue#12 已添加对 code 搜索参数类型的完全支持,这还打开了其他搜索参数(y)。
Issue#15 在搜索中支持 Humanane 映射。
1.0.0rc3 (2018-09-22)
改进
Issue: 6 进行了重大改进,现在版本非常精简(id、resourceType、meta)的 FHIR json 资源版本已索引在 ZCatalog(zope 索引)版本中,然而之前整个 fhir 资源都作为结果存储,现在大量节省存储空间,也许可以提高索引性能。 [nazrulworld]
1.0.0rc2 (2018-08-29)
错误修复
Issue 5: FHIR 搜索的修饰符 'missing' 对嵌套映射不起作用
1.0.0rc1 (2018-08-27)
新功能
标识符搜索参数现在已激活(标识符数组和单个对象标识符)。
现在支持参考查询数组(例如 basedOn(参考列表))。
生成了可搜索资源的所有可用映射。
FHIR 搜索排序功能可用!
fhirfield.es.index.mapping.nested_fields.limit、fhirfield.es.index.mapping.depth.limit 和 fhirfield.es.index.mapping.total_fields.limit 登记记录 可用于设置 ES 映射 设置
基于 URI 和 Number 类型的参数搜索完全可用。
`resourceType` 过滤器会自动注入到每个生成的查询中。 查询构建器知道应该使用哪个 resourceType。
重大变更
plone.app.fhirfield 必须安装,因为引入了一些注册记录(设置)用于 elasticsearch 映射。
除了 FhirFieldIndex 以外的所有已弃用 FHIR 字段索引(例如 FhirOrganizationIndex 等)已被移除
1.0.0b7 (2018-08-10)
plone.app.fhirfield.SearchQueryError 异常类可用,它将用于捕获任何 FHIR 查询构建错误。[nazrulworld]
1.0.0b6 (2018-08-04)
修复:在调用不存在的方法时出现的轻微类型错误。
已添加迁移指南。[nazrulworld]
1.0.0b5 (2018-08-03)
新功能
FhirFieldIndex 目录索引已被重构。现在这个类能够处理所有 FHIR 资源。这就是为什么其他与 FhirField 相关的 PluginIndexes 已被弃用。
引入了新的 ZCatalog(plone 索引)索引命名约定。FhirFieldIndex 的任何索引名称都必须以 FHIR 资源类型名称为前缀。例如: task_index
1.0.0b4 (2018-08-01)
必须更新(修复):在映射中进行了重要更新,如果值包含 /,则引用字段映射将无法工作,现在通过指示索引是 not_analyzed 来对其进行标记化。
_profile 搜索参数现在可用。[nazrulworld]
1.0.0b3 (2018-07-30)
对 FhirQuestionnaireResponseIndex、FhirObservationIndex、FhirProcedureRequestIndex、FhirTaskIndex、FhirDeviceRequestIndex 的映射进行了改进。
1.0.0b2 (2018-07-29)
新功能
已添加对 elasticsearch 的支持。现在可以查询许多基本的 FHIR 搜索。
支持 22 个 FHIR 字段索引(例如 FhirActivityDefinitionIndex、FhirAppointmentIndex、FhirCarePlanIndex、FhirDeviceIndex、FhirDeviceRequestIndex、FhirHealthcareServiceIndex、FhirMedicationAdministrationIndex、FhirMedicationDispenseIndex、FhirMedicationRequestIndex、FhirMedicationStatementIndex、FhirObservationIndex、FhirOrganizationIndex、FhirPatientIndex、FhirPlanDefinitionIndex、FhirPractitionerIndex、FhirProcedureRequestIndex、FhirQuestionnaireIndex、FhirQuestionnaireResponseIndex、FhirRelatedPersonIndex、FhirTaskIndex、FhirValueSetIndex)
为所有可用的 FHIR 索引创建了映射。
elasticsearch 选项现在可用于 setup.py
1.0.0b1 (2018-03-17)
已发布第一个 beta 版本。
1.0.0a10 (2018-03-12)
修复(错误)Issue-3:资源类型约束不会从验证器引发异常。
1.0.0a9 (2018-03-08)
对 FHIR 资源没有限制/限制,所有可用的模型都受支持。
1.0.0a8 (2018-01-22)
修复(错误)Issue-:空字符串值引发 JSON 验证错误 #2:https://github.com/nazrulworld/plone.app.fhirfield/issues/2
1.0.0a7 (2018-01-21)
修复(错误)Issue-1:在表单视图调用 Python 对象时超出最大递归深度。#1:https://github.com/nazrulworld/plone.app.fhirfield/issues/1
1.0.0a6 (2018-01-14)
已添加支持的模型 HealthcareService 作为缺失的 FHIR 模型。
1.0.0a5 (2018-01-14)
Person FHIR 模型添加到白名单中。
1.0.0a4 (2018-01-14)
IFhirResource.model_interface 字段类型从 InterfaceField 更改为 DottedName。
1.0.0a3 (2017-12-22)
添加了对 FHIR Patch 的支持。现在管理 FHIR 资源的补丁更加容易。
已确认 plone.supermodel 支持。[nazrulworld]
plone.rfc822 marshaler 字段支持。[nazrulworld]
1.0.0a2 (2017-12-10)
FhirResourceWidget 已处于工作状态。从现在起,可以与 z3c.form 适配 FhirResourceWidget。[nazrulworld]
1.0.0a1 (2017-12-05)
首次发布。[nazrulworld]
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源代码分发
构建分发
plone.app.fhirfield-4.2.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | da0355045cc8925c76c14c45e76f0e5ce1aeeb899273c4eb07d5a969f33f4e98 |
|
MD5 | 257cfc661558974a495ff5e1879f8e98 |
|
BLAKE2b-256 | cf65c645ff82f32d1d7ef38d15917d61489857bd553fc8e4fd93a871d9d93d3b |
哈希值 用于 plone.app.fhirfield-4.2.1-py2.py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | afe2727d8e193ce8c6bf9c6be0ba1284cdf19abd089d7ad19cacb95f7831d61b |
|
MD5 | 39dd7845dd6d61f3d20e4e02eff16ed0 |
|
BLAKE2b-256 | 8d51318053cfc3e8493cd9ed751b8020fbda9fb145b4e7c5fed165ce44190f4a |