DÉPARTEMENT D INFORMATIQUE Faculté des sciences Université de Sherbrooke TRAVAIL DE SESSION Par Équipe 14 Carolane Aubé 14046196 Geneviève Côté 14060320 Rose-Marie Brisson 14033798 Marie-Ève Berthiaume 14151972 Travail présenté à M. Marc Frappier Dans le cadre du cours IFT-187 Sherbrooke Décembre 2014
PARTIE 1 La création d un système de gestion pour les centres hospitaliers du Québec a pour objectif d optimiser la gérance de ces établissements. Puisqu il s agit d une institution à grande échelle, la base de données découlant est bien évidemment complexe. Pour le travail, on considère le cas d un système probablement en devenir au Québec; les dossiers électroniques et universels d un centre hospitalier à l autre. Le système de gestion permet notamment d identifier les patients qui ont fréquenté les hôpitaux d une région donnée à différents moments. De plus, par le numéro de dossier, il permet de retracer les notes cliniques contenant les pathologies, mais également les soins reçus et pris par les employés des différents centres hospitaliers. Ainsi, le système permet de gérer la disponibilité des chambres occupées ou inoccupées et de gérer l horaire de la disponibilité des diverses salles d examens. En plus, il permet de repérer ces chambres et ces salles à travers les multiples départements, étages et secteurs. D un autre côté, cette même base de données nous permet de recenser les employés travaillants dans les différents centres, ainsi que plusieurs autres informations connexes à cet employé. Puisqu il y a une large gamme de professionnels qui travaillent au sein d un hôpital, nous devons connaître leurs informations personnelles, dont leur département de travail. Toutes ces informations serviront à renforcer la bonne gestion des informations et faciliter les tâches de bureaucratie.
PARTIE 2 Le système est basé sur la gestion de centres hospitaliers à l aide d une base de données inspirée du modèle entité-association. On considère un système idéal dans lequel un patient possède un seul dossier qui peut être consulté et modifié par tous les hôpitaux. Une personne devient un patient dans la table au moment où elle s inscrit (en obtenant sa carte d hôpital par exemple) qu il ait consulté ou non. Entité hôpital Tout d abord, on indique, dans une première entité «hôpital», les éléments relatifs aux informations de localisation d un hôpital spécifique. On identifie cette entité par le nom de l établissement. Par ailleurs, cette entité est la base d une partie importante du modèle entité-association puisque plusieurs entités n'ont pas raison d'être sans celle-ci. Enfin, il est
possible de créer l'entité hôpital sans nécessairement ajouter d'enregistrements dans l entité avec laquelle elle est en relation, d'où les cardinalités minimales de 0 vers les autres entités (employé et consultation). L hôpital peut toutefois engager plusieurs employés et être le lieu de plusieurs consultations ce pour quoi on remarque la cardinalité maximale de «*». Entité patient Un grand nombre de patients peuvent fréquenter ces hôpitaux et ceux-ci sont identifiés dans l'entité «patient» par un numéro de dossier unique. Cette entité inclut également toutes les informations personnelles de la personne. Un patient peut occuper une seule chambre, mais cela peut ne pas lui être nécessaire d où la cardinalité «0..1». On retrouve la même situation pour les salles d examen. Entité consultation On entend par consultations le fait qu'un patient ait un rendez-vous avec un spécialiste de la santé. Chacune d entre elles se distingue par un numéro de consultation unique. Une consultation ne peut être réalisée que dans un seul établissement hospitalier pour un seul patient et par un ou plusieurs employés. Multivalué de notes cliniques Les notes cliniques se rattachent à la raison de la visite, aux diagnostiques et aux soins et examens reçus par rapport au numéro de consultation qui est la clé de l entité «consultation». En fait, il est possible que, pour une même consultation, un patient aille un ou plusieurs symptômes, ce qui peut engendrer plus d un diagnostic et plusieurs soins. Cela justifie l entité multivaluée des notes cliniques. Entité employé Le personnel des hôpitaux, comprenant entre autres l administration, les spécialistes et le personnel d entretien, est classé selon un numéro unique dans l'entité «employé». Pour être considérée comme un employé, une personne doit avoir un employeur (un hôpital). Celuici doit être unique pour un même employé. Entité faible titre de poste
Le titre de poste des employés, tels que pédiatre ou infirmier, se retrouve comme une entité faible, car il n a pas raison d être sans quelqu un pour l occuper. Une personne est associée à seulement un titre de poste, mais le même poste peut être attribué à plusieurs employés. Entité faible chambres Dans les hôpitaux se trouvent plusieurs chambres. Celle-ci dépend de l entité hôpital, c està-dire que, pour être identifié de manière unique, on doit connaitre non seulement le numéro de chambre et de lit, mais également le nom de l hôpital où il se trouve. De cette manière on peut retrouver le numéro de chambre 1 seulement une fois dans un hôpital, mais plusieurs fois dans le réseau de centres hospitalité. Considérer l entité chambre avec les mêmes attributs comme une entité à part entière n aurait permis le numéro 1, par exemple, qu une seule fois dans tout le réseau ce qui n est pas réaliste dans le contexte. On identifie des chambres uniques selon l hôpital, mais on leur attribue également un étage, un secteur et un département. Une chambre n est évidemment située que sur un seul étage, dans un seul département et secteur. Puisqu une chambre possède souvent plusieurs lits, le numéro de lit fait partie de la clé. Un hôpital contient plusieurs chambres, mais une chambre est située dans un seul hôpital comme l indique la cardinalité 0..* vers 1..1 qui est sous-entendu dans le modèle puisqu elle ne change pas pour une entité faible. On retrouve au maximum un patient pour la clé Nochambre-Nolit et la chambre peut également être vide. Entité faible salles d'examens Dans les hôpitaux les tests et les différents soins sont réalisés dans des salles d examen. On considère les petites salles de consultation, mais également les salles d opération et les salles de test (salle de rayon X par exemple). Celles-ci sont identifiées par un numéro, qui, associé à un nom d hôpital, est unique. L entité salle est donc une entité faible d «hôpital». Comme pour la relation chambre-hôpital, on identifie des salles uniques selon l hôpital, mais on leur attribue également un étage, un secteur et un département. De plus, il peut n y avoir personne dans la salle (ni patient ni employé). On peut retrouver qu un seul patient par salle, mais il peut y avoir plusieurs employés.
Entité faible départements L entité département est une entité faible d hôpital pour les mêmes raisons que salle d examen et chambre. Le personnel est réparti dans plusieurs départements, tels que la pédiatrie, la radiologie, les archives et la cardiologie. Bien entendu, un même employé ne peut être dans plusieurs départements simultanément. Toutefois, elle est associée à au moins un département d où 1..1. Cela ne signifie donc pas que l employé s y trouve, mais plutôt qu il y est affecté. Par exemple, un employé dont le poste est infirmière travaille au département de natalité. Un autre employé aussi infirmier pourrait travailler à l urgence. Un numéro de chambre se retrouve obligatoirement dans un et un seul département, mais celui-ci peut contenir aucune comme plusieurs chambres. On retrouve exactement la même situation pour la relation avec les salles d examen. Un département est nécessairement situé sur un certain étage et dans un certain secteur. Entité faible secteur L entité secteur est également une entité faible d hôpital comme le sont «chambre», «salle d examen» et «département». Un même secteur peut ne contenir aucune chambre ou salle d examen, mais on retrouve nécessairement un secteur. Ces trois entités peuvent toutes se retrouver à plusieurs reprises dans un secteur. Entité faible étage On retrouve exactement la même situation que pour l entité secteur soit les mêmes relations et les mêmes cardinalités.
PARTIE 3
drop table Hopital cascade; create table Hopital ( NomHopital varchar(40), NoCivique varchar(6), NomRue varchar(40), CodePostal char(6), Ville varchar(40), Etat varchar(30), NoDeTelephone char(10), constraint PKHopital primary key (NomHopital) drop table Secteur cascade; create table Secteur ( NomHopital varchar(40), NoSecteur varchar(15), constraint FKSecteur foreign key (NomHopital) references Hopital, constraint PKSecteur primary key (NomHopital, NoSecteur) drop table Etage cascade; create table Etage ( NoEtage smallint, NomHopital varchar(40), constraint FKEtage foreign key (NomHopital) references Hopital, constraint PKEtage primary key (NoEtage, NomHopital), check (NoEtage >0) drop table Departement cascade; create table Departement ( NoDepartement smallint, NomDepartement varchar(30), NoEtage smallint not null, NoSecteur varchar(15) not null, NomHopital varchar(40) not null, constraint PKDepartement primary key (NoDepartement, NomHopital), constraint FKDepartement foreign key (NoEtage, NomHopital) references Etage, constraint FK2Departement foreign key (NoSecteur, NomHopital) references Secteur, constraint FK3Departement foreign key (NomHopital) references Hopital, check (NoDepartement>0)
drop table Patient cascade; create table Patient ( NoDossier integer, Nom varchar(40), Prenom varchar(40), DateNaissance date, NoAssMaladie char(12), constraint PKPatient primary key (NoDossier), check (NoDossier>0) drop table SalleExamen cascade; create table SalleExamen ( NoSalle smallint, NoSecteur varchar(15) not null, NoEtage smallint not null, NomHopital varchar(40), NoDossier integer, NoDepartement smallint not null, constraint PKSalleExamen primary key (NoSalle, NomHopital), constraint FK3SalleExamen foreign key (NoDossier) references Patient, constraint FK4SalleExamen foreign key (NoDepartement, NomHopital) references Departement, constraint FKSalleExamen foreign key (NoSecteur, NomHopital) references Secteur, constraint FK2SalleExamen foreign key (NoEtage, NomHopital) references Etage, check(nosalle>0) drop table Chambre cascade; create table Chambre ( NoChambre smallint, NoLit smallint, NoEtage smallint not null, NoSecteur varchar(15) not null, NomHopital varchar(40), NoDossier integer, NoDepartement smallint not null, constraint PKChambre primary key (NoChambre,NoLit, NomHopital), constraint UChambre unique (NoDossier), constraint FKChambre4 foreign key (NoDepartement, NomHopital) references Departement, constraint FKChambre3 foreign key (NoDossier) references Patient, constraint FKChambre foreign key (NoEtage, NomHopital) references Etage, constraint FK2Chambre foreign key (NoSecteur, NomHopital) references Secteur, check (NoChambre>0), check (NoLit>0)
drop table Consultation cascade; create table Consultation ( NoConsultation integer, DateHeureArrivee timestamp, NomHopital varchar(40) not null, NoDossier integer not null, constraint PKConsultation primary key (NoConsultation), constraint FKConsultation foreign key (NomHopital) references Hopital, constraint FK2Consultation foreign key (NoDossier) references Patient, check(noconsultation>0) drop table NotesCliniques cascade; create table NotesCliniques ( NoConsultation integer, NomSymptome varchar(30), NomDiagnostique varchar(30), SoinRecu varchar(30), constraint PKNotesCliniques primary key (NoConsultation,NomSymptome,NomDiagnostique,SoinRecu), constraint FKNotesCliniques foreign key (NoConsultation) references Consultation drop table Employe cascade; create table Employe ( NoEmploye integer, Nom varchar(30), Prenom varchar(30), NomHopital varchar(40) not null, NoSalle smallint, NoDepartement smallint not null, constraint PKEmploye primary key (NoEmploye), constraint FKEmploye foreign key (NomHopital) references Hopital, constraint FK2Employe foreign key (NoSalle, NomHopital) references SalleExamen, constraint FK3Employe foreign key (NoDepartement, NomHopital) references Departement, check(noemploye>0) drop table TitrePoste cascade; create table TitrePoste ( NoEmploye integer, NomTitre varchar(30), constraint PKTitrePoste primary key (NoEmploye, NomTitre), constraint FKTitrePoste foreign key (NoEmploye) references Employe
drop table Effectue2 cascade; create table Effectue2 ( NoConsultation integer, NoEmploye integer, constraint PKEffectue2 primary key (NoConsultation), constraint UEffectue2 unique (NoConsultation,NoEmploye), constraint FKEffectue2 foreign key (NoConsultation) references Consultation, constraint FK2Effectue2 foreign key (NoEmploye) references Employe alter table Consultation add constraint FK3Consultation foreign key (NoConsultation) references Effectue2;