# Semantic layer - Data Management with FHIR v0.1.0

 ![](assets/images/aphp-logo.png) 

*  [Accueil](index.md) 
*  [Dictionnaire des données](data-dictionary.md) 
*  [Variables du socle commun **** ](#) 
*  [Acquisition des variables](use-core-variables-acquisition.md) 
*  [Formalisation des variables](use-core-variables-formalization.md) 
*  [Standardisation des variables](use-core-variables-standardization.md) 
 
*  [Health Data Platform **** ](#) 
*  [Architecture fonctionnelle](data-platform-functional-architecture.md) 
*  [Raw layer](data-platform-raw-layer.md) 
*  [Transform layer](data-platform-transform-layer.md) 
*  [Semantic layer](data-platform-semantic-layer.md) 
*  [Share layer](data-platform-share-layer.md) 
 
*  [Guide **** ](#) 
*  [Gestion des données](https://interop.aphp.fr/ig/fhir/core/data-management.html) 
*  [Bonnes pratiques](https://interop.aphp.fr/ig/fhir/core/best-practice.html) 
*  [Processus de standardisation des données](https://interop.aphp.fr/ig/fhir/core/standardization-process.html) 
 
*  [Ressources de conformité](artifacts.md) 
*  [Autres **** ](#) 
*  [Aide](help.md) 
*  [Notes de version](changelog.md) 
*  [Glossaire](glossary.md) 
*  [Télécharger spécifications](downloads.md) 
 

* [Accueil](index.md)
* [Dictionnaire des données](data-dictionary.md)
* [Usages](use-case.md)
* [Variables socles pour les EDSH](use-core-variables.md)
* [Standardisation de données au format FHIR](use-core-variables-process.md)
* [Acquisition des variables](use-core-variables-acquisition.md)
* [Formalisation des variables](use-core-variables-formalization.md)
* [Standardisation des variables](use-core-variables-standardization.md)
* [Evaluation](use-core-variables-evaluation.md)
* [Health Data Platform (démo)](data-platform.md)
* [Architecture fonctionnelle](data-platform-functional-architecture.md)
* [Raw layer](data-platform-raw-layer.md)
* [Transform layer](data-platform-transform-layer.md)
* [Semantic layer](data-platform-semantic-layer.md)
* [Share layer](data-platform-share-layer.md)
* [Autre](other.md)
* [Aide](help.md)
* [Notes de version](changelog.md)
* [Glossaire](glossary.md)
* [Télécharger les spécifications](downloads.md)
* [Artifacts Summary](artifacts.md)
* [CareSite OMOP Table](StructureDefinition-OMOPCareSite.md)
* [Concept OMOP Table](StructureDefinition-OMOPConcept.md)
* [Condition Era OMOP Table](StructureDefinition-OMOPConditionEra.md)
* [Condition Occurrence OMOP Table](StructureDefinition-OMOPConditionOccurrence.md)
* [Cost OMOP Table](StructureDefinition-OMOPCost.md)
* [Death OMOP Table](StructureDefinition-OMOPDeath.md)
* [Device Exposure OMOP Table](StructureDefinition-OMOPDeviceExposure.md)
* [Dose Era OMOP Table](StructureDefinition-OMOPDoseEra.md)
* [Drug Era OMOP Table](StructureDefinition-OMOPDrugEra.md)
* [Drug Occurrence OMOP Table](StructureDefinition-OMOPDrugExposure.md)
* [Electronic Health Record Data Model](StructureDefinition-ehr.md)
* [Episode Event OMOP Table](StructureDefinition-OMOPEpisodeEvent.md)
* [Episode OMOP Table](StructureDefinition-OMOPEpisode.md)
* [Fact Relationship OMOP Table](StructureDefinition-OMOPFactRelationship.md)
* [Location OMOP Table](StructureDefinition-OMOPLocation.md)
* [LogicalBundle](StructureDefinition-LogicalBundle.md)
* [Measurement OMOP Table](StructureDefinition-OMOPMeasurement.md)
* [Note NLP OMOP Table](StructureDefinition-OMOPNoteNLP.md)
* [Note OMOP Table](StructureDefinition-OMOPNote.md)
* [Observation OMOP Table](StructureDefinition-OMOPObservation.md)
* [Observation Period OMOP Table](StructureDefinition-OMOPObservationPeriod.md)
* [Payer Plan Period OMOP Table](StructureDefinition-OMOPPayerPlanPeriod.md)
* [Person OMOP Table](StructureDefinition-OMOPPerson.md)
* [Procedure Occurrence OMOP Table](StructureDefinition-OMOPProcedureOccurrence.md)
* [Provider OMOP Table](StructureDefinition-OMOPProvider.md)
* [Specimen OMOP Table](StructureDefinition-OMOPSpecimen.md)
* [Visit Detail OMOP Table](StructureDefinition-OMOPVisitDetail.md)
* [Visit Occurrence OMOP Table](StructureDefinition-OMOPVisitOccurrence.md)
* [Questionnaire usage Variables socles pour les EDSH](Questionnaire-UsageCore.md)
* [Profil de Claim pour le champ MCO du PMSI](StructureDefinition-DMClaimPMSIMCO.md)
* [Profil de Claim pour le PMSI](StructureDefinition-DMClaimPMSI.md)
* [Résultat de laboratoire](StructureDefinition-DMObservationLaboratoryGeneric.md)
* [Activité physique](StructureDefinition-DMObservationExerciceStatus.md)
* [Alanine aminotransférase (ALAT)](StructureDefinition-DMObservationLaboratoryALAT.md)
* [Aspartate aminotransférase (ASAT)](StructureDefinition-DMObservationLaboratoryASAT.md)
* [Bilirubine conjuguée](StructureDefinition-DMObservationLaboratoryBilirubineConjuguee.md)
* [Bilirubine totale](StructureDefinition-DMObservationLaboratoryBilirubineTotale.md)
* [Condition](StructureDefinition-DMCondition.md)
* [Consommation d'alcool](StructureDefinition-DMObservationAlcoholUseStatus.md)
* [Consommation d'autres drogues](StructureDefinition-DMObservationSubstanceUseStatus.md)
* [Consommation de tabac](StructureDefinition-DMObservationSmokingStatus.md)
* [Encounter](StructureDefinition-DMEncounter.md)
* [Eosinophiles](StructureDefinition-DMObservationLaboratoryEosinophiles.md)
* [Episode of care](StructureDefinition-DMEpisodeOfCare.md)
* [Erythrocytes](StructureDefinition-DMObservationLaboratoryErythrocytes.md)
* [Fonction rénale](StructureDefinition-DMObservationLaboratoryFonctionRenale.md)
* [French branded name Medication](StructureDefinition-FrMedicationUcd.md)
* [French compound Medication](StructureDefinition-FrMedicationCompound.md)
* [French non proprietary name Medication](StructureDefinition-FrMedicationNonproprietaryName.md)
* [French Ucd Part Medication](StructureDefinition-FrMedicationUcdPart.md)
* [Gamma-glutamyl transférase (GGT)](StructureDefinition-DMObservationLaboratoryGGT.md)
* [Glycémie à jeun](StructureDefinition-DMObservationLaboratoryGlycemieAJeun.md)
* [Hématocrite](StructureDefinition-DMObservationLaboratoryHematocrite.md)
* [Hémoglobine](StructureDefinition-DMObservationLaboratoryHemoglobine.md)
* [Hémoglobine glyquée](StructureDefinition-DMObservationLaboratoryHbA1c.md)
* [Leucocytes](StructureDefinition-DMObservationLaboratoryLeucocytes.md)
* [Location](StructureDefinition-DMLocation.md)
* [Lymphocytes](StructureDefinition-DMObservationLaboratoryLymphocytes.md)
* [Monocytes](StructureDefinition-DMObservationLaboratoryMonocytes.md)
* [Neutrophiles](StructureDefinition-DMObservationLaboratoryNeutrophiles.md)
* [Organization](StructureDefinition-DMOrganization.md)
* [Patient](StructureDefinition-DMPatient.md)
* [Phosphatases alcaline](StructureDefinition-DMObservationLaboratoryPAL.md)
* [Plaquettes](StructureDefinition-DMObservationLaboratoryPlaquettes.md)
* [Poids du patient](StructureDefinition-DMObservationBodyWeight.md)
* [Practitioner](StructureDefinition-DMPractitioner.md)
* [PractitionerRole](StructureDefinition-DMPractitionerRole.md)
* [Prescription de médicaments](StructureDefinition-DMMedicationRequest.md)
* [Pression artérielle](StructureDefinition-DMObservationBloodPressure.md)
* [Prise de médicaments](StructureDefinition-DMMedicationAdministration.md)
* [Procedure](StructureDefinition-DMProcedure.md)
* [RUM du PMSI MCO](StructureDefinition-DMClaimRUM.md)
* [Taille du patient](StructureDefinition-DMObservationBodyHeight.md)
* [Taux prothrombine (TP)](StructureDefinition-DMObservationLaboratoryTP.md)
* [Temps de céphaline activée (TCA)](StructureDefinition-DMObservationLaboratoryTCA.md)
* [Urée](StructureDefinition-DMObservationLaboratoryUremie.md)
* [Volume globulaire moyen](StructureDefinition-DMObservationLaboratoryVGM.md)
* [Address](StructureDefinition-DMAddress.md)
* [Range with UCUM quantity units](StructureDefinition-FrRangeUcum.md)
* [Ratio with UCUM quantity units](StructureDefinition-FrRatioUcum.md)
* [SimpleQuantity with UCUM quantity unit](StructureDefinition-FrSimpleQuantityUcum.md)
* [Codage géographique du lieu de résidence pour les RSA du PMSI](StructureDefinition-PmsiCodeGeo.md)
* [Groupe Homogène de Malade](StructureDefinition-DRG.md)
* [Ordre des Item dans un claim](StructureDefinition-ItemRank.md)
* [Source ayant fournie l'information de décès](StructureDefinition-DeathSource.md)
* [Actes CCAM pour le PMSI](ValueSet-CcamVS.md)
* [Blood Pressure Measurement Body Location Precoordinated](ValueSet-BloodPressureMeasurementBodyLocationPrecoodinated.md)
* [Blood Pressure Measurement Method](ValueSet-BloodPressureMeasurementMethod.md)
* [Categorisation des items de claim pour le PMSI MCO](ValueSet-FrMCOClaimItemCategory.md)
* [Exercice Status Type](ValueSet-DMExerciceStatusType.md)
* [French Medicinal product Dose form](ValueSet-FrMpDoseForm.md)
* [French Medicinal Product only](ValueSet-FrMedicinalProductOnly.md)
* [French Route of Administration](ValueSet-FrRouteOfAdministration.md)
* [Height Length Measurement Method](ValueSet-HeightLengthMeasurementMethod.md)
* [Liste des analyses biologiques socle des EDS](ValueSet-DMLaboratory.md)
* [Liste des analyses correspondant à l'estimation du DFG - socle des EDS](ValueSet-DMLaboratoryEstimatedDFG.md)
* [Liste des diagnostiques CIM-10 acceptable en DA pour les PMSI MCO et HAD](ValueSet-CIM10PMSIDA.md)
* [Liste des diagnostiques CIM-10 acceptable en DP pour les PMSI MCO et HAD](ValueSet-CIM10PMSIDP.md)
* [Liste des diagnostiques CIM-10 acceptable en DR pour les PMSI MCO et HAD](ValueSet-CIM10PMSIDR.md)
* [Liste des diagnostiques CIM-10 OMS](ValueSet-CIM10.md)
* [Liste des diagnostiques CIM-10 pour le PMSI](ValueSet-CIM10PMSI.md)
* [Liste des GHM pour le PMSI MCO](ValueSet-GHMVS.md)
* [Liste des status pour l'Observation de consommation de tabac](ValueSet-DMObservationSmokingStatusStatus.md)
* [Liste des unités possibles pour une estimation du débit de filtration glomérulaire - socle des EDS](ValueSet-DMLaboratoryEstimatedDFGUnit.md)
* [Mode d'entré du PMSI MCO](ValueSet-PMSIMCOMDEVS.md)
* [Mode de sortie du PMSI MCO](ValueSet-PMSIMCOMDSVS.md)
* [Smoking status comprehensive](ValueSet-DMSmokingStatusComprehensive.md)
* [Smoking Status Pack Years SCT](ValueSet-DMSmokingStatusPackYearsSCT.md)
* [Smoking Status Type](ValueSet-DMSmokingStatusType.md)
* [Smoking Status Type from LOINC](ValueSet-DMSmokingStatusTypeLOINC.md)
* [ValueSet des codes géographiques de résidence du PMSI](ValueSet-PmsiCodeGeoVs.md)
* [ValueSet des modes d'entrée du DPI](ValueSet-DpiModeIn.md)
* [ValueSet des modes de sortie du DPI](ValueSet-DpiModeOut.md)
* [ValueSet des Sexe administratif du DPI](ValueSet-DpiGenderVS.md)
* [ValueSet des sources d'informations fr sur le statut vital](ValueSet-DeathSourcesVs.md)
* [ValueSet des type fr des claims](ValueSet-FrClaimType.md)
* [ValueSet des type fr des claims](ValueSet-FrMCOClaimSubType.md)
* [ValueSet des types de séjour du DPI](ValueSet-DpiEncounterTypeVS.md)
* [ValueSet of gender of OHDSI](ValueSet-OMOPGender.md)
* [Weight Measurement Method](ValueSet-WeightMeasurementMethod.md)
* [Cadre de facturation dans la réglementation française](CodeSystem-FrClaimType.md)
* [Categorie d'information pour les supporting information](CodeSystem-FrClaimSupInfoCategoryPMSIMCO.md)
* [Categorisation des items de claim pour le PMSI MCO](CodeSystem-FrMCOClaimItemCategory.md)
* [CCAM illustrative](CodeSystem-Ccam.md)
* [CIM 10 PMSI](CodeSystem-CIM10.md)
* [Classification des GHM utilisée pour le groupage des séjours dans le PMSI MCO.](CodeSystem-GHM.md)
* [CodeSystem des lieux de résidence géographique au sens du PMSI](CodeSystem-PmsiCodeGeo.md)
* [DPI Gender](CodeSystem-DpiGender.md)
* [Dpi Mode d'entrée](CodeSystem-DpiModeIn.md)
* [Dpi Mode de sortie](CodeSystem-DpiModeOut.md)
* [DPI Type de séjour](CodeSystem-DpiEncounterType.md)
* [Mode d'entré du PMSI MCO](CodeSystem-PMSIMCOMDE.md)
* [Mode de sortie du PMSI MCO](CodeSystem-PMSIMCOMDS.md)
* [mode PMSI](CodeSystem-FrClaimMode.md)
* [Observational Medical Outcomes Partnership (OMOP)](CodeSystem-dm-omop-cdm-v20240229.md)
* [SNOMED CT Solor Extension Temporary](CodeSystem-SolorTemporary.md)
* [Sources susceptibles d'informer sur le statu vital des patients](CodeSystem-DeathSources.md)
* [Specialités médicales au sens de la Fédération des Spécialités Médicales (FSM)](CodeSystem-SpecialitesMedicalesFSM.md)
* [type de diagnostic du PMSI MCO](CodeSystem-PMSIMCODiagType.md)
* [Transforms EHR logical model data to FHIR Semantic Layer resources using Bundle as container](StructureMap-EHR2FSL.md)
* [Transforms QuestionnaireResponse based on Questionnaire Usage Variables socles into FHIR resources conforming to DM profiles](StructureMap-Q2FSL.md)
* [Alignement de l''expression de besoin vers le modèle physique du DPI dans le cadre de l''usage Core](StructureMap-CoreBusiness2Physical.md)
* [Cette ressource présente les spécifications de l''alignement entre les ressources FHIR vers les tables correspodantes du CDM OMOP.](StructureMap-CoreFHIR2OMOP.md)
* [Mapping FHIR Patient resource to OMOP Death](StructureMap-CoreFHIR2OMOPDeath.md)
* [Mapping Patient resource to Location OMOP Domain](StructureMap-CoreFHIR2OMOPLocation.md)
* [Mapping Observation laboratory resources to Measurement OMOP Domain](StructureMap-CoreFHIR2OMOPMeasurement.md)
* [Mapping FHIR Patient resource to OMOP Person](StructureMap-CoreFHIR2OMOPPerson.md)
* [Cette ressource présente les spécifications de l''alignement entre la ressource `Patient` vers les tables correspodantes du CDM OMOP.](StructureMap-CoreFHIRPatient2OMOP.md)
* [Alignement de l''usage Core du modèle physique du DPI vers les ressources FHIR](StructureMap-CorePhysical2FHIR.md)
* [Mapping simple Observation laboratory resources to Measurement OMOP Domain](StructureMap-CoreSimpleObservation2OMOPMeasurement.md)
* [DPI (local) Gender to HL7 Gender](ConceptMap-dpi-gender-2-hl7-gender.md)
* [DPI Encounter type to Semantic layer](ConceptMap-dpi-encounter-type-2-semantic-layer-encounter-class.md)
* [HL7 Gender to OHDSI Gender](ConceptMap-hl7-gender-to-ohdsi-gender.md)
* [Administration d'albumine de Madame Blanc](MedicationAdministration-albumine-j1-cas-9.md)
* [Administration à J1 de furosemide de Madame Blanc](MedicationAdministration-furosemide-j1-cas-9.md)
* [Administration à J1 de spironolactone de Madame Blanc](MedicationAdministration-spironolactone-j1-cas-9.md)
* [Administration à J2 de furosemide de Madame Blanc](MedicationAdministration-furosemide-j2-cas-9.md)
* [Administration à J2 de spironolactone de Madame Blanc](MedicationAdministration-spironolactone-j2-cas-9.md)
* [ALAT de Madame Blanc](Observation-alat-cas-9.md)
* [Albumine](Medication-albumine.md)
* [ASAT de Madame Blanc](Observation-asat-cas-9.md)
* [Ascite de Madame Blanc](Condition-ascite-cas-9.md)
* [Bilirubine totale de Madame Blanc](Observation-bilirubine-totale-cas-9.md)
* [Cirrhose de Madame Blanc](Condition-cirrhose-cas-9.md)
* [Consommation d'alcool de Madame Blanc](Observation-alcool-cas-9.md)
* [de Madame Blanc](Patient-cas-9.md)
* [Exemple complet (FSL)](Bundle-df9c9a9c-854b-46f4-9687-1fbe40c06540.md)
* [Exemple simple](QuestionnaireResponse-test-usage-core.md)
* [Fibroscopie oeso-gastroduodénale de Madame Blanc](Procedure-fogd-cas-9.md)
* [Furosémide](Medication-furosemide.md)
* [GGT de Madame Blanc](Observation-ggt-cas-9.md)
* [Patient 1 - Madame Dupont](QuestionnaireResponse-cas-1-usage-core.md)
* [Patient 10 - Monsieur David](QuestionnaireResponse-cas-10-usage-core.md)
* [Patient 11 - Madame Doré](QuestionnaireResponse-cas-11-usage-core.md)
* [Patient 2 - Monsieur Martin](QuestionnaireResponse-cas-2-usage-core.md)
* [Patient 3 - Madame Leroy](QuestionnaireResponse-cas-3-usage-core.md)
* [Patient 4 - Monsieur Moreau](QuestionnaireResponse-cas-4-usage-core.md)
* [Patient 5 - Madame Simon](QuestionnaireResponse-cas-5-usage-core.md)
* [Patient 6 - Monsieur Petit](QuestionnaireResponse-cas-6-usage-core.md)
* [Patient 7 - Madame Garcia](QuestionnaireResponse-cas-7-usage-core.md)
* [Patient 8 - Monsieur Roux](QuestionnaireResponse-cas-8-usage-core.md)
* [Patient 9 - Madame Blanc](QuestionnaireResponse-cas-9-usage-core.md)
* [Patient test (Bundle)](Bundle-5616f9ad-61b0-4279-9f41-777228d04665.md)
* [Patient test (Ressource)](Patient-8f005d60-b59b-47f7-b04a-f877378f8d68.md)
* [Phosphatases alcalines de Madame Blanc](Observation-phosphatases-alcalines-cas-9.md)
* [Poids de Madame Blanc](Observation-poids-cas-9.md)
* [Ponction évacuatrice de Madame Blanc](Procedure-ponction-cas-9.md)
* [Prescription d'albumine de Madame Blanc](MedicationRequest-albumine-cas-9.md)
* [Prescription de furosémide de Madame Blanc](MedicationRequest-furosemide-cas-9.md)
* [Prescription de furosémide de Madame Blanc](MedicationRequest-spironolactone-cas-9.md)
* [Spironolactone](Medication-spironolactone.md)
* [Séjour de Madame Blanc](Encounter-sejour-cas-9.md)
* [Taux de prothrombine de Madame Blanc](Observation-tp-cas-9.md)
* [Test simple](Bundle-2abf7f4c-bd1f-431f-a4c8-667cfa425baf.md)
* [Exigences des variables socles pour les Entrepôts de Données de Santé Hospitalier (EDSH)](DocumentReference-CoreExigences.md)

Data Management with FHIR
0.1.0 - ci-build

## Semantic layer

La conception de la couche sémantique permet de décrire les données répondant aux besoins métiers préalablement identifiés de sorte que elles soient le plus réutilisable possible afin d'améliorer leur valeur.

Le modèle de donnée du Hub d'intégration a été dérivé des ressources FHIR servant de définition de base aux profils conçu dans le cadre du [processus de standardisation des données au format FHIR](use-core-variables-standardization.md).

### Vue d'ensemble

Cette base de données PostgreSQL implémente une couche sémantique FHIR pour la gestion des données de santé françaises. Elle s'appuie sur les ressources FHIR utilisées par les profils DM (Data Management) pour l'interopérabilité et la gestion des données de santé en France.

#### Objectif

Le schéma FSL permet le stockage et la manipulation de données de santé selon les standards FHIR, tout en respectant les spécificités françaises (INS-NIR, CIM-10, CCAM, ATC). Il s'intègre dans l'écosystème des EDS (Entrepôts de Données de Santé) français.

#### Ressources FHIR Couvertes

* **Patient** : Profil patient avec identifiants INS-NIR
* **Encounter** : Interactions de soins et séjours hospitaliers
* **Condition** : Diagnostics et problèmes de santé (CIM-10)
* **Procedure** : Actes médicaux et chirurgicaux (CCAM)
* **Observation** : Résultats de laboratoire et signes vitaux (LOINC)
* **MedicationRequest** : Prescriptions médicamenteuses
* **MedicationAdministration** : Administration de médicaments

#### Conformité Française

* **INS-NIR** : Identifiants nationaux de santé
* **CIM-10** : Classification internationale des maladies
* **CCAM** : Classification commune des actes médicaux
* **PMSI** : Programme de médicalisation des systèmes d'information
* **ATC** : Classification anatomique, thérapeutique et chimique

### Schéma entité/relation

### Tables de la Base de Données

#### 🏥 fhir_patient

**Description** : Profil Patient du socle commun des EDS. Démographie et informations administratives sur les individus recevant des soins.

| | | | | |
| :--- | :--- | :--- | :--- | :--- |
| 🔑 id | VARCHAR(64) | PRIMARY KEY |   | Identifiant unique FHIR |
| last_updated | TIMESTAMP WITH TIME ZONE |   | CURRENT_TIMESTAMP | Dernière mise à jour |
| active | BOOLEAN |   |   | Si l'enregistrement patient est actif |
| identifiers | JSONB |   |   | Identifiants métier (tableau) |
| nss_identifier | VARCHAR(50) | CHECK format |   | NSS - Numéro de Sécurité Sociale |
| ins_nir_identifier | VARCHAR(15) | CHECK format |   | INS-NIR - Identifiant national de santé |
| names | JSONB |   |   | Noms associés au patient |
| full_names | TEXT |   |   | Représentation structurée des noms |
| gender | VARCHAR(10) | CHECK enum |   | Genre administratif |
| birth_date | DATE | CHECK range |   | Date de naissance |
| deceased_x | JSONB |   |   | Information de décès |
| deceased_date_time | TIMESTAMP WITH TIME ZONE |   |   | Date et heure de décès |
| deceased_extension_death_source | VARCHAR(10) | CHECK enum |   | Source d'information de décès |
| marital_status | VARCHAR(4) | CHECK enum |   | Statut marital |
| address | JSONB |   |   | Adresses physiques |
| address_extension_geolocation_latitude | FLOAT | CHECK range |   | Latitude de géolocalisation |
| address_extension_geolocation_longitude | FLOAT | CHECK range |   | Longitude de géolocalisation |
| address_extension_census_tract | VARCHAR(255) |   |   | Code IRIS du recensement |
| address_period_start | DATE |   |   | Date de début de validité d'adresse |
| address_extension_pmsi_code_geo | JSONB |   |   | Extension code géographique PMSI |
| address_extension_pmsi_code_geo_code | VARCHAR(5) | CHECK format |   | Code géographique PMSI |
| telecoms | JSONB |   |   | Coordonnées de contact |
| contacts | JSONB |   |   | Contacts d'urgence et tuteurs |
| communications | JSONB |   |   | Langues de communication |
| preferred_communication_languages | TEXT |   |   | Langues préférées |
| multiple_birth_x | JSONB |   |   | Information sur naissance multiple |
| multiple_birth_integer | INTEGER | CHECK range |   | Rang gémellaire |
| general_practitioners | JSONB |   |   | Médecins traitants |
| managing_organization | JSONB |   |   | Organisation gestionnaire |
| links | JSONB |   |   | Liens vers autres patients |
| meta | JSONB |   |   | Métadonnées FHIR |
| implicit_rules | VARCHAR(255) |   |   | Règles implicites |
| resource_language | VARCHAR(10) |   |   | Langue de la ressource |
| text_div | TEXT |   |   | Résumé textuel |
| contained | JSONB |   |   | Ressources contenues |
| extensions | JSONB |   |   | Extensions |
| modifier_extensions | JSONB |   |   | Extensions modificatrices |
| created_at | TIMESTAMP WITH TIME ZONE |   | CURRENT_TIMESTAMP | Date de création |
| updated_at | TIMESTAMP WITH TIME ZONE |   | CURRENT_TIMESTAMP | Date de modification |

**Index Principaux :**

* `idx_patient_identifiers` : Index GIN sur identifiers
* `idx_patient_nss` : Index sur NSS
* `idx_patient_ins_nir` : Index sur INS-NIR
* `idx_patient_coordinates_gist` : Index spatial sur coordonnées
* `idx_patient_names_search` : Index de recherche textuelle française

**Règles Métier :**

* Date de naissance entre 1900 et aujourd'hui
* Coordonnées GPS valides (-90/90 pour latitude, -180/180 pour longitude)
* Format NSS : 13-15 chiffres
* Format INS-NIR : 15 chiffres exactement

#### 🏥 fhir_encounter

**Description** : Interaction entre un patient et des prestataires de soins pour fournir des services de santé.

| | | | | |
| :--- | :--- | :--- | :--- | :--- |
| 🔑 id | VARCHAR(64) | PRIMARY KEY |   | Identifiant unique FHIR |
| last_updated | TIMESTAMP WITH TIME ZONE |   | CURRENT_TIMESTAMP | Dernière mise à jour |
| status | VARCHAR(20) | CHECK enum |   | État actuel de la rencontre |
| status_history | JSONB |   |   | Historique des statuts |
| class | JSONB |   |   | Classification de la rencontre |
| class_display | VARCHAR(255) |   |   | Texte d'affichage de la classe |
| class_history | JSONB |   |   | Historique des classes |
| types | JSONB |   |   | Types spécifiques de rencontre |
| service_type | JSONB |   |   | Catégorisation large du service |
| priority | JSONB |   |   | Urgence de la rencontre |
| identifiers | JSONB |   |   | Identifiants métier |
| subject | JSONB |   |   | Patient ou groupe présent |
| 🔗 subject_patient_id | VARCHAR(64) | NOT NULL, FK |   | Référence obligatoire au patient |
| episodes_of_care | JSONB |   |   | Épisodes de soins |
| based_on_s | JSONB |   |   | Rendez-vous planifiés |
| participants | JSONB |   |   | Personnes impliquées |
| appointments | JSONB |   |   | Rendez-vous |
| period_start | TIMESTAMP WITH TIME ZONE |   |   | Heure de début |
| period_end | TIMESTAMP WITH TIME ZONE |   |   | Heure de fin |
| length | JSONB |   |   | Durée de la rencontre |
| length_number_of_day | INTEGER | CHECK ≥ 0 |   | Durée en jours |
| reason_codes | JSONB |   |   | Raisons codées |
| reason_references | JSONB |   |   | Références aux raisons |
| diagnoses | JSONB |   |   | Diagnostics |
| account | JSONB |   |   | Comptes |
| hospitalization | JSONB |   |   | Détails d'hospitalisation |
| admit_source_text | VARCHAR(255) | CHECK enum |   | Source d'admission |
| discharge_disposition_text | VARCHAR(255) | CHECK enum |   | Disposition de sortie |
| locations | JSONB |   |   | Emplacements |
| service_provider | JSONB |   |   | Prestataire de service |
| service_provider_organization_display | VARCHAR(64) |   |   | Nom d'affichage du prestataire |
| part_of | JSONB |   |   | Rencontre parent |
| meta | JSONB |   |   | Métadonnées FHIR |
| implicit_rules | VARCHAR(255) |   |   | Règles implicites |
| resource_language | VARCHAR(10) |   |   | Langue de la ressource |
| text_div | TEXT |   |   | Résumé textuel |
| contained | JSONB |   |   | Ressources contenues |
| extensions | JSONB |   |   | Extensions |
| modifier_extensions | JSONB |   |   | Extensions modificatrices |
| created_at | TIMESTAMP WITH TIME ZONE |   | CURRENT_TIMESTAMP | Date de création |
| updated_at | TIMESTAMP WITH TIME ZONE |   | CURRENT_TIMESTAMP | Date de modification |

**Index Principaux :**

* `idx_encounter_patient` : Index sur subject_patient_id
* `idx_encounter_period` : Index temporel sur période
* `idx_encounter_status` : Index sur statut
* `idx_encounter_class` : Index GIN sur classe

**Règles Métier :**

* Période de fin ≥ période de début
* Durée en jours ≥ 0
* Période de début ≤ demain

#### 🏥 fhir_condition

**Description** : Condition clinique, problème, diagnostic ou autre événement de préoccupation clinique.

| | | | | |
| :--- | :--- | :--- | :--- | :--- |
| 🔑 id | VARCHAR(64) | PRIMARY KEY |   | Identifiant unique FHIR |
| last_updated | TIMESTAMP WITH TIME ZONE |   | CURRENT_TIMESTAMP | Dernière mise à jour |
| clinical_status | JSONB |   |   | Statut clinique de la condition |
| clinical_status_text | VARCHAR(255) |   |   | Texte du statut clinique |
| verification_status | JSONB |   |   | Statut de vérification |
| verification_status_text | VARCHAR(255) |   |   | Texte du statut de vérification |
| categories | JSONB |   |   | Catégories assignées |
| categories_text | TEXT |   |   | Texte des catégories |
| severity | JSONB |   |   | Sévérité subjective |
| code | JSONB |   |   | Identification de la condition (CIM-10) |
| code_text | VARCHAR(255) |   |   | Texte du code |
| body_sites | JSONB |   |   | Localisation anatomique |
| identifiers | JSONB |   |   | Identifiants métier |
| subject | JSONB | NOT NULL |   | Patient concerné |
| 🔗 subject_patient_id | VARCHAR(64) | NOT NULL, FK |   | Référence au patient |
| encounter | JSONB |   |   | Rencontre d'assertion |
| 🔗 encounter_id | VARCHAR(64) | FK |   | Référence à la rencontre |
| onset_x | JSONB |   |   | Début de la condition |
| abatement_x | JSONB |   |   | Résolution de la condition |
| recorded_date | DATE |   |   | Date d'enregistrement |
| recorder | JSONB |   |   | Personne ayant enregistré |
| asserter | JSONB |   |   | Personne affirmant |
| stages | JSONB |   |   | Stades de la condition |
| evidences | JSONB |   |   | Preuves |
| notes | JSONB |   |   | Notes |
| meta | JSONB |   |   | Métadonnées FHIR |
| implicit_rules | VARCHAR(255) |   |   | Règles implicites |
| resource_language | VARCHAR(10) |   |   | Langue de la ressource |
| text_div | TEXT |   |   | Résumé textuel |
| contained | JSONB |   |   | Ressources contenues |
| extensions | JSONB |   |   | Extensions |
| modifier_extensions | JSONB |   |   | Extensions modificatrices |
| created_at | TIMESTAMP WITH TIME ZONE |   | CURRENT_TIMESTAMP | Date de création |
| updated_at | TIMESTAMP WITH TIME ZONE |   | CURRENT_TIMESTAMP | Date de modification |

**Index Principaux :**

* `idx_condition_patient` : Index sur subject_patient_id
* `idx_condition_encounter` : Index sur encounter_id
* `idx_condition_code` : Index GIN sur code
* `idx_condition_clinical_status` : Index sur statut clinique

**Règles Métier :**

* Date d'enregistrement ≤ aujourd'hui
* Texte des champs non vide si présent

#### 🏥 fhir_procedure

**Description** : Action qui est ou a été effectuée sur un patient (avec codage CCAM).

| | | | | |
| :--- | :--- | :--- | :--- | :--- |
| 🔑 id | VARCHAR(64) | PRIMARY KEY |   | Identifiant unique FHIR |
| last_updated | TIMESTAMP WITH TIME ZONE |   | CURRENT_TIMESTAMP | Dernière mise à jour |
| instantiates_canonical_s | JSONB |   |   | Références canoniques |
| instantiates_uri_s | JSONB |   |   | URIs d'instanciation |
| status | VARCHAR(20) | CHECK enum |   | État de la procédure |
| status_reason | JSONB |   |   | Raison du statut |
| category | JSONB |   |   | Catégorie |
| code | JSONB |   |   | Code de procédure (CCAM) |
| code_text | VARCHAR(255) |   |   | Texte du code |
| identifiers | JSONB |   |   | Identifiants métier |
| based_on_s | JSONB |   |   | Basé sur |
| part_of_s | JSONB |   |   | Partie de |
| subject | JSONB | NOT NULL |   | Patient |
| 🔗 subject_patient_id | VARCHAR(64) | NOT NULL, FK |   | Référence au patient |
| encounter | JSONB |   |   | Rencontre |
| 🔗 encounter_id | VARCHAR(64) | FK |   | Référence à la rencontre |
| performed_x | JSONB |   |   | Timing d'exécution |
| performed_date_time | TIMESTAMP WITH TIME ZONE |   |   | Date de réalisation |
| recorder | JSONB |   |   | Enregistreur |
| asserter | JSONB |   |   | Affirmant |
| performers | JSONB |   |   | Exécutants |
| performer_actor_practitioner_text | TEXT |   |   | Praticien exécutant |
| location | JSONB |   |   | Emplacement |
| reason_codes | JSONB |   |   | Codes de raison |
| reason_references | JSONB |   |   | Références de raison |
| body_sites | JSONB |   |   | Sites corporels |
| outcome | JSONB |   |   | Résultat |
| reports | JSONB |   |   | Rapports |
| complications | JSONB |   |   | Complications |
| complication_details | JSONB |   |   | Détails des complications |
| follow_up_s | JSONB |   |   | Suivi |
| notes | JSONB |   |   | Notes |
| focal_devices | JSONB |   |   | Dispositifs focaux |
| used_references | JSONB |   |   | Références utilisées |
| used_codes | JSONB |   |   | Codes utilisés |
| meta | JSONB |   |   | Métadonnées FHIR |
| implicit_rules | VARCHAR(255) |   |   | Règles implicites |
| resource_language | VARCHAR(10) |   |   | Langue de la ressource |
| text_div | TEXT |   |   | Résumé textuel |
| contained | JSONB |   |   | Ressources contenues |
| extensions | JSONB |   |   | Extensions |
| modifier_extensions | JSONB |   |   | Extensions modificatrices |
| created_at | TIMESTAMP WITH TIME ZONE |   | CURRENT_TIMESTAMP | Date de création |
| updated_at | TIMESTAMP WITH TIME ZONE |   | CURRENT_TIMESTAMP | Date de modification |

**Index Principaux :**

* `idx_procedure_patient` : Index sur subject_patient_id
* `idx_procedure_encounter` : Index sur encounter_id
* `idx_procedure_code` : Index GIN sur code
* `idx_procedure_performed` : Index sur performed_date_time

**Règles Métier :**

* Date d'exécution ≤ demain
* Texte du code non vide si présent

#### 🏥 fhir_observation

**Description** : Mesures et assertions simples faites sur un patient. Table générique pour tous les profils d'observation DM.

| | | | | |
| :--- | :--- | :--- | :--- | :--- |
| 🔑 id | VARCHAR(64) | PRIMARY KEY |   | Identifiant unique FHIR |
| last_updated | TIMESTAMP WITH TIME ZONE |   | CURRENT_TIMESTAMP | Dernière mise à jour |
| status | VARCHAR(20) | CHECK enum |   | Statut du résultat |
| categories | JSONB |   |   | Classification du type |
| categories_text | TEXT |   |   | Texte des catégories |
| code | JSONB |   |   | Type d'observation (LOINC) |
| code_text | VARCHAR(255) |   |   | Nom de l'observation |
| identifiers | JSONB |   |   | Identifiants métier |
| based_on_s | JSONB |   |   | Basé sur |
| part_of_s | JSONB |   |   | Partie de |
| subject | JSONB |   |   | Sujet de l'observation |
| 🔗 subject_patient_id | VARCHAR(64) | FK |   | Référence au patient |
| encounter | JSONB |   |   | Rencontre |
| 🔗 encounter_id | VARCHAR(64) | FK |   | Référence à la rencontre |
| focus_s | JSONB |   |   | Focus |
| effective_x | JSONB |   |   | Timing effectif |
| effective_date_time | TIMESTAMP WITH TIME ZONE |   |   | Date/heure cliniquement pertinente |
| issued | TIMESTAMP WITH TIME ZONE |   |   | Date d'émission |
| performers | JSONB |   |   | Responsables |
| performer_organization_text | VARCHAR(255) |   |   | Organisation exécutante |
| value_x | JSONB |   |   | Valeur de résultat |
| value_quantity_value | FLOAT | CHECK ≥ 0 |   | Valeur numérique |
| value_quantity_unit | VARCHAR(255) |   |   | Unité de mesure |
| data_absent_reason | JSONB |   |   | Raison d'absence de données |
| interpretations | JSONB |   |   | Interprétations |
| notes | JSONB |   |   | Notes |
| body_site | JSONB |   |   | Site corporel |
| method | JSONB |   |   | Méthode |
| specimen | JSONB |   |   | Échantillon |
| device | JSONB |   |   | Dispositif |
| reference_ranges | JSONB |   |   | Plages de référence |
| reference_ranges_value | TEXT |   |   | Valeurs de référence |
| has_members | JSONB |   |   | Membres |
| derived_from_s | JSONB |   |   | Dérivé de |
| components | JSONB |   |   | Composants |
| meta | JSONB |   |   | Métadonnées FHIR |
| implicit_rules | VARCHAR(255) |   |   | Règles implicites |
| resource_language | VARCHAR(10) |   |   | Langue de la ressource |
| text_div | TEXT |   |   | Résumé textuel |
| contained | JSONB |   |   | Ressources contenues |
| extensions | JSONB |   |   | Extensions |
| modifier_extensions | JSONB |   |   | Extensions modificatrices |
| created_at | TIMESTAMP WITH TIME ZONE |   | CURRENT_TIMESTAMP | Date de création |
| updated_at | TIMESTAMP WITH TIME ZONE |   | CURRENT_TIMESTAMP | Date de modification |

**Index Principaux :**

* `idx_observation_patient` : Index sur subject_patient_id
* `idx_observation_encounter` : Index sur encounter_id
* `idx_observation_code` : Index GIN sur code
* `idx_observation_effective` : Index sur effective_date_time
* `idx_observation_value_numeric` : Index sur valeurs numériques

**Règles Métier :**

* Date effective ≤ demain
* Date d'émission ≥ date effective
* Valeurs numériques ≥ 0

#### 🏥 fhir_observation_component

**Description** : Composants d'observations pour les mesures multi-composants.

| | | | | |
| :--- | :--- | :--- | :--- | :--- |
| 🔑 id | VARCHAR(64) | PRIMARY KEY |   | Clé technique |
| 🔗 observation_id | VARCHAR(64) | FK CASCADE |   | Référence à l'observation |
| code | JSONB |   |   | Code LOINC |
| code_text | VARCHAR(255) |   |   | Texte du code |
| value_x | JSONB |   |   | Valeur |
| value_quantity_value | FLOAT | CHECK ≥ 0 |   | Valeur numérique |
| value_quantity_unit | VARCHAR(255) |   |   | Unité |
| data_absent_reason | JSONB |   |   | Raison d'absence |
| interpretations | JSONB |   |   | Interprétations |
| reference_ranges | JSONB |   |   | Plages de référence |
| reference_ranges_value | TEXT |   |   | Valeurs de référence |
| created_at | TIMESTAMP WITH TIME ZONE |   | CURRENT_TIMESTAMP | Date de création |
| updated_at | TIMESTAMP WITH TIME ZONE |   | CURRENT_TIMESTAMP | Date de modification |

**Index Principaux :**

* `idx_observation_component_parent` : Index sur observation_id
* `idx_observation_component_code` : Index GIN sur code
* `idx_observation_component_value` : Index sur valeurs

#### 🏥 fhir_medication_request

**Description** : Ordre ou demande de fourniture de médicament et instructions d'administration.

| | | | | |
| :--- | :--- | :--- | :--- | :--- |
| 🔑 id | VARCHAR(64) | PRIMARY KEY |   | Identifiant unique FHIR |
| last_updated | TIMESTAMP WITH TIME ZONE |   | CURRENT_TIMESTAMP | Dernière mise à jour |
| status | VARCHAR(20) | NOT NULL, CHECK enum |   | État actuel de l'ordre |
| status_reason | JSONB |   |   | Raison du statut |
| intent | VARCHAR(20) | NOT NULL, CHECK enum |   | Intention de la demande |
| categories | JSONB |   |   | Type d'usage |
| priority | VARCHAR(20) | CHECK enum |   | Urgence |
| do_not_perform | BOOLEAN |   |   | Si interdiction d'action |
| identifiers | JSONB |   |   | Identifiants métier |
| based_on_s | JSONB |   |   | Basé sur |
| reported_x | JSONB |   |   | Rapporté |
| group_identifier | JSONB |   |   | Identifiant de groupe |
| course_of_therapy_type | JSONB |   |   | Type de cure |
| insurances | JSONB |   |   | Assurances |
| notes | JSONB |   |   | Notes |
| medication_x | JSONB |   |   | Médicament |
| medication_text | VARCHAR(255) |   |   | Texte du médicament |
| subject | JSONB |   |   | Patient concerné |
| 🔗 subject_patient_id | VARCHAR(64) | NOT NULL, FK |   | Référence au patient |
| 🔗 encounter_id | VARCHAR(64) | FK |   | Référence à la rencontre |
| supporting_informations | JSONB |   |   | Informations de support |
| authored_on | TIMESTAMP WITH TIME ZONE |   |   | Date de création |
| requester | JSONB |   |   | Demandeur |
| requester_practitioner_display | VARCHAR(255) |   |   | Praticien demandeur |
| performer | JSONB |   |   | Exécutant |
| performer_type | JSONB |   |   | Type d'exécutant |
| recorder | JSONB |   |   | Enregistreur |
| reason_codes | JSONB |   |   | Codes de raison |
| reason_references | JSONB |   |   | Références de raison |
| instantiates_canonical_s | JSONB |   |   | Instancie canonique |
| instantiates_uri_s | JSONB |   |   | Instancie URI |
| dosage_instructions | JSONB |   |   | Instructions de dosage |
| dosage_instruction_route_text | VARCHAR(255) |   |   | Voie d'administration |
| dosage_instruction_dose_quantity_value | FLOAT | CHECK > 0 |   | Dose |
| dosage_instruction_dose_quantity_unit | VARCHAR(255) |   |   | Unité de dose |
| dosage_instruction_timing_bounds_period_start | TIMESTAMP WITH TIME ZONE |   |   | Début de période |
| dosage_instruction_timing_bounds_period_end | TIMESTAMP WITH TIME ZONE |   |   | Fin de période |
| dispense_request | JSONB |   |   | Demande de dispensation |
| substitution | JSONB |   |   | Substitution |
| prior_prescription | JSONB |   |   | Prescription antérieure |
| detected_issues | JSONB |   |   | Problèmes détectés |
| event_history | JSONB |   |   | Historique d'événements |
| meta | JSONB |   |   | Métadonnées FHIR |
| implicit_rules | VARCHAR(255) |   |   | Règles implicites |
| resource_language | VARCHAR(10) |   |   | Langue de la ressource |
| text_div | TEXT |   |   | Résumé textuel |
| contained | JSONB |   |   | Ressources contenues |
| extensions | JSONB |   |   | Extensions |
| modifier_extensions | JSONB |   |   | Extensions modificatrices |
| created_at | TIMESTAMP WITH TIME ZONE |   | CURRENT_TIMESTAMP | Date de création |
| updated_at | TIMESTAMP WITH TIME ZONE |   | CURRENT_TIMESTAMP | Date de modification |

**Index Principaux :**

* `idx_med_request_patient` : Index sur subject_patient_id
* `idx_med_request_encounter` : Index sur encounter_id
* `idx_med_request_status` : Index sur status
* `idx_med_request_medication_text` : Index sur medication_text
* `idx_med_request_authored` : Index sur authored_on

**Règles Métier :**

* Date de création ≤ demain
* Fin de période ≥ début de période
* Dose > 0 si spécifiée

#### 🏥 fhir_medication_administration

**Description** : Événement de consommation ou d'administration d'un médicament à un patient.

| | | | | |
| :--- | :--- | :--- | :--- | :--- |
| 🔑 id | VARCHAR(64) | PRIMARY KEY |   | Identifiant unique FHIR |
| last_updated | TIMESTAMP WITH TIME ZONE |   | CURRENT_TIMESTAMP | Dernière mise à jour |
| status | VARCHAR(20) | NOT NULL, CHECK enum |   | État de l'administration |
| status_reasons | JSONB |   |   | Raisons du statut |
| category | JSONB |   |   | Catégorie |
| identifiers | JSONB |   |   | Identifiants métier |
| instantiates_s | JSONB |   |   | Instancie |
| part_of_s | JSONB |   |   | Partie de |
| medication_x | JSONB |   |   | Médicament |
| medication_text | VARCHAR(255) |   |   | Texte du médicament |
| subject | JSONB |   |   | Patient concerné |
| 🔗 subject_patient_id | VARCHAR(64) | NOT NULL, FK |   | Référence au patient |
| context | JSONB |   |   | Contexte |
| 🔗 context_encounter_id | VARCHAR(64) | FK |   | Référence à la rencontre |
| supporting_informations | JSONB |   |   | Informations de support |
| effective_x | JSONB |   |   | Timing effectif |
| effective_date_time | TIMESTAMP WITH TIME ZONE |   |   | Date/heure effective |
| performers | JSONB |   |   | Exécutants |
| reason_codes | JSONB |   |   | Codes de raison |
| reason_references | JSONB |   |   | Références de raison |
| request | JSONB |   |   | Demande |
| 🔗 request_medication_request_id | VARCHAR(64) | FK |   | Référence à la prescription |
| devices | JSONB |   |   | Dispositifs |
| notes | JSONB |   |   | Notes |
| dosage | JSONB |   |   | Dosage |
| dosage_route_text | VARCHAR(255) |   |   | Voie d'administration |
| dosage_dose_value | FLOAT | CHECK > 0 |   | Dose administrée |
| dosage_dose_unit | VARCHAR(255) |   |   | Unité de dose |
| event_history | JSONB |   |   | Historique d'événements |
| meta | JSONB |   |   | Métadonnées FHIR |
| implicit_rules | VARCHAR(255) |   |   | Règles implicites |
| resource_language | VARCHAR(10) |   |   | Langue de la ressource |
| text_div | TEXT |   |   | Résumé textuel |
| contained | JSONB |   |   | Ressources contenues |
| extensions | JSONB |   |   | Extensions |
| modifier_extensions | JSONB |   |   | Extensions modificatrices |
| created_at | TIMESTAMP WITH TIME ZONE |   | CURRENT_TIMESTAMP | Date de création |
| updated_at | TIMESTAMP WITH TIME ZONE |   | CURRENT_TIMESTAMP | Date de modification |

**Index Principaux :**

* `idx_med_admin_patient` : Index sur subject_patient_id
* `idx_med_admin_encounter` : Index sur context_encounter_id
* `idx_med_admin_request` : Index sur request_medication_request_id
* `idx_med_admin_status` : Index sur status
* `idx_med_admin_effective` : Index sur effective_date_time

**Règles Métier :**

* Date effective ≤ demain
* Dose > 0 si spécifiée

### Matrice des Relations

| | | | | |
| :--- | :--- | :--- | :--- | :--- |
| fhir_encounter | fhir_patient | Plusieurs vers Un | subject_patient_id | - |
| fhir_condition | fhir_patient | Plusieurs vers Un | subject_patient_id | - |
| fhir_condition | fhir_encounter | Plusieurs vers Un | encounter_id | - |
| fhir_procedure | fhir_patient | Plusieurs vers Un | subject_patient_id | - |
| fhir_procedure | fhir_encounter | Plusieurs vers Un | encounter_id | - |
| fhir_observation | fhir_patient | Plusieurs vers Un | subject_patient_id | - |
| fhir_observation | fhir_encounter | Plusieurs vers Un | encounter_id | - |
| fhir_observation_component | fhir_observation | Plusieurs vers Un | observation_id | CASCADE |
| fhir_medication_request | fhir_patient | Plusieurs vers Un | subject_patient_id | - |
| fhir_medication_request | fhir_encounter | Plusieurs vers Un | encounter_id | - |
| fhir_medication_administration | fhir_patient | Plusieurs vers Un | subject_patient_id | - |
| fhir_medication_administration | fhir_encounter | Plusieurs vers Un | context_encounter_id | - |
| fhir_medication_administration | fhir_medication_request | Plusieurs vers Un | request_medication_request_id | - |

### Règles Métier

#### Contraintes de Validation des Données

##### Patient

* **Dates** : `birth_date` entre 1900 et aujourd'hui, `deceased_date_time` ≥ `birth_date`
* **Coordonnées** : Latitude [-90, 90], longitude [-180, 180]
* **Identifiants** : NSS 13-15 chiffres, INS-NIR 15 chiffres exactement
* **Naissance multiple** : Rang entre 1 et 10
* **Code géographique PMSI** : 2-5 chiffres

##### Encounter

* **Période** : `period_end` ≥ `period_start`, `period_start` ≤ demain
* **Durée** : `length_number_of_day` ≥ 0
* **Sources d'admission** : Mutation, Transfert définitif/provisoire, Domicile, Naissance, Décédé pour prélèvement
* **Dispositions de sortie** : Mutation, Transfert définitif/provisoire, Domicile, Décès

##### Temporelles Générales

* **Dates d'enregistrement** ≤ aujourd'hui
* **Dates d'exécution/effective** ≤ demain
* **Dates d'émission** ≥ dates effectives

##### Valeurs Numériques

* **Observations** : Valeurs ≥ 0
* **Médicaments** : Doses > 0 si spécifiées

##### Intégrité Textuelle

* Tous les champs texte doivent être non vides s'ils sont présents
* Validation JSONB : Format JSON valide et types appropriés

### Stratégie d'Indexation

#### Index de Performance PostgreSQL

##### Index Primaires et de Clés Étrangères

* Index B-tree sur toutes les clés primaires
* Index sur toutes les clés étrangères pour optimiser les jointures

##### Index Spécialisés

**Hash (Recherches Exactes)**

* `idx_patient_nss_hash` : Recherche rapide par NSS
* `idx_patient_ins_nir_hash` : Recherche rapide par INS-NIR
* `idx_observation_code_hash` : Recherche rapide par code LOINC

**GIN (Données JSONB)**

* Index sur tous les champs JSONB pour requêtes complexes
* Support des opérateurs `@>`, `?`, `?&`, `?|`

**GiST (Données Spatiales et Temporelles)**

* `idx_patient_coordinates_gist` : Requêtes géospatiales
* `idx_encounter_period_range` : Requêtes sur plages temporelles

**Recherche Textuelle**

* `idx_patient_names_search` : Recherche full-text en français
* Index sur tous les champs `*_text` pour recherche rapide

##### Index Composites

* `idx_encounter_patient_period` : Historique patient
* `idx_observation_patient_code` : Résultats par patient et type
* `idx_med_request_patient_active` : Prescriptions actives

#### Optimisations Spécifiques

**Création Concurrente**

* Tous les index créés avec `CONCURRENTLY` pour éviter les interruptions

**Index Partiels**

* Uniquement sur les lignes avec données non NULL
* Réduction de la taille des index

**Index Couvrants**

* Certains index incluent des colonnes supplémentaires
* Évitent les accès aux tables principales

### Notes d'Implémentation

#### Conventions de Nommage

##### Champs FHIR

* **snake_case** remplace **camelCase** (`basedOn` → `based_on`)
* **Pluralisation** pour cardinalité > 1
* **Suffixes** : `_id` pour FK socle, `_display` pour contexte, `_text` pour affichage

##### Types de Données

* **Primitifs** → Types PostgreSQL équivalents
* **Complexes** → JSONB sauf décomposition spécifique
* **Références socle** → Clés étrangères typées
* **Références contexte** → Champs display textuels

##### Extensions et Propriétés [x]

* **Extensions** → JSONB avec champs spécifiques si intérêt
* **Propriétés [x]** → `_x` en JSONB + champs spécifiques

#### Utilisation de JSONB

**Avantages**

* Flexibilité pour structures FHIR complexes
* Requêtes natives PostgreSQL
* Indexation GIN performante
* Validation de type intégrée

**Patterns d'Usage**

* Stockage complet en JSONB + extraction de champs critiques
* Index GIN pour requêtes structurées
* Contraintes de validation JSON

#### Métadonnées FHIR

**Champs Standard**

* `meta` : Informations de version, profils, sécurité
* `text_div` : Résumé narratif
* `extensions` : Extensions standardisées
* `contained` : Ressources imbriquées

### Conformité et Standards

#### Standards FHIR

* **Version** : FHIR R4 (4.0.1)
* **Profils** : Profils DM français
* **Terminologies** : LOINC, SNOMED CT, CIM-10, CCAM, ATC

#### Réglementations Françaises

* **INS** : Identité Nationale de Santé
* **PMSI** : Programme de Médicalisation
* **RGPD** : Protection des données personnelles
* **HDS** : Hébergement de Données de Santé

#### Interopérabilité

* **IHE** : Profils d'intégration (PAM, PIXm, PDQm)
* **HL7** : Standards de messagerie
* **CI-SIS** : Cadre d'Interopérabilité français

-------

**Documentation générée à partir du script DDL PostgreSQL pour la couche sémantique FHIR.** **Version : 1.0 | Date : 2025-09-15**

