跳转到主要内容

Plone的FHIR字段

项目描述

Egg Status Travis Build Status Test Coverage Python Versions Latest Version License https://img.shields.io/badge/code%20style-black-000000.svg

背景(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 的发布版本

示例: R4STU3

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

  1. 旧的索引现在不再可用!因为使用了新的 ES 服务器(6.x.x)。

  2. 备份现有的 Data.fs(非常重要!)。

  3. 从Plone控制面板,转到Elasticsearch设置页面 /@@elastic-controlpanel

  4. 再次转换目录,确保在 Indexes for which all searches are done through ElasticSearch 部分选择您想要的索引。

  5. 如果您的站点位于代理后面,我们建议使用 ssh隧道连接 您的站点。因为接下来需要很长时间(取决于您的数据大小)

  6. 重建目录 && 等待成功,如果遇到任何问题请重试。

1.0.0rc3 到 1.0.0rc4

  1. 保留现有Data.fs的备份(最好有)

  2. 转到Plone控制面板的插件设置

  3. 卸载并重新安装 plone.app.fhirfield

1.0.0b6 到 1.0.0rc3

  1. 保留现有Data.fs的备份(非常重要)

  2. 只需 清除并重建 现有的目录。转到网站管理 -> portal_catalog -> 高级标签,并点击 清除并重建 按钮。注意:此操作可能需要更长时间。

1.0.0bx 到 1.0.0b6

  1. 您需要删除所有基于 Fhir*******Index 的索引。转到ZMI到门户目录工具。 {site url}/portal_catalog/manage_catalogIndexes

  2. 更新 plone.app.fhirfield 版本并运行buildout。

  3. 列出任何定义为(profile/catalog.xml)索引基于 Fhir*******Index 作为元类型的已定义产品。重新安装它们所有。

  4. 从ZMI,门户目录工具, {site url}/portal_catalog/manage_catalogAdvanced 清除并重建

贡献者

变更日志

4.2.1 (2022-10-18)

错误修复

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)

改进

破坏

  • 任何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)

新功能

破坏

  • 弃用对 python 2.x.x 的支持。

2.0.0 (2019-05-18)

新功能

  • Issue#14 现在引用查询非常强大!现在可以通过资源类型单独搜索或混合搜索。

  • Issue#21 添加了一个强大的功能,搜索查询中的 IN/OR 支持。现在可以通过逗号分隔提供多个值。

破坏

  • 弃用 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 添加了对 AddressContactPoint 映射的支持。这打开了许多搜索参数。

  • 映射更加丰富,因此添加了许多缺失的映射,如 valueStringvalueQuantity 等。[nazrulworld]

  • Issue#12 已添加对 code 搜索参数类型的完全支持,这还打开了其他搜索参数(y)。

  • Issue#15 在搜索中支持 Humanane 映射。

1.0.0rc3 (2018-09-22)

改进

  • Issue: 6 进行了重大改进,现在版本非常精简(idresourceTypemeta)的 FHIR json 资源版本已索引在 ZCatalog(zope 索引)版本中,然而之前整个 fhir 资源都作为结果存储,现在大量节省存储空间,也许可以提高索引性能。 [nazrulworld]

1.0.0rc2 (2018-08-29)

错误修复

1.0.0rc1 (2018-08-27)

新功能

  • 标识符搜索参数现在已激活(标识符数组和单个对象标识符)。

  • 现在支持参考查询数组(例如 basedOn(参考列表))。

  • 生成了可搜索资源的所有可用映射。

  • FHIR 搜索排序功能可用!

  • fhirfield.es.index.mapping.nested_fields.limitfhirfield.es.index.mapping.depth.limitfhirfield.es.index.mapping.total_fields.limit 登记记录 可用于设置 ES 映射 设置

  • 基于 URINumber 类型的参数搜索完全可用。

  • `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)

  • FhirQuestionnaireResponseIndexFhirObservationIndexFhirProcedureRequestIndexFhirTaskIndexFhirDeviceRequestIndex 的映射进行了改进。

1.0.0b2 (2018-07-29)

新功能

  • 已添加对 elasticsearch 的支持。现在可以查询许多基本的 FHIR 搜索

  • 支持 22 个 FHIR 字段索引(例如 FhirActivityDefinitionIndexFhirAppointmentIndexFhirCarePlanIndexFhirDeviceIndexFhirDeviceRequestIndexFhirHealthcareServiceIndexFhirMedicationAdministrationIndexFhirMedicationDispenseIndexFhirMedicationRequestIndexFhirMedicationStatementIndexFhirObservationIndexFhirOrganizationIndexFhirPatientIndexFhirPlanDefinitionIndexFhirPractitionerIndexFhirProcedureRequestIndexFhirQuestionnaireIndexFhirQuestionnaireResponseIndexFhirRelatedPersonIndexFhirTaskIndexFhirValueSetIndex

  • 为所有可用的 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)

1.0.0a7 (2018-01-21)

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 (162.6 kB 查看哈希值)

上传时间 源代码

构建分发

plone.app.fhirfield-4.2.1-py2.py3-none-any.whl (193.1 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下支持