Techniques avancées

Stockage


Cette section vise à donner des pistes sur le stockage des données de l’API. Il s’agit de guides non exhaustifs donnés à titre d’exemple. Beaucoup d’autres techniques existent.

1) Fhir to Fhir

Dans le mode de stockage Fhir to Fhir, vous stockez la donnée telle que vous la recevez au format FHIR.

Comme le format est du json (ou xml), vous devrez utiliser un système qui supporte le stockage de ce format de données comme par exemple mongodb, elasticsearch… Il est aussi tout à fait possible d’utiliser un serveur FHIR du marché.

C’est un bon choix si vous souhaitez avoir un référentiel “on premise” rapidement.

Avantages :

  • Relativement rapide/simple à mettre en place
    • Le schéma existe déjà
    • Vous n’avez pas de traitement particulier pour stocker la donnée
  • Performances
    • Pas de relations à gérer

Inconvénients :

  • Contrôle d’intégrité
    • Le stockage en objet json nécessite en général une surcouche logicielle pour gérer l’intégrité
  • Donnée dénormalisée
    • Le format fhir est de base dénormalisé notamment sur les objets profonds

 

2) Fhir to Sql

Dans le mode de stockage Fhir to Sql, vous allez convertir les données fhir en un schéma relationnel.

Comme les données Fhir sont profondes et proposent des cardinalités complexes, vous allez avoir plusieurs tables relationnelles pour une seule ressource FHIR.

Représenter le format FHIR en un schéma relationnel est complexe et va entrainer de nombreuses relations.

Si vos besoins ne nécessitent pas d’avoir un schéma relationnel fhir, il est alors préférable de créer un schéma propre à vos besoins.

NOTE Certaines implémentations sont basées sur le pattern EAV dont nous ne parlerons pas ici.

Imaginons par exemple que vous ne souhaitiez récupérer que les id RPPS des Practitioner ainsi que leurs qualifications, vous pourriez avoir un schéma de type:

(*) Référentiels pour les Qualifications : TRE-R14, TRE-R48,TRE-R49, ,TRE-R50 ,TRE-R51 ,TRE-R52 ,TRE-R53 ,TRE-R54 ,TRE-R55 ,TRE-R56 ,TRE-R57 ,TRE-R58 ,TRE-R36 ,TRE-R47 ,TRE-R226

2) Hybride

Il est tout à fait possible de stocker les données dans un format mixte : Sql + Fhir brute. Par exemple, vous pouvez stocker quelques données utiles pour votre système dans une base de données relationnelle (intégrité, indexes…) et avoir une colonne spécifique qui stocke les données Fhir au format JSON/XML.