gids-open-standaarden/open-pgo-medmij-implementatie-bouwstenen-php

此包已被废弃且不再维护。未建议替代包。

MedMij OpenPGO 建块 PHP 实现。

0.2.0 2018-12-19 11:09 UTC

This package is auto-updated.

Last update: 2021-06-20 15:38:14 UTC


README

亲爱的读者,已决定归档此存储库。原因是 OpenPGO-Medmij-ImplementatieBouwstenen-PHP 没有被使用,并且包括安全漏洞在内的维护已被推迟。如果您希望使用此适配器,请联系 GIDS:info@gidsopenstandaarden.org

Build Status

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