dcarbone / php-fhir
用于从HL7 FHIR规范创建PHP类的工具
Requires (Dev)
- ext-dom: *
- ext-xmlreader: *
- ext-xmlwriter: *
- monolog/monolog: ^3.2.0
- phpunit/phpunit: ^10.5 || ^11.0
Suggests
- ext-zip: To enable unzipping of downloaded source files
Replaces
- php-fhir/common: *
- php-fhir/component-tests: *
- php-fhir/elements: *
- php-fhir/object-mapper: *
- php-fhir/parser: *
- php-fhir/resources: *
- php-fhir/utilities: *
- dev-main
- v3.2.0
- v3.1.0
- v3.0.6
- v3.0.5
- v3.0.4
- v3.0.3
- v3.0.2
- v3.0.1
- v3.0.0
- v3.0.0-rc8
- v3.0.0-rc7
- v3.0.0-rc6
- v3.0.0-rc5
- v3.0.0-rc4
- v3.0.0-rc3
- v3.0.0-rc2
- v3.0.0-rc1
- v2.x-dev
- v2.0.10
- v2.0.9
- v2.0.8
- v2.0.7
- v2.0.6
- v2.0.5
- v2.0.4
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- v1.x-dev
- v1.0.7
- v1.0.6
- v1.0.5
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- 0.5.x-dev
- 0.5.2
- 0.5.1
- 0.5.0
- 0.4.x-dev
- 0.4.5
- 0.4.4
- 0.4.3
- 0.4.2
- 0.4.1
- 0.4.0
- 0.3.x-dev
- 0.3.3
- 0.3.2
- 0.3.1
- 0.3.0
- 0.2.0
- 0.1.2
- 0.1.1
- 0.1.0
- dev-dependabot/composer/composer-28cd56bd59
- dev-feature/api-client
- dev-dcarbone/configurable-default-xml-loc
- dev-feature/efficient-construct
- dev-feature/arbitrary-fields
This package is auto-updated.
Last update: 2024-09-24 16:47:15 UTC
README
用于从HL7 FHIR规范创建PHP类的工具
如果你打算使用由这个库生成的类,你可能需要使用php-fhir-generated仓库。
作为独立生成器安装
如果你想将此包作为独立生成器使用
- 检查所需的分支或标签
- 从项目目录的根目录执行
composer install
- 执行
./bin/generate.sh
- 回答所有提示
- 如果没有定义自定义配置文件,定义将下载到
./input
,而类将在./output
下生成 - 你可以执行
./bin/generate.sh --help
以获取有关如何使用此脚本的信息 - 你可以通过修改./bin/config.php中的值来配置此脚本的各种方面
- 如果没有定义自定义配置文件,定义将下载到
此脚本将下载配置的FHIR主要版本到input
文件夹,并在output
文件夹中为每个版本生成类。
作为库安装
如果你想将生成器作为项目的一部分使用,你可以将其作为composer依赖项包含
composer require dcarbone/php-fhir
从那里,你可以参考示例块以了解如何配置和执行生成器。
版本表
基本用法
第一步是确定你的实现支持的FHIR规范版本。一旦完成,从http://hl7.org/fhir/directory.html下载适当的类定义XSD。
解压XSD并将其放置在PHP运行时用户可读的目录中。
接下来是乐趣所在
类生成
此库中包含的类生成器实用程序旨在将FHIR组提供的XSD解析成PHP类,包括标记和类型提示。
关于本节有两个重要事项需要注意
- 你的具体实现可能会不同,如果你需要帮助,请不要犹豫
- 类生成应针对每个FHIR版本运行一次。一旦生成了类,就只有在服务器切换到新的FHIR规范时才应重新生成
生成示例
你可以在此处查看示例配置数组:bin/config.php。
// first, build new configuration class $config = new \DCarbone\PHPFHIR\Config(require 'config.php'); // next, iterate through all configured versions and render code: foreach ($config->getVersions() as $versionConfig) { $versionConfig->getDefinition()->getBuilder()->render(); }
数据查询
目前仅生成一个非常简单的客户端,用于调试目的。未来的目标是为客户端生成更全面的功能。
响应解析
在上述类生成过程中,将创建并添加到根命名空间目录中的响应解析类PHPFHIRResponseParser
。它目前支持JSON和XML响应类型。
解析器类接受一个可选的布尔参数,该参数用于确定是否尝试加载生成的自动加载器类。默认情况下,它将这样做,但您可以根据自己的需求配置自己的自动加载器,而不必使用生成的自动加载器。
解析示例
require 'path to PHPFHIRResponseParserConfig.php'; require 'path to PHPFHIRResponseParser.php'; // build config $config = new \YourConfiguredNamespace\PHPFHIRConfig([ 'registerAutoloader' => true, // use if you are not using Composer 'libxmlOpts' => LIBXML_NONET | LIBXML_BIGLINES | LIBXML_PARSEHUGE | LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD | LIBXML_NOXMLDECL // choose different libxml arguments if you want, ymmv. 'rootXmlns' => 'https://hl7.org/fhir', // a specific root xmlns to use, if the source does not return one 'overrideSourceXmlns' => true, // set this to true if you want the 'rootXmlns' value you defined to override any value seen from source ]); // build parser $parser = new \YourConfiguredNamespace\PHPFHIRResponseParser($config); // provide input, receive output. $object = $parser->parse($yourResponseData);
序列化
JSON序列化
$json = json_encode($object);
XML序列化
// To get an instance of \XMLWriter... $xw = $object->xmlSerialize(null, $yourConfigInstance); // to get as XML string... $xml = $xw->outputMemory(true); // you can alternatively have the output written directly to a file: $xw = new \YourConfiguredNamespace\PHPFHIRXmlWriter(); $xw->openUri('file:///some/directory/fhir-resource.xml'); $object->xmlSerialize($xw, $yourConfigInstance);
XML序列化使用XMLWriter。
测试
在根命名空间和输出目录下,作为类生成的一部分,创建了一个名为 PHPFHIRTests
的目录和命名空间。
待办事项
- 实现基于事件或拉取的XML解析以处理大响应
建议和帮助
如果您对这个库如何使其更有用、更适用、更容易使用等有任何建议,请告诉我。