J'ai écrit une chanson sur le fil dentaire, mais les dents de quelqu'un sont-elles devenues plus propres ?
Frank Zappa
Lorsque nous pensons au cabinet dentaire, nos premières associations sont la perceuse, la douleur et la peur. OK, ça sonne mal. En plus de prendre soin de ses dents, un dentiste a de nombreuses autres obligations professionnelles, légales ou les deux. Tous nécessitent une gestion appropriée des données.
Pour répondre à cette exigence de documentation, de nombreux cabinets dentaires et médicaux utilisent des dossiers papier. Lentement mais sûrement, cependant, il y a une tendance vers les documents numériques et la gestion du 21e siècle.
À l'intérieur du Bureau de médecine dentaire
Aller chez le dentiste n'est pas quelque chose dont nous nous souvenons habituellement avec joie. Si nous avons eu de la chance, nous avons esquivé la douleur, mais notre portefeuille a probablement beaucoup souffert. Une fois que nous sommes entrés dans le cabinet d'un dentiste, la procédure est généralement la suivante :
- Vous vous engagez tous les deux dans une courte conversation. (Souvent désagréable parce que vous avez promis à votre dentiste de lui rendre visite la semaine prochaine et que 2 ans se sont écoulés. Ensuite, vous dites que vous avez oublié, il accepte et tout va bien à nouveau.)
- Vous vous asseyez sur la chaise pendant qu'il regarde vos dossiers de traitement précédents. Il demande si quelque chose s'est passé depuis la dernière visite et s'il y a une mise à jour de votre dossier médical.
- Il regarde à l'intérieur de votre bouche pour déterminer ce qui ne va pas et vous dit ce qui va le réparer.
- Vous pouvez accepter son plan de traitement ou choisir une autre option.
- Quelques mois plus tard, un sourire hollywoodien est de nouveau sur votre visage. Cela aurait été plus tôt, mais vous ne pouviez pas sourire tant que vous n'aviez pas finalement payé l'intégralité de la facture de vos soins dentaires.
À ce stade, même le professionnel des bases de données le plus dévoué ne pense probablement pas :"Wow, j'aimerais qu'il y ait un modèle de données pour cette expérience !" . Mais il y en a, et cela vaut la peine d'être examiné. Nous l'avons donc imprimé ci-dessous.
Présentation de notre modèle de base de données de cabinet dentaire
L'idée derrière ce modèle est de couvrir chaque procédure à partir du moment où nous entrons pour la première fois dans le cabinet du dentiste jusqu'à ce que le problème soit résolu. Une partie de ce modèle (les tables étiquetées user_account
, status
, user_has_status
, role
, user_has_role
) a été présenté et décrit dans des articles précédents. Peut-être que les rôles et les statuts semblent inutiles ici, mais rappelez-vous que la pratique pourrait également contenir une infirmière pour gérer l'anamnèse (prise de dossier), une réceptionniste, un étudiant en médecine dentaire, plusieurs assistantes dentaires formées, ou même un spécialiste visiteur ou un hygiéniste. Cependant, les détails de paiement ne seront pas pris en compte dans cet article.
Tableaux de la base de données dentaire
Le patient
table est l'une des deux tables les plus importantes de la base de données. Il stocke les données des patients et est connecté aux documents et aux visites des patients. A l'exception de mail
, tous les attributs du tableau sont obligatoires :
name
– le nom du patientsurname
– le nom de famille du patientidentification_number
– ce champ est utilisé pour stocker l'identifiant unique d'un client qui est utilisé dans le monde réeladdress
– l'adresse du patientphone
– le numéro de téléphone du patientmail
– l'adresse mail du patient
La deuxième table la plus importante dans la base de données est visit
. Lorsqu'il est combiné avec le tableau patient
, il stocke des informations sur l'événement qui a déclenché toutes les actions suivantes. Les attributs du tableau sont :
visit_date
– contient la date et l'heure réelles de la visitepatient_id
– est l'identifiant du patient lié à sa visitedentist_id
– est une référence àuser_has_role
table, en supposant que le rôle est dentiste
La prochaine étape est l'anamnesis
table. En médecine, l'anamnèse est une procédure où nous collectons et stockons l'historique des données médicales, telles que l'état actuel du patient. L'anamnesis
table stocke ces données. Comme cela se produit peu de temps après notre arrivée au bureau, nous aurons au maximum une anamnèse par événement. Les attributs du tableau sont :
anamnesis_id
– est la clé primaire de l'anamnesis
table, qui fait également référence à lavisit
tableauuser_anamnesis_id
– cela concerne leuser_has_role
table. Notez que le dentiste n'a pas à être celui qui a fait l'anamnèse.notes
– contient des notes de texte sur l'anamnèse spécifique. Ce n'est pas un champ obligatoire.
Le anamnesis_type
table est un simple dictionnaire utilisé pour stocker toutes les valeurs possibles qui sont référencées dans anamnesis_catalog
. Le seul attribut est type_name
, et il peut contenir des valeurs telles que "maladie", "allergie", "médicament utilisé". Bien sûr, ce seul attribut est obligatoire.
Le anamnesis_catalog
table est un dictionnaire qui donne des informations plus spécifiques que les valeurs stockées dans le anamnesis_type
table. Nous l'utiliserons pour conserver des données sur des maladies, des allergies et des médicaments spécifiques. Les attributs sont tous obligatoires et incluent :
catalog_name
– est le nom deanamnesis_type
sous-catégorieanamnesis_type_id
– est une référence auanamnesis_type
tableau
Le visit_anamnesis
table est utilisée pour relier les données de visite aux valeurs du catalogue d'anamnèse. Chaque attribut du tableau est obligatoire :
anamnesis_anamnesis_id
– est une référence à l'anamnesis
tableauanamnesis_catalog_id
– est une référence auanamnesis_catalog
tableau
Notez que le visit_anamnesis
table est une relation plusieurs-à-plusieurs reliant les tables étiquetées anamnesis
et anamnesis_catalog
. Il est inutile de stocker ce couple (anamnesis_anamnesis_id
&anamnesis_catalog_id
) à deux reprises. Nous utiliserons cette paire comme clé primaire.
Le document
table est un simple catalogue contenant les emplacements où nous avons enregistré les documents des patients. Des exemples de tels documents peuvent être des scans des dossiers des patients, des radiographies et des factures. Bien sûr, nous n'enregistrerons pas ces documents directement dans la base de données. Il s'agit d'une simplification grossière du système de gestion de documents. Les attributs du document
table sont (tous sont obligatoires) :
description
– est une brève description du documentlocation
– contient l'emplacement exact du documentpatient_id
– est une référence aupatient
tableau
La tooth
Le tableau est un dictionnaire simple qui est utilisé plus tard lorsque le dentiste précise quelle dent était le problème. Tous les attributs de ce tableau sont obligatoires. Ce sont :
is_baby_tooth
– est une valeur booléenne qui indique simplement si une dent est une dent de lait ou non. Bien sûr, nous aurons des valeurs en double pour les dents qui peuvent être les deux. Ceci est important car une procédure peut différer selon le type de dent.tooth
– est une description utilisée pour la dent qui fait le travail – généralement, cette valeur sera affichée à l'écran.
Le problem_catalog
table est un autre dictionnaire simple. Il contient une liste de tous les problèmes possibles que l'on trouve normalement sur les dents ou dans la bouche. Des exemples de valeurs possibles pour ce catalogue sont :« carie dentaire », « érosion dentaire », « gingivite », « plaies buccales » ou « sourire peu attrayant ». Seul le problem_name
l'attribut est obligatoire.
Le problem_detected
le tableau relie les données du catalogue de visites, de dents et de problèmes avec le treatment
table. Il contient des références à la tooth
, problem_catalog
et visit
les tables. Tous les attributs sont obligatoires sauf tooth_id
. La raison de cette exception est que certains problèmes ne se réfèrent pas à une seule dent (par exemple, la gingivite se réfère aux gencives). Ces trois attributs forment ensemble une clé alternative (UNIQUE). Les deux autres attributs sont :
suggested_treatment_id
est une référence autreatment
table (le traitement proposé par le dentiste). Il peut s'agir d'une valeur NULL lorsque tout va bien et que nous n'avons besoin d'aucun traitement.selected_treatment_id
est une autre référence autreatment
table. Il contient des données sur le traitement que le dentiste et le patient ont accepté d'utiliser. Cela peut être NULL, peut-être parce que le patient a besoin de temps pour réfléchir au traitement suggéré et à d'autres possibilités.
Notez que les attributs suggested_treatment_id
et selected_treatment_id
sont tous deux référencés au treatment
table. Nous pouvons le faire car nous n'avons besoin de stocker que deux valeurs au maximum. Bien sûr, si nous ne savons pas à l'avance combien de valeurs nous voulons stocker, nous devrions utiliser ici une relation plusieurs à plusieurs.
L'step
table est un simple dictionnaire contenant toutes les étapes possibles dans tous les traitements. Les attributs (tous obligatoires) du tableau sont :
step_name
– est un nom de pas court utilisé à l'écrandescription
– est une description des actions entreprises au cours de cette étape
Le treatment
table est en fait un dictionnaire de tous les traitements que le cabinet dentaire dispense. Étant donné que la plupart des traitements consistent généralement en plusieurs étapes, nous devons savoir quelle étape est finale. Les attributs du tableau sont tous obligatoires :
treatment_name
– est le nom du traitement dans le systèmedescription
– est une courte description du traitementfinal_step_id
– est une référence à l'step
table. Nous pouvons utiliser ces informations pour détecter si le traitement est terminé et lancer une action automatique, ou nous pouvons simplement montrer ces informations à l'utilisateur et le laisser choisir l'action suivante.
Les treatment_steps
table est une relation plusieurs-à-plusieurs qui relie les étapes aux traitements. Les attributs obligatoires dans le tableau sont :
treatment_id
– est une référence autreatment
tableaustep_id
– est une référence à l'step
tableaustep_order
– est un nombre qui définit l'ordre des étapes du traitement
Dans ce tableau deux clés alternatives (UNIQUE) sont définies :
- paire (
treatment_id
&step_id
) – cette étape ne peut être attribuée au traitement qu'une seule fois - paire (
treatment_id
&step_order
) – le traitement ne peut pas avoir deux étapes avec le même numéro de commande
Les visit_steps
Le tableau est une liste de toutes les étapes qui ont été effectivement réalisées après cette visite. Il y a deux raisons pour lesquelles nous voulons les stocker dans des tables séparées :
- Nous avons peut-être choisi un traitement, mais nous n'avons pas besoin de toutes les étapes définies pour celui-ci, et
- De cette façon, nous enregistrerons l'heure réelle à laquelle l'étape a été effectuée.
Les attributs du tableau (tous sont obligatoires sauf problem_detected_id
et notes
) sont les suivants :
visit_id
– est une référence à lavisit
tableautreatment_steps_id
– est une référence auxtreatment_steps
tableauproblem_detected_id
– est une référence auproblem_detected
table. Cette relation nous donne des informations sur le problème qui a initié cette action. Il peut être NULL lorsque le dentiste décide de prendre des mesures qui ne sont liées à aucun problème détecté.step_time
– est la date et/ou l'heure à laquelle l'étape a été effectivement réaliséenotes
– sont des notes pour cette étape, si nécessaire
Le visit_status
table est un simple dictionnaire utilisé pour stocker tous les statuts possibles qu'une visite pourrait avoir. Nous pourrions utiliser des statuts tels que "première visite au cabinet", "première visite", "traitement en cours", "traitement terminé avec succès". Il ne contient qu'un seul attribut, status_name
, qui est obligatoire.
Le visit_status_history
La table est utilisée pour stocker des données sur les statuts par lesquels la visite est passée. L'idée est que nous ajoutons le statut manuellement une fois certaines actions terminées (par exemple, après l'anamnèse, après avoir terminé quelques étapes d'un traitement). Les attributs, qui sont tous obligatoires, suivent :
status_time
– est la date/heure à laquelle le statut a été insérévisit_status_id
– est une référence auvisit_status
tableauvisit_id
– est une référence à lavisit
tableau
Améliorations possibles du modèle de base de données dentaire
Notre modèle est bien parti, mais il pourrait être amélioré. Par exemple, il ne couvre pas les éléments suivants :
- modes de paiement et factures
- planifier des réunions (bien que cela puisse être fait en insérant des données dans le
visit_steps
tableau pour les événements futurs) - gestion des documents
Pourtant, cela vous fait penser différemment votre cabinet dentaire et ses procédures, n'est-ce pas ?