🗒️ Contexte : Il existe deux étape clés dans l'intégration des documents :
- La pseudonymisation : masque les données personnellement identifiantes du texte
- La structuration : extraire les codes du texte
Dans cette note, nous clarifions la pipeline de traitement des documents complète.
Le schéma ci-après représente les sauts entre les assets dbt du Codex et les assets Python qui permettent la pseudonymisation et la structuration des documents.

- Les étapes 1 à 3 sont spécifiques à la source de données, i.e., le traitement dépend des tables de métadonnées et du serveur de stockage des fichiers.
- Les étapes 4 et 5 arrivent au niveau pivot et sont donc génériques.
Dans un logiciel, il existe généralement une **table de métadonnées **référençant l'ensemble des documents stockés en base ou sur un serveur distant.
Le périmètre d'intégration des documents dans l'EDS est défini dans un modèle dbt des métadonnées qui peut être filtré selon deux critères :
- Les patients : seuls les documents liés aux patients inclus dans l'EDS sont extraits.
- Le type de document : une sélection peut être opérée pour ne retenir que certains formats (ex: RCP, CRO, etc.).
Les tables de métadonnées existantes dans le Codex
- Pour Dxcare : `dbt_dxcare.dxcare_stg_document_sources`
- Pour Easily : `dbt_easily.easily_stg_metadone_metadone_documents`
⚠️ Il n'existe pas de tables de métadonnées dans Orbis, une table est donc créée au moment de l'ingestion par l'asset dagster.
### 2. Ingestion des documents & pseudonymisation
Cette partie est détaillées dans la note suivante :
### 3. Alimentation de stg_note puis pvt_note
Une fois le texte pseudonymisé et chiffré, il est donc stocké dans la table `etl.etl_doc_extracted`
Le processus d'intégration dbt se déroule ensuite en trois étapes :
1. Intégration du texte pseudonymisé dans le modèle** **`_stg_note`.
2. Transformation au format pivot** **dans le modèle `_pvt_note`.
3. Activation du logiciel comme source du modèle `pvt_note` :
Dans `dbt_project.yml `:
```json
pivot_source_note: ['logiciel']
```
### 4. Structuration sur les notes pseudonymisées
**Le texte pseudonymisé stocké dans pvt_note est ensuite envoyés à une API de structuration** (Lighter précédemment, Nerd maintenant) pour en extraite les codes d'intérêt grâce à un SLM.
### 5. Alimentation de pvt_note_nlp
Les données issues du job de structuration sont ensuite transformées au format pivot dans le modèle `lighter_stg_note_nlp` (dans `source/lighter_nlp`)
Ce modèle alimente ensuite le modèle final `pvt_note_nlp`.