Client PHP pour SADV

La librairie sadv-client vous permet de :

PHP

Pré-requis

Exemples

L’exemple qui va suivre permet d’afficher le contenu du formulaire de profil santé sous la forme suivante :

Formulaire de profil santé

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>';