You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ClinicalTrialsDataProcessing/containers/AACT_downloader/docker-entrypoint-initdb.d/030_HistoricalSchema.sql

117 lines
3.4 KiB
SQL

-- Create a schema handling trial history.
CREATE SCHEMA history;
--Create role for anyone who needs to both select and insert on historical data
CREATE ROLE history_writer;
GRANT CONNECT ON DATABASE aact_db to history_writer;
GRANT USAGE ON SCHEMA history TO history_writer;
GRANT INSERT,SELECT ON ALL TABLES IN SCHEMA http TO history_writer;
--Create role for anyone who only needs selection access to historical data, such as for analysis
CREATE ROLE history_reader;
GRANT CONNECT ON DATABASE aact_db to history_reader;
GRANT USAGE ON SCHEMA history TO history_reader;
GRANT SELECT ON ALL TABLES IN SCHEMA http TO history_reader;
/* History Tables
Below is where I would construct the parsed trial history tables that I need.
Possible fields
nct_id
version
--Study Status
overall_status^
primary_completion_date^
completion_date^
last_update_submitted_date
--SponsorCollaborators
sponsor (multi?)
collaborators (multi?)
--Oversight
fda_regulated_drug (ignore)
fda_regulated_device (ignore)
dmc (ignore)
--StuldyDescription
summary
detailed_description
--Conditions
Conditions
Keywords
--StudyDesign
Study type
Primary Purpose
Study Phase
Interventional Study Model
Number of Arms
Masking
Allocation
Enrollment ^
--ArmsAndInterventions
Arms (multiple) (Ignore)
--ProtocolOutcomeMeasures
--Eligibility
--ContactsLocation
--IPDSharing
--References
--ParticipantFlow
--BaselineCharacteristics
--ROutcomeMeasures
--AdverseEvents
--LimitationsAndCaveats
--More Information
*/
CREATE TYPE history.updatable_catetories AS ENUM
('Actual', 'Anticipated', 'Expected');
ALTER TYPE history.updatable_catetories
OWNER TO root;
COMMENT ON TYPE history.updatable_catetories
IS 'This enum is used to capture the different types of categories that a date or enrollemnt figure may have.';
CREATE TYPE history.study_statuses AS ENUM
('Available', 'Withdrawn', 'Withheld', 'Temporarily not available', 'Active, not recruiting', 'Recruiting', 'Not yet recruiting', 'Enrolling by invitation', 'Suspended', 'No longer available', 'Approved for marketing', 'Unknown status', 'Completed', 'Terminated');
ALTER TYPE history.study_statuses
OWNER TO root;
COMMENT ON TYPE history.study_statuses
IS 'This enum is used to record study status. These are pulled from the ClinicalTrials.gov documentation.';
-- Table: history.trial_snapshots
DROP TABLE IF EXISTS history.trial_snapshots;
CREATE TABLE IF NOT EXISTS history.trial_snapshots
(
nct_id character varying(15) COLLATE pg_catalog."default" NOT NULL,
version integer NOT NULL,
primary_completion_date timestamp without time zone,
primary_completion_date_category history.updatable_catetories,
start_date timestamp without time zone,
start_date_category history.updatable_catetories,
completion_date timestamp without time zone,
completion_date_category history.updatable_catetories,
overall_status history.study_statuses,
enrollment integer,
enrollment_category history.updatable_catetories,
sponsor character varying(255) COLLATE pg_catalog."default",
responsible_party character varying(255) COLLATE pg_catalog."default",
CONSTRAINT trial_snapshots_pkey PRIMARY KEY (nct_id, version)
);
ALTER TABLE IF EXISTS history.trial_snapshots
OWNER to root;