fhirpath在python中的实现。
fhirpath的Python项目详细描述
fhirpath公司
fhirpath在python中的实现。这个库是用类似于ORM的方法构建的。
- 支持多个提供商的引擎。现在Plone&;guillotina受到支持,不久将有更多支持。
- 支持多种方言,例如elasticsearch、GraphQL、postgresql。尽管现在已经支持elasticsearch
- 使用易于使用的api提供对FHIR Search的完全支持。
快速启动(guillotina)
此快速入门指南基于guillotina和elasticsearch以及附加的guillotina_elasticsearch依赖项。 如果不知道guillotina,就要有一个look at their nice document。 在项目依赖项中添加fhirpath和guillotina_elasticsearch。 从your app configuration file安装fhirpath.providers.guillotina_app。
我们假设您正确地配置了elasticsearch服务,并且有fhir内容类型,当然您最近也知道fhir
示例:添加内容:
class IOrganization(IFhirContent, IContentIndex): index_field( "organization_resource", type="object", field_mapping=fhir_resource_mapping("Organization"), fhirpath_enabled=True, resource_type="Organization", fhir_version=FHIR_VERSION.DEFAULT, ) index_field("org_type", type="keyword") org_type = TextLine(title="Organization Type", required=False) organization_resource = FhirField( title="Organization Resource", resource_type="Organization", fhir_version="R4" ) @configure.contenttype(type_name="Organization", schema=IOrganization) class Organization(Folder): """ """ index(schemas=[IOrganization], settings={}) resource_type = "Organization"
示例搜索:
>>> from guillotina.component import query_utility >>> from fhirpath.interfaces import ISearchContextFactory >>> from fhirpath.providers.guillotina_app.interfaces import IFhirSearch >>> search_context = query_utility(ISearchContextFactory).get( ... resource_type="Organization" ... ) >>> search_tool = query_utility(IFhirSearch) >>> params = ( ... ("active", "true"), ... ("_lastUpdated", "2010-05-28T05:35:56+00:00"), ... ("_profile", "http://hl7.org/fhir/Organization"), ... ("identifier", "urn:oid:2.16.528.1|91654"), ... ("type", "http://hl7.org/fhir/organization-type|prov"), ... ("address-postalcode", "9100 AA") ... ) >>> fhir_bundle = await search_tool(params, context=search_context) >>> fhir_bundle.total == len(fhir_bundle.entry)
fhirpath查询示例:
>>> from fhirpath.providers.guillotina_app.interfaces import IElasticsearchEngineFactory >>> from guillotina.component import query_utility >>> from fhirpath.enums import SortOrderType >>> from fhirpath.fql import Q_ >>> from fhirpath.fql import T_ >>> from fhirpath.fql import V_ >>> from fhirpath.fql import sort_ >>> engine = query_utility(IElasticsearchEngineFactory).get() >>> query_builder = Q_(resource="Organization", engine=engine) >>> query_builder = ( ... query_builder.where(T_("Organization.active") == V_("true")) ... .where(T_("Organization.meta.lastUpdated", "2010-05-28T05:35:56+00:00")) ... .sort(sort_("Organization.meta.lastUpdated", SortOrderType.DESC)) ... .limit(20) ... ) >>> query_result = query_builder(async_result=True) >>> result = query_result.fetchall() >>> result.header.total == 100 True >>> len(result.body) == 20 True >>> async for resource in query_result: ... assert resource.resource_type == "Organization"
学分
这个包框架是用Cookiecutter和audreyr/cookiecutter-pypackage项目模板创建的
版权所有HL7?徽标、FHIR?徽标和火焰是注册商标 属于Health Level Seven International
历史记录
0.1.1(2019-08-15)
- 第一个工作版本已经发布。当然不是全功能的
0.1.0(2018-12-15)
- PyPI上的第一个版本(只是注册用途,根本不可用,下一个版本即将发布)