You are on page 1of 3

TP Langage SQL: Création des Tables et Insertion des Données

Gestion des données des patients et de leurs assurances Médicales

-- Patient Schema
-- SQL: Practical Guide for Developers

DROP DATABASE patient;

CREATE DATABASE patient;

CREATE TABLE physician (


physicianid INTEGER PRIMARY KEY,
name CHAR(30) NOT NULL,
salary NUMERIC(8, 2) CHECK (salary >= 0)
);

CREATE TABLE patient (


patientid INTEGER PRIMARY KEY,
firstname VARCHAR(30),
lastname VARCHAR(30),
gender CHAR(1) CHECK (gender IN ('M', 'F')),
primaryphysician INTEGER,
birthday DATE,
insurance INTEGER,
FOREIGN KEY(primaryphysician) REFERENCES physician(physicianid)
);

CREATE TABLE insurance (


cardholder INTEGER PRIMARY KEY,
company VARCHAR(50) NOT NULL,
copay NUMERIC(5,2) CHECK (copay >= 0),
FOREIGN KEY(cardholder) REFERENCES patient(patientid)
);

ALTER TABLE patient ADD FOREIGN KEY (insurance) REFERENCES


insurance(cardholder);

-- A patient may only visit once per day. The visit designates a primary
physician
CREATE TABLE visits (
patientid INTEGER,
visitdate DATE,
physicianid INTEGER,
PRIMARY KEY(patientid, visitdate),
FOREIGN KEY(patientid) REFERENCES patient(patientid),
FOREIGN KEY(physicianid) REFERENCES physician(physicianid)
);

CREATE TABLE medicalprocedure (


procedureid CHAR(5) PRIMARY KEY, -- ID of procedure
name VARCHAR(30), -- Name of procedure
followup CHAR(5), -- ID of follow up procedure

1
risk CHAR(20) CHECK (risk IN ('Minimal', 'Moderate', 'High', 'Certain
Death')),
price NUMERIC(5,2) CHECK (price >= 0), -- Cost for receiving procedure
FOREIGN KEY(followup) REFERENCES medicalprocedure(procedureid)
);

-- A medical procedure may only be conducted during a patient visit, and


then it may
-- only be conducted once.
CREATE TABLE conducts (
patientid INTEGER, -- ID of patient receiving medical procedure
visitdate DATE, -- Date of visit that includes this procedure
procedureid CHAR(5), -- ID of procedure patient received
physicianid INTEGER, -- ID of physician conducting procedure
charge NUMERIC(5,2), -- Actual charge for procedure
PRIMARY KEY(patientid, visitdate, procedureid),
FOREIGN KEY(patientid, visitdate) REFERENCES visits(patientid,
visitdate),
FOREIGN KEY(physicianid) REFERENCES physician(physicianid),
FOREIGN KEY(procedureid) REFERENCES medicalprocedure(procedureid)
);

INSERT INTO physician VALUES (1, 'Edward Scalpelhands', 100000);


INSERT INTO physician VALUES (2, 'Ann Ethesiologist', 134000);
INSERT INTO physician VALUES (3, 'Jane Doe', NULL);
INSERT INTO physician VALUES (4, 'Neal Natology', 167000);

INSERT INTO patient VALUES (1, 'Jane', 'Doe', 'F', 1, '1972-08-23', NULL);
INSERT INTO patient VALUES (2, 'Jack', 'Doe', 'M', 1, '1971-02-24', NULL);
INSERT INTO patient VALUES (3, 'Jack', 'Doe Jr.', 'M', 1, '1998-11-13',
NULL);
INSERT INTO patient VALUES (4, 'Earl', 'Jackson', 'M', NULL, '1956-01-01',
NULL);
INSERT INTO patient VALUES (5, 'Fred', 'Smith', 'M', 3, NULL, NULL);
INSERT INTO patient VALUES (6, 'Sara', 'Smith', 'F', 2, '1967-08-09',
NULL);
INSERT INTO patient VALUES (7, 'Pat', 'Rosenberg', NULL, 3, '1970-05-17',
NULL);
INSERT INTO patient VALUES (8, 'George', 'Jones', 'M', 3, '1965-11-23',
NULL);
INSERT INTO patient VALUES (9, 'Melissa ', 'Franklin', 'F', 3, '1962-05-
17', NULL);

INSERT INTO insurance VALUES (2, 'Nopay', 20);


INSERT INTO insurance VALUES (5, 'Till Death', 25);
INSERT INTO insurance VALUES (7, 'Exclaim Insurers', 15);
INSERT INTO insurance VALUES (9, 'Copay Surprise', NULL);

UPDATE PATIENT SET insurance = 2 WHERE patientid IN (1, 2, 3);


UPDATE PATIENT SET insurance = 5 WHERE patientid IN (5, 6);
UPDATE PATIENT SET insurance = 7 WHERE patientid IN (7);
UPDATE PATIENT SET insurance = 9 WHERE patientid IN (8, 9);

INSERT INTO visits VALUES (3, '2005-04-05', 1);


INSERT INTO visits VALUES (3, '2005-04-26', NULL);
INSERT INTO visits VALUES (3, '2005-08-02', 2);
INSERT INTO visits VALUES (2, '2004-12-15', 1);
INSERT INTO visits VALUES (2, '2005-01-19', 3);
INSERT INTO visits VALUES (5, '2004-11-25', 3);
INSERT INTO visits VALUES (5, '2005-11-25', 2);
INSERT INTO visits VALUES (4, '2004-03-29', 2);

2
INSERT INTO visits VALUES (4, '2005-01-18', NULL);
INSERT INTO visits VALUES (7, '2004-10-12', 3);
INSERT INTO visits VALUES (7, '2004-11-15', 2);
INSERT INTO visits VALUES (7, '2005-03-02', 3);
INSERT INTO visits VALUES (7, '2005-06-27', 1);
INSERT INTO visits VALUES (8, '2005-01-02', 2);

INSERT INTO medicalprocedure VALUES ('BNDAD', 'Bandage', NULL, 'Minimal',


25);
INSERT INTO medicalprocedure VALUES ('RMSTC', 'Remove Stitches', NULL,
'Moderate', 100);
INSERT INTO medicalprocedure VALUES ('STICH', 'Stitch', 'RMSTC',
'Moderate', 50);
INSERT INTO medicalprocedure VALUES ('DRUGS', 'Medicate', NULL, 'High',
15);
INSERT INTO medicalprocedure VALUES ('RDPBF', 'Reduce % Body Fat for $',
NULL, 'Certain Death', NULL);

INSERT INTO conducts VALUES (3, '2005-04-05', 'STICH', 1, 45);


INSERT INTO conducts VALUES (3, '2005-04-05', 'DRUGS', 1, 12);
INSERT INTO conducts VALUES (3, '2005-04-26', 'RMSTC', 3, 60);
INSERT INTO conducts VALUES (2, '2004-12-15', 'DRUGS', 1, 10);
INSERT INTO conducts VALUES (5, '2004-11-25', 'STICH', 3, 50);
INSERT INTO conducts VALUES (4, '2005-01-18', 'RMSTC', 2, 110);
INSERT INTO conducts VALUES (7, '2004-10-12', 'DRUGS', 4, 12);

You might also like