Vous êtes sur la page 1sur 3

Gestion dun hpital o

On donne en n de sujet le MCD correspondant ` la gestion dun hpital, accompagn du schma a o e e relationnel de la base. Ce TP est la proprit dun pseudo-utilisateur nomm HOSTO, qui vous a donn ee e e des droits de lecture sur ses tables. Vous ne pouvez cependant crire pour autant des traitements destins e e a ` manipuler ces derni`res. Vous devrez donc, dans un premier temps, recopier chez vous celles qui vous e seront ncessaires (et seulement celles-l` an dconomiser lespace commun au groupe LICENCE). e a e Dans ce premier TP, il vous est demand dcrire et de tester les fonctions et procdures suivantes : e e e 1. la fonction duree_sejour(patient number, de char) return number qui calcule la dure du e sjour dun patient de numro donn, entr ` lhpital ` la date dentre de. e e e ea o a e 2. la fonction cout_sejour(patient number, de char) return number qui calcule le cot total du u sjour dun patient donn. Ce cot est compos : e e u e du prix de chaque journe passe ` lhpital e e a o de celui des visites de mdecins e de celui des analyses et des mdicaments prescrits lors des soins prodigus. e e REM : pour ce faire, vous devrez raliser des comparaisons entre les dates de sjour. Or, celles-ci e e sont reprsentes sous forme de cha e e nes de caract`res. De ce fait, une date dentre correspondant e e par exemple au 28 novembre sera considre comme postrieure ` la date de sortie correspondant, ee e a elle, au 2 dcembre. Une ventuelle interrogation pour un soin compris entre ces deux dates ne e e ram`nera que la valeur NULL. e Pour contourner cette dicult, vous devrez concevoir, crire et tester une fonction auxiliaire pere e mettant de raliser une comparaison valide entre deux dates, quelles quelles soient. e 3. la fonction cout_moyen_journee() return number qui retourne le rsultat en invoquant la fonce tion prcdente pour lensemble de tous les sjours eectus par lensemble des patients ayant e e e e sjourn dans lhpital. e e o 4. la fonction cout_total_patient(patient number) return number qui value ce qua pu coter e u un patient donn lors de lensemble de ses sjours ` lhpital. e e a o 5. la procdure historique_mdicaments(patient number) qui ache, classs par date de soin, la e e e dsignation de tous les mdicaments prescrits ` un patient donn. e e a e 6. la procdure historique_soins(numpat number) qui, pour un patient donn : e e ache les dates dentre et de sortie des dirents sjours. e e e pour un sjour donn, indique le nom des mdecins ayant assurs des soins e e e e pour chaque mdecin, la liste des mdicaments prescrits, ainsi que celle des analyses avec leur e e rsultat. e 7. la procdure qui_a_soigne(patient number) qui ache la liste des mdecins ayant assur des e e e soins ` un patient donn, en prcisant la date dintervention. a e e

MCD de la base
1,N
PATIENTS 1,N numpat 1,N 1,N SEJOURS Entree Sortie VISITES Jour SERVICES numserv 1,N

REALISER 1,1 date_anal

1,N ANALYSES
numanl

1,N

1,N
1,1 TRAVAILLE

1,N
RESULTATS

1,N LABORATOIRES

SOINS nature date_soin

1,N MEDECINS numed

1,1 1,1 1,N


1,N 1,N MEDICAMENTS refmed 1,N CHEF

numres

PAR

numlab

COMPATIBLES

Schma relationnel e

create table medicaments(refmed number primary key, designation varchar2(30), laboratoire varchar2(30), prix float);

create table patients(numpat number primary key, nom varchar2(30), prenom varchar2(30), ville varchar2(50), sexe char(1));

create table medecins(numed number primary key, nom varchar2(30), prenom varchar2(30), specialite varchar2(50), service varchar2(50)); create table laboratoires(numlab number primary key, nom varchar2(50)); create table services(numserv number primary key, nomserv varchar2(30), chef number); create table analyses(numanl number primary key, designation varchar2(30), laboratoire number, prix float); create table sejours(numsejour number primary key,numpat number, numserv number, entree char(10), sortie char(10)); create table soins(numsoin number primary key, numpat number, numed number, refmed number, date_soin char(10)); create table realiser(numrealise number primary key, numpat number, numed number, numanl number, numres number, date_analyse char(10)); create table resultats(numres number primary key, libelle varchar2(100)); create table compatibles(refmed1 number, refmed2 number, primary key(refmed1,refmed2)); create table tarifs(prix_journee number(10,2), prix_visite number(10,2));