gids-open-standaarden / open-pgo-medmij-implementatie-bouwstenen-php
MedMij OpenPGO 建块 PHP 实现。
Requires
- php: >=7.0
- guzzlehttp/guzzle: ^6.0
- jms/serializer: ^1.13
- league/oauth2-client: ^2.3
- psr/http-message: ^1.0
- webmozart/assert: ^1.3
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.13
- phpstan/phpstan: ^0.10.6
- phpunit/phpunit: ^7.2
This package is auto-updated.
Last update: 2021-06-20 15:38:14 UTC
README
亲爱的读者,已决定归档此存储库。原因是 OpenPGO-Medmij-ImplementatieBouwstenen-PHP 没有被使用,并且包括安全漏洞在内的维护已被推迟。如果您希望使用此适配器,请联系 GIDS:info@gidsopenstandaarden.org。
gids-open-standaarden/open-pgo-medmij-implementatie-bouwstenen-php
MedMij OpenPGO 建块 PHP 实现。
版本指南
此库遵循语义版本控制。Afspraken 集的版本映射到库的版本如下
版本 Afsprakenet | 状态 | 库版本 |
---|---|---|
Afsprakenset 版本 1.1 | 最新 | 0.2.* |
Afsprakenset 版本 1.0 | 已弃用 | 0.1.* |
安装
可以使用Composer安装 OpenPGO PHP 适配器。
$ composer require gids-open-standaarden/open-pgo-medmij-implementatie-bouwstenen-php ~0.2
配置
构建块使用 HTTP 客户端(Guzzle)进行连接。
例如,可以按如下方式构建 Whitelist 客户端
$whitelistClient = new \MedMij\OpenPGO\Whitelist\WhitelistClient( new \GuzzleHttp\Client(), 'whitelist endpoint' );
用例
检索白名单
请参阅https://github.com/GidsOpenStandaarden/OpenPGO/blob/master/Resources/UCI%20Opvragen%20Whitelist.pdf
可以使用 WhitelistClient
检索 Whitelist
。
$whitelist = $whitelistClient->getWhitelist();
WhitelistService
提供了一个便捷方法 isMedMijNodeWhitelisted
来检查给定的节点是否在白名单中。
$service = new \MedMij\OpenPGO\Whitelist\WhitelistService($whitelistClient); $service->isMedMijNodeWhitelisted('specimen-stelselnode.medmij.nl');
检索 OCL
请参阅https://github.com/GidsOpenStandaarden/OpenPGO/blob/master/Resources/UCI%20Opvragen%20OCL.pdf
可以使用 OAuthClientListClient
检索 OAuthclientlist
。
$client = new \MedMij\OpenPGO\OCL\OAuthClientListClient( new \GuzzleHttp\Client(), 'OAuth Client List endpoint' ); $client->getOAuthClientList();
OAuthClientService
提供了一个便捷方法 getOAuthClientByHostname
,通过唯一的 hostname 获取 OAuthClient
。
$service = new \MedMij\OpenPGO\OCL\OAuthClientService($client); $service->getOAuthClientByHostname('medmij.deenigeechtepgo.nl');
检索 ZAL
请参阅https://github.com/GidsOpenStandaarden/OpenPGO/blob/master/Resources/UCI%20Opvragen%20ZAL.pdf
可以使用 ZALClient
检索 Zorgaanbiederslijst
。
$client = new \MedMij\OpenPGO\ZAL\ZALClient( new \GuzzleHttp\Client(), 'ZAL endpoint' ); $client->getZAL();
ZorgaanbiederService
提供了一个便捷方法 getZorgaanbiederByName
,通过唯一的名称获取 Zorgaanbieder
。
$service = new \MedMij\OpenPGO\ZAL\ZorgaanbiederService($client); $service->getZorgaanbiederByName('umcharderwijk@medmij');
检索 Gegevensdienstnamenlijst
可以使用 GegevensdienstnamenlijstClient
检索 Gegevensdienstnamenlijst
。
$client = new \MedMij\OpenPGO\GNL\GegevensdienstnamenlijstClient( new \GuzzleHttp\Client(), 'gegevensdienstnamenlijst endpoint' ); $client->getGegevensdienstnamenlijst();
《GegevensdienstnamenlijstService》提供了一个便利方法 getGegevensdienstById
,通过唯一标识符获取一个 Gegevensdienst
。
$service = new \MedMij\OpenPGO\GNL\GegevensdienstnamenlijstService($client); $service->getGegevensdienstById(42);
OAuth
此库为三脚OAuth 2认证提供了构建模块。
PGO GW可以使用配置了OAuthclient的ZorgaanbiederProvider
与ZA GW进行认证,该OAuthclient列在OAuthClientList中。
- 一个Gegevensdienst列在Zorgaanbiederslijst中。
$oAuthClient = new OAuthClient('medmij.deenigeechtepgo.nl', 'De Enige Echte PGO'); $gegevensdienst = new Gegevensdienst( '4', new AuthorizationEndpoint('https://medmij.nl/dialog/oauth'), new TokenEndpoint('https://medmij.nl/token'), [] ); $zorgaanbieder = (new ZorgaanbiederProviderFactory())->create($oAuthClient, $gegevensdienst);
第1步. 应用程序将用户重定向到服务进行授权
header('Location: ' . $provider->getAuthorizationUrl(); exit;
注意:存储状态($provider->getState())以防止重放攻击。
第2步. 用户登录到服务并授予应用程序访问权限。
第3步. 服务将用户重定向回redirect_url。
第4步. 应用程序使用代码并交换它以获取访问令牌。
$provider->getAccessToken('authorization_code', [ 'code' => '1234' ]);
开发
克隆此存储库并运行composer install
来安装依赖项。
测试
此库使用PHPUnit进行测试。
可以使用此命令执行测试
vendor/bin/phpunit