DO $$ begin IF NOT EXISTS(SELECT schema_name FROM information_schema.schemata WHERE schema_name = 'myhealth') THEN CREATE SCHEMA myhealth; END IF; IF NOT EXISTS (SELECT 1 FROM pg_roles WHERE rolname='usrmyhealth') THEN create user usrmyhealth with encrypted password 'myhealth.123'; END IF; IF NOT EXISTS (SELECT 1 FROM pg_roles WHERE rolname='USER') THEN create user "USER" with encrypted password 'PASSWORD'; END IF; GRANT ALL ON SCHEMA myhealth TO "USER"; GRANT ALL ON SCHEMA myhealth TO usrmyhealth; if exists (SELECT 1 FROM pg_tables WHERE schemaname='myhealth' and tablename='administrator') THEN drop table myhealth.administrator; end if; if exists (SELECT 1 FROM pg_tables WHERE schemaname='myhealth' and tablename='medicaltest') THEN drop table myhealth.medicaltest; end if; if exists (SELECT 1 FROM pg_tables WHERE schemaname='myhealth' and tablename='question') THEN drop table myhealth.question; end if; if exists (SELECT 1 FROM pg_tables WHERE schemaname='myhealth' and tablename='response') THEN drop table myhealth.response; end if; if exists (SELECT 1 FROM pg_tables WHERE schemaname='myhealth' and tablename='visit') THEN drop table myhealth.visit; end if; if exists (SELECT 1 FROM pg_tables WHERE schemaname='myhealth' and tablename='patient') THEN drop table myhealth.patient; end if; if exists (SELECT 1 FROM pg_tables WHERE schemaname='myhealth' and tablename='familydoctor') THEN drop table myhealth.familydoctor; end if; if exists (SELECT 1 FROM pg_tables WHERE schemaname='myhealth' and tablename='primaryhealthcarecenter') THEN drop table myhealth.primaryhealthcarecenter; end if; if exists (SELECT 1 FROM pg_tables WHERE schemaname='myhealth' and tablename='specialistdoctor') THEN drop table myhealth.specialistdoctor; end if; if exists (SELECT 1 FROM pg_tables WHERE schemaname='myhealth' and tablename='medicalspecialty') THEN drop table myhealth.medicalspecialty; end if; /* drop table myhealth.administrator; drop table myhealth.familydoctor; drop table myhealth.medicalspecialty; drop table myhealth.medicaltest; drop table myhealth.patient; drop table myhealth.primaryhealthcarecenter; drop table myhealth.question; drop table myhealth.response; drop table myhealth.specialistdoctor; drop table myhealth.visit; */ if exists (SELECT 1 FROM pg_sequences WHERE schemaname='myhealth' and sequencename='profesionalnumber') THEN drop sequence myhealth.profesionalnumber; end if; if exists (SELECT 1 FROM pg_sequences WHERE schemaname='myhealth' and sequencename='codigoidentificacionpaciente') THEN drop sequence myhealth.codigoidentificacionpaciente; end if; CREATE SEQUENCE myhealth.ProfesionalNumber INCREMENT 1 START 1000 MINVALUE 1000 CACHE 1; CREATE SEQUENCE myhealth.CodigoIdentificacionPaciente INCREMENT 1 START 1000 MINVALUE 1000 CACHE 1; -- Table: myhealth.administrator -- DROP TABLE myhealth.administrator; CREATE TABLE myhealth.administrator ( email VARCHAR(120) COLLATE pg_catalog."default" NOT NULL, password VARCHAR(100) COLLATE pg_catalog."default" NOT NULL, CONSTRAINT administrator_pkey PRIMARY KEY (email) ) TABLESPACE pg_default; ALTER TABLE myhealth.administrator OWNER to "USER"; -- Table: myhealth.primaryhealthcarecenter -- DROP TABLE myhealth.primaryhealthcarecenter; CREATE TABLE myhealth.primaryhealthcarecenter ( id integer NOT NULL GENERATED ALWAYS AS IDENTITY ( INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 2147483647 CACHE 1 ), name VARCHAR(150) COLLATE pg_catalog."default" NOT NULL, location VARCHAR(512) COLLATE pg_catalog."default", CONSTRAINT primaryhealthcarecenter_pkey PRIMARY KEY (id) ) TABLESPACE pg_default; ALTER TABLE myhealth.primaryhealthcarecenter OWNER to "USER"; -- Table: myhealth.familydoctor -- DROP TABLE myhealth.familydoctor; CREATE TABLE myhealth.familydoctor ( id integer NOT NULL GENERATED ALWAYS AS IDENTITY ( INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 2147483647 CACHE 1 ), professionalnumber VARCHAR(15) NOT NULL COLLATE pg_catalog."default", password VARCHAR(100) NOT NULL COLLATE pg_catalog."default", nif VARCHAR(50) NOT NULL COLLATE pg_catalog."default", name VARCHAR(100) NOT NULL COLLATE pg_catalog."default", surname VARCHAR(100) NOT NULL COLLATE pg_catalog."default", email VARCHAR(120) COLLATE pg_catalog."default", primaryhealthcarecenterid integer REFERENCES myhealth.primaryhealthcarecenter(id) , CONSTRAINT familydoctor_pkey PRIMARY KEY (id) ) TABLESPACE pg_default; CREATE UNIQUE INDEX family_doctor_professionaln_index ON myhealth.familydoctor (professionalnumber); ALTER TABLE myhealth.familydoctor OWNER to "USER"; -- Table: myhealth.medicalspecialty -- DROP TABLE myhealth.medicalspecialty; CREATE TABLE myhealth.medicalspecialty ( id INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY ( INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 2147483647 CACHE 1 ), name VARCHAR(50) COLLATE pg_catalog."default" NOT NULL UNIQUE, description VARCHAR(1000) COLLATE pg_catalog."default", CONSTRAINT medicalspecialty_pkey PRIMARY KEY (id) ) TABLESPACE pg_default; ALTER TABLE myhealth.medicalspecialty OWNER to "USER"; -- Table: myhealth.patient -- DROP TABLE myhealth.patient; CREATE TABLE myhealth.patient ( id INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY ( INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 2147483647 CACHE 1 ), personalIdentificationCode VARCHAR(15) NOT NULL COLLATE pg_catalog."default", password VARCHAR(100) NOT NULL COLLATE pg_catalog."default", nif VARCHAR(50) NOT NULL COLLATE pg_catalog."default", name VARCHAR(100) NOT NULL COLLATE pg_catalog."default", surname VARCHAR(100) NOT NULL COLLATE pg_catalog."default", email VARCHAR(120) COLLATE pg_catalog."default", familydoctorid INTEGER REFERENCES myhealth.familydoctor(id), CONSTRAINT patient_pkey PRIMARY KEY (id) ) TABLESPACE pg_default; CREATE UNIQUE INDEX patient_pic_index ON myhealth.patient (personalIdentificationCode); ALTER TABLE myhealth.patient OWNER to "USER"; -- Table: myhealth.specialistdoctor -- DROP TABLE myhealth.specialistdoctor; CREATE TABLE myhealth.specialistdoctor ( id INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY ( INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 2147483647 CACHE 1 ), professionalnumber VARCHAR(15) NOT NULL COLLATE pg_catalog."default", password VARCHAR(100) NOT NULL COLLATE pg_catalog."default", nif VARCHAR(50) NOT NULL COLLATE pg_catalog."default", name VARCHAR(100) NOT NULL COLLATE pg_catalog."default", surname VARCHAR(100) NOT NULL COLLATE pg_catalog."default", email VARCHAR(120) COLLATE pg_catalog."default", medicalspecialtyid INTEGER REFERENCES myhealth.medicalspecialty(id), CONSTRAINT specialistdoctor_pkey PRIMARY KEY (id) ) TABLESPACE pg_default; CREATE UNIQUE INDEX specialistdoctor_professionaln_index ON myhealth.specialistdoctor (professionalnumber); ALTER TABLE myhealth.specialistdoctor OWNER to "USER"; -- Table: myhealth.visit -- DROP TABLE myhealth.visit; CREATE TABLE myhealth.visit ( id INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY ( INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 2147483647 CACHE 1 ), date date NOT NULL, "time" abstime NOT NULL, observations TEXT COLLATE pg_catalog."default", result TEXT COLLATE pg_catalog."default", patientid INTEGER REFERENCES myhealth.patient(id), familydoctorid INTEGER REFERENCES myhealth.familydoctor(id), CONSTRAINT visit_pkey PRIMARY KEY (id) ) TABLESPACE pg_default; ALTER TABLE myhealth.visit OWNER to "USER"; -- Table: myhealth.question -- DROP TABLE myhealth.question; CREATE TABLE myhealth.question ( id INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY ( INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 2147483647 CACHE 1 ), title VARCHAR(512) COLLATE pg_catalog."default" NOT NULL, message TEXT COLLATE pg_catalog."default" NOT NULL, status INTEGER, response TEXT COLLATE pg_catalog."default", patientid INTEGER REFERENCES myhealth.patient(id), familydoctorid INTEGER REFERENCES myhealth.familydoctor(id), CONSTRAINT question_pkey PRIMARY KEY (id) ) TABLESPACE pg_default; ALTER TABLE myhealth.question OWNER to "USER"; -- Table: myhealth.medicaltest -- DROP TABLE myhealth.medicaltest; CREATE TABLE myhealth.medicaltest ( id INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY ( INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 2147483647 CACHE 1 ), date date, "time" abstime, observations TEXT COLLATE pg_catalog."default", highresimage bytea, type INTEGER, patientid INTEGER REFERENCES myhealth.patient(id), specialistdoctorid INTEGER REFERENCES myhealth.specialistdoctor(id), CONSTRAINT medicaltest_pkey PRIMARY KEY (id) ) TABLESPACE pg_default; ALTER TABLE myhealth.medicaltest OWNER to "USER"; END; $$