Client PHP pour SADV
La librairie sadv-client
vous permet de :
- générer un formulaire de profil santé pour personnaliser les recommandations vaccinales d’un patient donné ;
- interroger le service de recommandations vaccinales pour obtenir les recommandations vaccinales d’un patient donné.
PHP
Pré-requis
- L’outil composer doit être installé ;
- Un token d’authentification doit être fourni par Syadem (contactez developers@mesvaccins.net afin d’obtenir un token d’authentification) ;
- PHP 7.4 ou supérieur.
Exemples
L’exemple qui va suivre permet d’afficher le contenu du formulaire de profil santé sous la forme suivante :
Obtention et affichage d’un formulaire de profil santé
Chargement de la nomenclature de profil santé et initialisation du client
# Charge la nomenclature de profil santé
# Nécessaire afin d'afficher les conditions référencées dans le formulaire de profil santé
$profileNomenclature = Syadem\VaccinationProfile\Container::init();
# Obtention d'un jeton d'accès pour pouvoir interroger le service de recommandations vaccinales
$token_client = new GuzzleHttp\Client();
$response = $token_client->request(
'POST',
'https://auth.integration.mesvaccins.net/realms/professional/protocol/openid-connect/token',
[
'auth' => [$_ENV['CLIENT_ID'], $_ENV['CLIENT_SECRET']],
'form_params' => ['grant_type' => 'client_credentials']
]
);
$access_token = json_decode($response->getBody()->getContents())->access_token;
# Instantiation d'un objet de configuration
$api_config = new \Syadem\SadvClient\Configuration();
$api_config->setHost('https://api.fr.sad.mesvaccins.net');
$api_config->setAccessToken($access_token);
# Instantiation d'un objet de client d'API
$api = new Syadem\SadvClient\Api\SadvApi(
new GuzzleHttp\Client(),
$api_config
);
Obtention du formulaire de profil santé
# Obtention du formulaire de profil santé
$profil_questionnaire_body = new \Syadem\SadvClient\Model\ProfilQuestionnaireBody(
[
'patient' => [
'birthdate' => '2000-01-01',
'gender' => 'm',
'prevention_acts' => [],
'conditions' => []
]
]
);
try {
$questionnaire_sections = $api->profilQuestionnaire($profil_questionnaire_body);
} catch (Exception $e) {
echo 'Exception when calling SadvApi->profilQuestionnaire: ', $e->getMessage(), PHP_EOL;
exit(1);
}
Affichage du formulaire de profil santé
On parcourt récursivement les sections du formulaire de profil santé et on affiche les conditions associées à chaque section.
function print_questionnaire_section(FilteredSection $section)
{
global $profileNomenclature;
$title = $section->getTitle();
$titleFr = isset($title['fr']) ? $title['fr'] : "[Titre manquant]";
echo '<b>' . $titleFr . "</b> <span>(id=" . $section->getId() . ')</span>';
echo '<ul>';
if (count($section->getConditions()) > 0) {
echo '<li>';
echo '<b>Conditions</b>';
echo '<ul>';
foreach ($section->getConditions() as $condition) {
$full_condition = $profileNomenclature->getConditions()->find($condition->getId());
echo '<li>';
echo $full_condition->getLabel()->getFr() ?? '[label manquant]';
echo ' (id=' . $full_condition->getId() . ', type=' . \Syadem\VaccinationProfile\Type::to($full_condition->getType()) . ')';
echo '</li>';
}
echo '</ul>';
echo '</li>';
}
if (count($section->getSections()) > 0) {
foreach ($section->getSections() as $subSection) {
echo '<li>';
print_questionnaire_section($subSection);
echo '</li>';
}
}
echo '</ul>';
}
echo '<h1>Questionnaire de profil santé</h1>';
echo '<ul>';
foreach ($questionnaire_sections as $section) {
echo '<li>';
print_questionnaire_section($section);
echo '</li>';
}
echo '</ul>';