Créer un groupe de patients
Analysez des sous-ensembles de population à l’aide des groupes de patients
Introduction
Au cours d'un projet, il est souvent nécessaire de travailler sur un sous-ensemble de la population de patients d'un set de données : c'est ce que permettent les groupes de patients.
Nous allons voir comment :
- Créer un groupe de patients
- Ajouter des patients à ce groupe
- Retirer des patients
Créer un groupe de patients
Pour créer un groupe de patients (ou subset), rendez-vous sur la page des Groupes de patients. Pour cela, il est nécessaire d’avoir chargé un projet. Cliquez ensuite sur l’icône “Groupes de patients” à partir du menu en haut de la page, à droite du nom du projet chargé.
Vous arriverez sur la page des groupes de patients du projet.
Un groupe de patients est un sous-ensemble d’un set de données, mais il dépend d’un projet. Si deux projets utilisent le même set de données, ils ne partageront pas les mêmes sets de données.
Un groupe “Tous les patients” est créé par défaut à la création d’un projet.
Pour créer un groupe de patients, cliquez sur l’icône “+” à gauche de l’écran.
Choisissez un nom, puis cliquez sur “Ajouter”. Nous allons pour l’exemple un groupe contenant les patients âgés de plus de 50 ans.
Cliquez sur le groupe que vous venez de créer : vous arriverez sur la page du groupe sélectionné.
A droite de l’écran, vous avez deux onglets :
- Sommaire : sont présentées les informations du groupe de patients, qu’il est possible modifier (notamment la description)
- Code : cet onglet permet de modifier le code et de rajouter ou retirer des patients d’un groupe, ce que nous allons voir dans les prochains paragraphes
Ajouter des patients à un groupe
Pour ajouter des patients à un subset, nous utilisons la fonction add_patients_to_subset
.
Cette fonction prend ces deux arguments :
patients
: un vecteur numérique contenant les ID des patients à ajouter
subset_id
: l’ID du groupe auquel les patients seront ajoutés (par défaut l’ID du groupe sélectionné, modifier cet argument est utile dans les plugins notamment)
A la création d’un groupe de patients, le code permettant d’ajouter tous les patients au groupe est créé.
Ce code sera exécuté si l’utilisateur appuie sur le bouton pour exécuter le code, ou si le groupe est sélectionné depuis le projet (et s’il ne contient pas déjà des patients).
Nous allons modifier ce code pour ajouter les patients de plus de 50 ans.
Reprenons le code pour créer une colonne contenant l’âge des patients, depuis le tutoriel sur les requêtes OMOP usuelles.
d$visit_occurrence %>%
dplyr::left_join(
d$person %>% dplyr::select(person_id, birth_datetime),
by = "person_id"
) %>%
dplyr::collect() %>%
dplyr::mutate(
age = round(as.numeric(difftime(visit_start_datetime, birth_datetime, units = "days")) / 365.25, 1)
)
L’éditeur de code du groupe sélectionné permet de tester le code. Nous allons extraire les ID des patients ayant un âge supérieur à 50 ans. Nous mettons pour l’instant la fonction add_patients_to_subset
en commentaire.

d$visit_occurrence %>%
dplyr::left_join(
d$person %>% dplyr::select(person_id, birth_datetime),
by = "person_id"
) %>%
dplyr::collect() %>%
dplyr::mutate(
age = round(as.numeric(difftime(visit_start_datetime, birth_datetime, units = "days")) / 365.25, 1)
) %>%
dplyr::filter(age > 50) %>%
dplyr::distinct(person_id) %>%
dplyr::pull()
Notre code fonctionne, nous pouvons donc stocker ces ID dans une variable puis l’intégrer à la fonction add_patients_to_subset
.

patients <-
d$visit_occurrence %>%
dplyr::left_join(
d$person %>% dplyr::select(person_id, birth_datetime),
by = "person_id"
) %>%
dplyr::collect() %>%
dplyr::mutate(
age = round(as.numeric(difftime(visit_start_datetime, birth_datetime, units = "days")) / 365.25, 1)
) %>%
dplyr::filter(age > 50) %>%
dplyr::distinct(person_id) %>%
dplyr::pull()
add_patients_to_subset(patients = patients)
Un message nous indique que les patients ont bien été ajoutés au groupe.
A noter qu’ici nous avons ajouté des patients au groupe, mais il est également possible de filtrer :
- Sur le séjour hospitalier, en ajoutant la colonne
visit_occurrence
dans la variable patients
- Sur les séjours dans les services, en ajoutant la colonne
visit_detail
dans la variable patients
Interface graphique
Il n'existe pas encore d'interface graphique, qui serait bien utile pour filtrer les patients sur certaines caractéristiques (âge, sexe, durée de séjour, dates d'hospitalisation, présence de concepts tels que des diagnostics ou des traitements).
Cette interface graphique sera développée dans la prochaine version.
Retirer des patients d’un groupe
Pour retirer des patients d’un groupe, il faut utiliser la fonction remove_patients_from_subset
, qui fonctionne comme add_patients_to_subset
, avec les mêmes arguments : patients
et subset_id
.
Nous pourrions par exemple, après avoir ajouté tous les patients dans le groupe, retirer ceux ayant un âge inférieur ou égal à 50 ans.
Intégration dans les plugins
Il serait intéressant de créer un plugin de Données individuelles permettant d’exclure des patients avec un ou plusieurs critères d’exclusions, créés par l’utilisateur.
On pourrait imaginer que ce plugin retire les patients du groupe “Patients inclus”, et les ajouteraient au groupe “Patients exclus”.
Pour ce faire, il suffirait d’utiliser les fonctions add_patients_to_subset
et remove_patients_from_subset
depuis le plugin.
Comment récupérer l’ID des groupes de patients ? Grâce à la variable m$subsets
.

Il n’y a plus qu’à créer le plugin !
Conclusion
Nous avons vu comment créer des groupes de patients, et comment ajouter et supprimer des patients d'un groupe.
Une interface graphique sera prochainement développée pour faciliter l'ajout et la suppression de patients.
Nous allons par la suite nous intéresser à des fonctionnalités plus techniques de LinkR, à savoir :
Si vous ne souhaitez pas explorer ces fonctionnalités, il ne vous reste qu'à lire les chapitres relatifs au partage du contenu :