Rangs Limites

Cet outil permet d'apprécier les choix de postes accessibles pour un rang de classement donné sur les années post R3C (à partir des ECNi 2017 jusqu'aux derniers ECNi)
Sur un seul tableau, est affiché, dans chaque case, le nombre d'année où le poste aurait été accessible.

Ces informations sont données à titre indicatif et ne peuvent constituer une quelconque garantie pour les procédures de choix à venir
Toutes les données exploitées par cet outil proviennent du site cng.sante.fr et de son application CELINE. Pour toute information officielle, veuillez vous référer à ces derniers.

$speName) : ?>

Utiliser Ctrl/Command + Clic pour (dé)sélectionner plusieurs options sur PC/Mac
Résultats"; $html = "


"; // On va récupérer tous les rangs limited dispo triés par idChoix //Mysql $reqRL = $db->query('SELECT idChoix, annee, rangLimite FROM dataset'); //pgsql // $reqRL = $db->query('SELECT dataset."idChoix", annee, dataset."rangLimite" FROM dataset'); $rangLimites = $reqRL->fetchAll(PDO::FETCH_GROUP|PDO::FETCH_ASSOC); $inputClassement = (int) $_GET["classement"]; ////////////////////////////////// // Calcul et affichage des données ////////////////////////////////// // v2. Conversion du filtre spé/ville de l'utilisateur // On croise l'array source de données avec les id sélectionnés via le GET (ce qui sécurise les données en plus) // array_intersect_key(array_source, clés_à_garder) $cityDataset = ($isTriVilleValid === TRUE) ? array_intersect_key($citySourceDataset, array_flip($_GET["v"])) : $citySourceDataset; $specialityDatasetAbrev = ($isTriSpeValid === TRUE) ? array_intersect_key($specialitySourceDatasetAbrev, array_flip($_GET["s"])) : $specialitySourceDatasetAbrev; $specialityDataset = ($isTriSpeValid === TRUE) ? array_intersect_key($specialitySourceDataset, array_flip($_GET['s'])) : $specialitySourceDataset; // Affichage de la 1ère ligne = Titre des colonnes $html .= ""; foreach ($specialityDatasetAbrev as $specialityName) { $html .= ""; } $html .= ""; // Affichage de la suite du tableau avec le calcul foreach ($cityDataset as $cityId => $cityName) { // On gère la séparation des différentes régions entre elles (représentées dans le csv villes par les lignes XX_:XX) // La notation des lignes de séparation est sous forme XX_x car si on laissait XX, la fonction getCsvToArrayKeyValue // ne retourne la position que pour la 1ère occurence de XX;XX // La manière de fix ça de manière la plus opti et sale, c'est de faire un substr et de tester les 2 premiers charactères // si ils sont égaux à XX, on fait une séparation // TODO : Faire un parseur csv qui prend en compte chaque ligne du csv dans l'ordre du fichier if (strpos($cityId, "XX") !== FALSE) { $html .= ""; foreach ($specialityDatasetAbrev as $specialityName) { $html .= ""; } $html .= ""; continue; } $html .= ""; foreach ($specialityDatasetAbrev AS $specialityId => $specialityName) { $idChoice = "0".$cityId.$specialityId; if (!isset($rangLimites[$idChoice])) { $nbAnneePropose = 0; $nbPossibleAnneePropose = 0; } else { $nbAnneePropose = count($rangLimites[$idChoice]); $nbPossibleAnneePropose = 0; foreach ($rangLimites[$idChoice] as $rangLimite) { if ((int) $rangLimite["rangLimite"] >= $inputClassement) {$nbPossibleAnneePropose++;} } } // Affichage de la cellule $html .= ""; } $html .= ""; } $html .= "
".$specialityName."
".$specialityName."
".$cityName." $nbPossibleAnneePropose && $nbPossibleAnneePropose === 1): $html .= "last-choice"; break; case ($nbAnneePropose > $nbPossibleAnneePropose && $nbPossibleAnneePropose !== 1): $html .= "half-choices"; break; case ($nbAnneePropose === $nbPossibleAnneePropose): $html .= "all-choices"; break; } $html .= "\">"; if ($nbPossibleAnneePropose > 0) { $html .= $nbPossibleAnneePropose; } else if ($nbPossibleAnneePropose === 0 && $nbAnneePropose !== 0) { $html .= "0"; } $html .= "

"; echo $html; ?>