feat(exploration): fhir call optimmization #3237#1272
Conversation
|
There was a problem hiding this comment.
Dans l'ensemble je suis plutôt d'acc , j'ai repéré quelques points discutables mais pas bloquants du tout (je ferais une PR a la suite de celle ci pour compléter pour pas t'embêter.
Par contre j'ai un sujet un peu plus sérieux sur les casts as ('Encounter:encounter' | 'Patient:subject')[] sur les appels _include
Le fetcher déclare déjà cet union, donc le cast est redondant, mais surtout il est piégeux : il force le type au lieu de le vérifier. Du coup une typo dans le littéral passe à la compil :
_include: ['Encounter:encounters'] as ('Encounter:encounter' | 'Patient:subject')[]
// ^ on injecte une typo --> ca compile quand même à cause du `as`
Et là le _include part malformé au FHIR, l'encounter/patient n'est pas renvoyé, et on retombe sur les round-trips que la PR cherche justement à supprimer (sans erreur visible)
Si tu retires le as, le type checker valide les littéraux directement. Pas bloquant, mais tant qu'à faire autant fermer la porte :)



Objectif
fix: https://gitlab.data.aphp.fr/ID/design-et-produit/ipa/cohort360/gestion-de-projet/-/work_items/3237
Réduire le nombre d'appels réseau des vues d'exploration : au lieu de récupérer une liste puis d'aller chercher séparément les Patient et Encounter liés, on demande au serveur FHIR de les renvoyer dans le même bundle via _include.
Changements réalisés
Impacts
Front
Tests réalisés
Unitaires, manuel,
Risques
Pas de riques : Un fallback sur l'ancien comportement (getResourceInfos) est conservé si les includes ne reviennent pas.