From eca4795d2f02334fd40406a0a2571f24e940566a Mon Sep 17 00:00:00 2001 From: Will King Date: Mon, 6 Jan 2025 19:25:19 -0800 Subject: [PATCH] Began redoing lost formularies work I lost some work on USP formularies and those are crucial for my analysis. So, I began reworking them. In the process, I: - Created a new formularies schema and added a table and some views - new file: Scripts/ConfiguringFormularies.sql - exported the schema - new file: Scripts/export_tables.sh - new file: export/export_data_postgres_materialized_views.sql - new file: export/export_data_postgres_tables.sql - new file: export/export_data_postgres_views.sql - new file: export/output_2025-01-06_export_data_postgres_materialized_views.sql - new file: export/output_2025-01-06_export_data_postgres_tables.sql - new file: export/output_2025-01-06_export_data_postgres_views.sql - new file: Scripts/Extracting Tables Views and MatViews.sql - created a new checkpoint/backup of my work - modified: .gitattributes - new file: containers/AACT_Reloader/backup/aact_db_backup_20250106_184236.sql.gz - new file: Scripts/Backup_AACT_work.sh --- .gitattributes | 1 + Scripts/Backup_AACT_work.sh | 9 + Scripts/ConfiguringFormularies.sql | 98 ++ .../Extracting Tables Views and MatViews.sql | 38 + Scripts/export_tables.sh | 35 + .../aact_db_backup_20250106_184236.sql.gz | 3 + ...xport_data_postgres_materialized_views.sql | 6 + export/export_data_postgres_tables.sql | 24 + export/export_data_postgres_views.sql | 6 + ...xport_data_postgres_materialized_views.sql | 415 ++++++++ ...2025-01-06_export_data_postgres_tables.sql | 920 ++++++++++++++++++ ..._2025-01-06_export_data_postgres_views.sql | 415 ++++++++ 12 files changed, 1970 insertions(+) create mode 100755 Scripts/Backup_AACT_work.sh create mode 100644 Scripts/ConfiguringFormularies.sql create mode 100644 Scripts/Extracting Tables Views and MatViews.sql create mode 100755 Scripts/export_tables.sh create mode 100644 containers/AACT_Reloader/backup/aact_db_backup_20250106_184236.sql.gz create mode 100644 export/export_data_postgres_materialized_views.sql create mode 100644 export/export_data_postgres_tables.sql create mode 100644 export/export_data_postgres_views.sql create mode 100644 export/output_2025-01-06_export_data_postgres_materialized_views.sql create mode 100644 export/output_2025-01-06_export_data_postgres_tables.sql create mode 100644 export/output_2025-01-06_export_data_postgres_views.sql diff --git a/.gitattributes b/.gitattributes index b720f8a..fc48bd5 100644 --- a/.gitattributes +++ b/.gitattributes @@ -4,3 +4,4 @@ containers/AACT_Reloader/2023-09-06_aactdb_with_matches.sql.gz filter=lfs diff=l other_data/USP[[:space:]]DC/usp_dc_pub_2023_release_2.0_updated_final.csv filter=lfs diff=lfs merge=lfs -text other_data/USP[[:space:]]MMG/MMG_v8.0_Alignment_File.csv filter=lfs diff=lfs merge=lfs -text other_data/VA[[:space:]]Formulary/PharmacyProductSystem_NationalDrugCodeExtract.csv filter=lfs diff=lfs merge=lfs -text +containers/AACT_Reloader/backup/aact_db_backup_20250106_184236.sql.gz filter=lfs diff=lfs merge=lfs -text diff --git a/Scripts/Backup_AACT_work.sh b/Scripts/Backup_AACT_work.sh new file mode 100755 index 0000000..f2316a0 --- /dev/null +++ b/Scripts/Backup_AACT_work.sh @@ -0,0 +1,9 @@ +#!/bin/bash +backup_dir="/mnt/will/large_data/Research_large_data/ClinicalTrialsDataProcessing/containers/AACT_Reloader/backup/" +date_stamp=$(date +%Y%m%d_%H%M%S) +filename="aact_db_backup_${date_stamp}.sql" + +podman exec aact_db pg_dump -U root aact_db > "${backup_dir}/${filename}" + +# Optional: compress the backup +gzip "${backup_dir}/${filename}" diff --git a/Scripts/ConfiguringFormularies.sql b/Scripts/ConfiguringFormularies.sql new file mode 100644 index 0000000..e5368ab --- /dev/null +++ b/Scripts/ConfiguringFormularies.sql @@ -0,0 +1,98 @@ +/* +I started by creating a formularies schema, +then importing the usp - dc formulary data through DBeaver's csv import. +*/ + +-- DROP SCHEMA "Formularies"; + +CREATE SCHEMA "Formularies" AUTHORIZATION root; + +-- "Formularies".usp_dc_2023 definition + +-- Drop table + +-- DROP TABLE "Formularies".usp_dc_2023; + +CREATE TABLE "Formularies".usp_dc_2023 ( + rxcui varchar(15) NULL, --yes even though this is a number, it is represented as a string elsewhere. + tty varchar(10) NULL, + "Name" varchar(256) NULL, + "Related BN" varchar(250) NULL, + "Related DF" varchar(25050) NULL, + "USP Category" varchar(250) NULL, + "USP Class" varchar(250) NULL, + "USP Pharmacotherapeutic Group" varchar(250) NULL, + "API Concept" varchar(250) NULL +); + +/* +I then linked the data back on itself with a materialized view, using claude.ai for simplicity. + +Claude.ai > I need a postres sql statement to create a materialized view that will take the following table and link from a given rxcui to the other rxcui's that share the same category and class + +```sql +CREATE TABLE "Formularies".usp_dc_2023 ( + rxcui int4 NULL, + tty varchar(10) NULL, + "Name" varchar(256) NULL, + "Related BN" varchar(250) NULL, + "Related DF" varchar(25050) NULL, + "USP Category" varchar(250) NULL, + "USP Class" varchar(250) NULL, + "USP Pharmacotherapeutic Group" varchar(250) NULL, + "API Concept" varchar(250) NULL +); +``` +*/ +CREATE MATERIALIZED VIEW "Formularies".rxcui_category_class_links AS +WITH base AS ( + SELECT DISTINCT + a.rxcui as source_rxcui, + b.rxcui as linked_rxcui, + a."USP Category" as category, + a."USP Class" as class + FROM "Formularies".usp_dc_2023 a + JOIN "Formularies".usp_dc_2023 b + ON a."USP Category" = b."USP Category" + AND a."USP Class" = b."USP Class" + AND a.rxcui != b.rxcui + WHERE a.rxcui IS NOT NULL + AND b.rxcui IS NOT NULL +) +SELECT * FROM base; + +-- Add indexes for better query performance +CREATE INDEX ON "Formularies".rxcui_category_class_links (source_rxcui); +CREATE INDEX ON "Formularies".rxcui_category_class_links (linked_rxcui); + +/* +Next step is linking a given nct -> compounds -> formulary alternatives -> compounds -> brands/generics. +I'll' break this into two steps. + +1. link formulary alternatives to compounds and brands, +2. link nct_id to formulary alternatives +*/ +create materialized view "Formularies".rxcui_to_brand_through_uspdc AS +select + rccl.source_rxcui + ,rccl.linked_rxcui + ,rccl.category + ,rccl."class" + ,rr.tty1 + ,rr.tty2 + ,rr.rxcui2 +from "Formularies".rxcui_category_class_links rccl +join rxnorm_migrated.rxnorm_relations rr on rr.rxcui1 = rccl.linked_rxcui +where rr.tty2 = 'BN' +; + + +create materialized view match_trial_compound_to_alternate_bn_rxcuis as +select distinct mttbi.nct_id, rtbtu.rxcui2 +from match_trials_to_bn_in mttbi +join "Formularies".rxcui_to_brand_through_uspdc rtbtu + on mttbi.bn_or_in_cui = rtbtu.rxcui2 + +/* +Now I need to create a way to link +*/ diff --git a/Scripts/Extracting Tables Views and MatViews.sql b/Scripts/Extracting Tables Views and MatViews.sql new file mode 100644 index 0000000..300be4f --- /dev/null +++ b/Scripts/Extracting Tables Views and MatViews.sql @@ -0,0 +1,38 @@ +SELECT + 'CREATE OR REPLACE VIEW ' || schemaname || '.' || viewname || ' AS ' || definition +FROM pg_views + WHERE schemaname != 'pg_catalog' + and schemaname != 'information_schema' -- Replace with your schema name +; + +SELECT + 'CREATE OR REPLACE MATERIALIZED VIEW ' || schemaname || '.' || viewname || ' AS ' || definition +FROM pg_views + WHERE schemaname != 'pg_catalog' + and schemaname != 'information_schema' +; + +SELECT + 'CREATE TABLE ' || schemaname || '.' || tablename || E'\n(\n' || + string_agg(column_definition, E',\n') || E'\n);\n' +FROM ( + SELECT + schemaname, + tablename, + column_name || ' ' || data_type || + CASE + WHEN character_maximum_length IS NOT NULL THEN '(' || character_maximum_length || ')' + ELSE '' + END || + CASE + WHEN is_nullable = 'NO' THEN ' NOT NULL' + ELSE '' + END as column_definition + FROM pg_catalog.pg_tables t + JOIN information_schema.columns c + ON t.schemaname = c.table_schema + AND t.tablename = c.table_name + WHERE schemaname != 'pg_catalog' + and schemaname != 'information_schema'-- Replace with your schema name +) t +GROUP BY schemaname, tablename; \ No newline at end of file diff --git a/Scripts/export_tables.sh b/Scripts/export_tables.sh new file mode 100755 index 0000000..bf4939a --- /dev/null +++ b/Scripts/export_tables.sh @@ -0,0 +1,35 @@ +#!/bin/bash +set -x + +# Uses +# +# Defauls +if [[ $# -lt 1 ]]; then + echo "Usage: pg_export container_name [database_name] [username]" + return 1 +fi + +CONTAINER=$1 +DBNAME=${2:-aact_db} +USER=${3:-root} + +# +# for sqlfile in ../export/export_data_*.sql; do +# if [[ -f "$sqlfile" ]]; then +# outfile="../export/output_$(date -I)_$(basename ${sqlfile%.sql}).sql" +# # podman exec -t "$CONTAINER" psql -U "$USER" -d "$DBNAME" -t -A -f - < "$sqlfile" > "$outfile" +# # podman exec "$CONTAINER" psql -U "$USER" -d "$DBNAME" -t -A -f "$sqlfile" > "$outfile" +# podman cp "$sqlfile" "$CONTAINER":/tmp/query.sql +# podman exec "$CONTAINER" psql -U "$USER" -d "$DBNAME" -t -A -f /tmp/query.sql > "$outfile" +# fi +# done +# + +for sqlfile in ../export/export_data_*.sql; do + if [[ -f "$sqlfile" ]]; then + outfile="../export/output_$(date -I)_$(basename ${sqlfile%.sql}).sql" + podman cp "$sqlfile" "$CONTAINER":/tmp/query.sql + podman exec "$CONTAINER" psql -U "$USER" -d "$DBNAME" -f "/tmp/query.sql" > "$outfile" + fi +done + diff --git a/containers/AACT_Reloader/backup/aact_db_backup_20250106_184236.sql.gz b/containers/AACT_Reloader/backup/aact_db_backup_20250106_184236.sql.gz new file mode 100644 index 0000000..c1669c3 --- /dev/null +++ b/containers/AACT_Reloader/backup/aact_db_backup_20250106_184236.sql.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d2a132c78b325b183083f8fe1b60b0d0606dbd64dd810777a52cf80c90c074db +size 1897893238 diff --git a/export/export_data_postgres_materialized_views.sql b/export/export_data_postgres_materialized_views.sql new file mode 100644 index 0000000..8f570e9 --- /dev/null +++ b/export/export_data_postgres_materialized_views.sql @@ -0,0 +1,6 @@ + SELECT + 'CREATE OR REPLACE MATERIALIZED VIEW ' || schemaname || '.' || viewname || ' AS ' || definition +FROM pg_views + WHERE schemaname != 'pg_catalog' + and schemaname != 'information_schema' +; diff --git a/export/export_data_postgres_tables.sql b/export/export_data_postgres_tables.sql new file mode 100644 index 0000000..5954edb --- /dev/null +++ b/export/export_data_postgres_tables.sql @@ -0,0 +1,24 @@ +SELECT + 'CREATE TABLE ' || schemaname || '.' || tablename || E'\n(\n' || + string_agg(column_definition, E',\n') || E'\n);\n' +FROM ( + SELECT + schemaname, + tablename, + column_name || ' ' || data_type || + CASE + WHEN character_maximum_length IS NOT NULL THEN '(' || character_maximum_length || ')' + ELSE '' + END || + CASE + WHEN is_nullable = 'NO' THEN ' NOT NULL' + ELSE '' + END as column_definition + FROM pg_catalog.pg_tables t + JOIN information_schema.columns c + ON t.schemaname = c.table_schema + AND t.tablename = c.table_name + WHERE schemaname != 'pg_catalog' + and schemaname != 'information_schema'-- Replace with your schema name +) t +GROUP BY schemaname, tablename; diff --git a/export/export_data_postgres_views.sql b/export/export_data_postgres_views.sql new file mode 100644 index 0000000..5cb6a63 --- /dev/null +++ b/export/export_data_postgres_views.sql @@ -0,0 +1,6 @@ + SELECT + 'CREATE OR REPLACE VIEW ' || schemaname || '.' || viewname || ' AS ' || definition +FROM pg_views + WHERE schemaname != 'pg_catalog' + and schemaname != 'information_schema' -- Replace with your schema name +; diff --git a/export/output_2025-01-06_export_data_postgres_materialized_views.sql b/export/output_2025-01-06_export_data_postgres_materialized_views.sql new file mode 100644 index 0000000..caf2ec1 --- /dev/null +++ b/export/output_2025-01-06_export_data_postgres_materialized_views.sql @@ -0,0 +1,415 @@ + ?column? +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + CREATE OR REPLACE MATERIALIZED VIEW ctgov.all_browse_conditions AS SELECT browse_conditions.nct_id, + + array_to_string(array_agg(DISTINCT browse_conditions.mesh_term), '|'::text) AS names + + FROM ctgov.browse_conditions + + GROUP BY browse_conditions.nct_id; + CREATE OR REPLACE MATERIALIZED VIEW ctgov.all_browse_interventions AS SELECT browse_interventions.nct_id, + + array_to_string(array_agg(browse_interventions.mesh_term), '|'::text) AS names + + FROM ctgov.browse_interventions + + GROUP BY browse_interventions.nct_id; + CREATE OR REPLACE MATERIALIZED VIEW ctgov.all_cities AS SELECT facilities.nct_id, + + array_to_string(array_agg(DISTINCT facilities.city), '|'::text) AS names + + FROM ctgov.facilities + + GROUP BY facilities.nct_id; + CREATE OR REPLACE MATERIALIZED VIEW ctgov.all_conditions AS SELECT conditions.nct_id, + + array_to_string(array_agg(DISTINCT conditions.name), '|'::text) AS names + + FROM ctgov.conditions + + GROUP BY conditions.nct_id; + CREATE OR REPLACE MATERIALIZED VIEW ctgov.all_countries AS SELECT countries.nct_id, + + array_to_string(array_agg(DISTINCT countries.name), '|'::text) AS names + + FROM ctgov.countries + + WHERE (countries.removed IS NOT TRUE) + + GROUP BY countries.nct_id; + CREATE OR REPLACE MATERIALIZED VIEW ctgov.all_design_outcomes AS SELECT design_outcomes.nct_id, + + array_to_string(array_agg(DISTINCT design_outcomes.measure), '|'::text) AS names + + FROM ctgov.design_outcomes + + GROUP BY design_outcomes.nct_id; + CREATE OR REPLACE MATERIALIZED VIEW ctgov.all_facilities AS SELECT facilities.nct_id, + + array_to_string(array_agg(facilities.name), '|'::text) AS names + + FROM ctgov.facilities + + GROUP BY facilities.nct_id; + CREATE OR REPLACE MATERIALIZED VIEW ctgov.all_group_types AS SELECT design_groups.nct_id, + + array_to_string(array_agg(DISTINCT design_groups.group_type), '|'::text) AS names + + FROM ctgov.design_groups + + GROUP BY design_groups.nct_id; + CREATE OR REPLACE MATERIALIZED VIEW ctgov.all_id_information AS SELECT id_information.nct_id, + + array_to_string(array_agg(DISTINCT id_information.id_value), '|'::text) AS names + + FROM ctgov.id_information + + GROUP BY id_information.nct_id; + CREATE OR REPLACE MATERIALIZED VIEW ctgov.all_intervention_types AS SELECT interventions.nct_id, + + array_to_string(array_agg(interventions.intervention_type), '|'::text) AS names + + FROM ctgov.interventions + + GROUP BY interventions.nct_id; + CREATE OR REPLACE MATERIALIZED VIEW ctgov.all_interventions AS SELECT interventions.nct_id, + + array_to_string(array_agg(interventions.name), '|'::text) AS names + + FROM ctgov.interventions + + GROUP BY interventions.nct_id; + CREATE OR REPLACE MATERIALIZED VIEW ctgov.all_keywords AS SELECT keywords.nct_id, + + array_to_string(array_agg(DISTINCT keywords.name), '|'::text) AS names + + FROM ctgov.keywords + + GROUP BY keywords.nct_id; + CREATE OR REPLACE MATERIALIZED VIEW ctgov.all_overall_official_affiliations AS SELECT overall_officials.nct_id, + + array_to_string(array_agg(overall_officials.affiliation), '|'::text) AS names + + FROM ctgov.overall_officials + + GROUP BY overall_officials.nct_id; + CREATE OR REPLACE MATERIALIZED VIEW ctgov.all_overall_officials AS SELECT overall_officials.nct_id, + + array_to_string(array_agg(overall_officials.name), '|'::text) AS names + + FROM ctgov.overall_officials + + GROUP BY overall_officials.nct_id; + CREATE OR REPLACE MATERIALIZED VIEW ctgov.all_primary_outcome_measures AS SELECT design_outcomes.nct_id, + + array_to_string(array_agg(DISTINCT design_outcomes.measure), '|'::text) AS names + + FROM ctgov.design_outcomes + + WHERE ((design_outcomes.outcome_type)::text = 'primary'::text) + + GROUP BY design_outcomes.nct_id; + CREATE OR REPLACE MATERIALIZED VIEW ctgov.all_secondary_outcome_measures AS SELECT design_outcomes.nct_id, + + array_to_string(array_agg(DISTINCT design_outcomes.measure), '|'::text) AS names + + FROM ctgov.design_outcomes + + WHERE ((design_outcomes.outcome_type)::text = 'secondary'::text) + + GROUP BY design_outcomes.nct_id; + CREATE OR REPLACE MATERIALIZED VIEW ctgov.all_sponsors AS SELECT sponsors.nct_id, + + array_to_string(array_agg(DISTINCT sponsors.name), '|'::text) AS names + + FROM ctgov.sponsors + + GROUP BY sponsors.nct_id; + CREATE OR REPLACE MATERIALIZED VIEW ctgov.all_states AS SELECT facilities.nct_id, + + array_to_string(array_agg(DISTINCT facilities.state), '|'::text) AS names + + FROM ctgov.facilities + + GROUP BY facilities.nct_id; + CREATE OR REPLACE MATERIALIZED VIEW ctgov.categories AS SELECT search_results.id, + + search_results.nct_id, + + search_results.name, + + search_results.created_at, + + search_results.updated_at, + + search_results."grouping", + + search_results.study_search_id + + FROM ctgov.search_results; + CREATE OR REPLACE MATERIALIZED VIEW ctgov.covid_19_studies AS SELECT s.nct_id, + + s.overall_status, + + s.study_type, + + s.official_title, + + s.acronym, + + s.phase, + + s.why_stopped, + + s.has_dmc, + + s.enrollment, + + s.is_fda_regulated_device, + + s.is_fda_regulated_drug, + + s.is_unapproved_device, + + s.has_expanded_access, + + s.study_first_submitted_date, + + s.last_update_posted_date, + + s.results_first_posted_date, + + s.start_date, + + s.primary_completion_date, + + s.completion_date, + + s.study_first_posted_date, + + cv.number_of_facilities, + + cv.has_single_facility, + + cv.nlm_download_date, + + s.number_of_arms, + + s.number_of_groups, + + sp.name AS lead_sponsor, + + aid.names AS other_ids, + + e.gender, + + e.gender_based, + + e.gender_description, + + e.population, + + e.minimum_age, + + e.maximum_age, + + e.criteria, + + e.healthy_volunteers, + + ak.names AS keywords, + + ai.names AS interventions, + + ac.names AS conditions, + + d.primary_purpose, + + d.allocation, + + d.observational_model, + + d.intervention_model, + + d.masking, + + d.subject_masked, + + d.caregiver_masked, + + d.investigator_masked, + + d.outcomes_assessor_masked, + + ado.names AS design_outcomes, + + bs.description AS brief_summary, + + dd.description AS detailed_description + + FROM (((((((((((ctgov.studies s + + FULL JOIN ctgov.all_conditions ac ON (((s.nct_id)::text = (ac.nct_id)::text))) + + FULL JOIN ctgov.all_id_information aid ON (((s.nct_id)::text = (aid.nct_id)::text))) + + FULL JOIN ctgov.all_design_outcomes ado ON (((s.nct_id)::text = (ado.nct_id)::text))) + + FULL JOIN ctgov.all_keywords ak ON (((s.nct_id)::text = (ak.nct_id)::text))) + + FULL JOIN ctgov.all_interventions ai ON (((s.nct_id)::text = (ai.nct_id)::text))) + + FULL JOIN ctgov.sponsors sp ON (((s.nct_id)::text = (sp.nct_id)::text))) + + FULL JOIN ctgov.calculated_values cv ON (((s.nct_id)::text = (cv.nct_id)::text))) + + FULL JOIN ctgov.designs d ON (((s.nct_id)::text = (d.nct_id)::text))) + + FULL JOIN ctgov.eligibilities e ON (((s.nct_id)::text = (e.nct_id)::text))) + + FULL JOIN ctgov.brief_summaries bs ON (((s.nct_id)::text = (bs.nct_id)::text))) + + FULL JOIN ctgov.detailed_descriptions dd ON (((s.nct_id)::text = (dd.nct_id)::text))) + + WHERE (((sp.lead_or_collaborator)::text = 'lead'::text) AND ((s.nct_id)::text IN ( SELECT search_results.nct_id + + FROM ctgov.search_results + + WHERE ((search_results.name)::text = 'covid-19'::text)))); + CREATE OR REPLACE MATERIALIZED VIEW history.match_drugs_to_trials AS SELECT bi.nct_id, + + rp.rxcui, + + rp.propvalue1 + + FROM (ctgov.browse_interventions bi + + JOIN rxnorm_migrated.rxnorm_props rp ON (((bi.downcase_mesh_term)::text = (rp.propvalue1)::text))) + + WHERE (((rp.propname)::text = 'RxNorm Name'::text) AND ((bi.nct_id)::text IN ( SELECT trial_snapshots.nct_id + + FROM history.trial_snapshots))); + CREATE OR REPLACE MATERIALIZED VIEW http.most_recent_download_status AS SELECT t.nct_id, + + t.status, + + t.update_timestamp + + FROM ( SELECT download_status.id, + + download_status.nct_id, + + download_status.status, + + download_status.update_timestamp, + + row_number() OVER (PARTITION BY download_status.nct_id ORDER BY download_status.update_timestamp DESC) AS rn + + FROM http.download_status) t + + WHERE (t.rn = 1) + + ORDER BY t.nct_id; + CREATE OR REPLACE MATERIALIZED VIEW public.time_between_submission_and_start_view AS SELECT s.nct_id, + + s.start_date, + + ts.version, + + ts.submission_date, + + abs(((EXTRACT(epoch FROM (ts.submission_date - (s.start_date)::timestamp without time zone)))::double precision / (((24 * 60) * 60))::double precision)) AS start_deviance + + FROM (ctgov.studies s + + JOIN history.trial_snapshots ts ON (((s.nct_id)::text = (ts.nct_id)::text))) + + WHERE ((s.nct_id)::text IN ( SELECT DISTINCT tti.nct_id + + FROM "DiseaseBurden".trial_to_icd10 tti)); + CREATE OR REPLACE MATERIALIZED VIEW public.rank_proximity_to_start_time_view AS SELECT cte.nct_id, + + cte.version, + + row_number() OVER (PARTITION BY cte.nct_id ORDER BY cte.start_deviance) AS rownum, + + cte.submission_date, + + cte.start_deviance, + + cte.start_date, + + ts.primary_completion_date, + + ts.primary_completion_date_category, + + ts.overall_status, + + ts.enrollment, + + ts.enrollment_category + + FROM (time_between_submission_and_start_view cte + + JOIN history.trial_snapshots ts ON ((((cte.nct_id)::text = (ts.nct_id)::text) AND (cte.version = ts.version)))); + CREATE OR REPLACE MATERIALIZED VIEW public.enrollment_closest_to_start_view AS SELECT cte2.nct_id, + + min(cte2.rownum) AS enrollment_source + + FROM rank_proximity_to_start_time_view cte2 + + WHERE (cte2.enrollment IS NOT NULL) + + GROUP BY cte2.nct_id; + CREATE OR REPLACE MATERIALIZED VIEW public.match_trials_to_bn_in AS WITH trialncts AS ( + + SELECT DISTINCT ts.nct_id + + FROM history.trial_snapshots ts + + ) + + SELECT bi.nct_id, + + bi.downcase_mesh_term, + + rr.tty2, + + rr.rxcui2 AS bn_or_in_cui, + + count(*) AS count + + FROM ((ctgov.browse_interventions bi + + LEFT JOIN rxnorm_migrated.rxnorm_props rp ON (((bi.downcase_mesh_term)::text = (rp.propvalue1)::text))) + + LEFT JOIN rxnorm_migrated.rxnorm_relations rr ON ((rr.rxcui1 = rp.rxcui))) + + WHERE (((bi.nct_id)::text IN ( SELECT trialncts.nct_id + + FROM trialncts)) AND ((bi.mesh_type)::text = 'mesh-list'::text) AND ((rp.propname)::text = 'Active_ingredient_name'::text) AND (rr.tty2 = ANY (ARRAY['BN'::bpchar, 'IN'::bpchar, 'MIN'::bpchar]))) + + GROUP BY bi.nct_id, bi.downcase_mesh_term, rr.tty2, rr.rxcui2 + + ORDER BY bi.nct_id; + CREATE OR REPLACE MATERIALIZED VIEW public.match_trial_to_ndc11 AS SELECT mttbi.nct_id, + + ah.ndc, + + count(*) AS count + + FROM ((match_trials_to_bn_in mttbi + + LEFT JOIN rxnorm_migrated.rxnorm_relations rr ON ((mttbi.bn_or_in_cui = rr.rxcui1))) + + LEFT JOIN rxnorm_migrated."ALLNDC_HISTORY" ah ON ((rr.rxcui2 = ah.rxcui))) + + WHERE ((rr.tty1 = 'BN'::bpchar) AND (rr.tty2 = ANY (ARRAY['SBD'::bpchar, 'BPCK'::bpchar])) AND ((ah.sab)::text = 'RXNORM'::text)) + + GROUP BY mttbi.nct_id, ah.ndc + + ORDER BY mttbi.nct_id, ah.ndc; + CREATE OR REPLACE MATERIALIZED VIEW public.match_trial_to_marketing_start_date AS SELECT mttn.nct_id, + + n.application_number_or_citation, + + min(n.marketing_start_date) AS min + + FROM (match_trial_to_ndc11 mttn + + JOIN spl.nsde n ON ((mttn.ndc = (n.package_ndc11)::bpchar))) + + WHERE (((n.product_type)::text = 'HUMAN PRESCRIPTION DRUG'::text) AND ((n.marketing_category)::text = ANY (ARRAY[('NDA'::character varying)::text, ('ANDA'::character varying)::text, ('BLA'::character varying)::text, ('NDA authorized generic'::character varying)::text, ('NDA AUTHORIZED GENERIC'::character varying)::text]))) + + GROUP BY mttn.nct_id, n.application_number_or_citation + + ORDER BY mttn.nct_id; + CREATE OR REPLACE MATERIALIZED VIEW public.view_burdens_cte AS SELECT b.measure_id, + + b.location_id, + + b.sex_id, + + b.age_id, + + b.cause_id, + + b.metric_id, + + b.year, + + b.val, + + b.upper_95, + + b.lower_95, + + b.key_column + + FROM "DiseaseBurden".burdens b + + WHERE ((b.sex_id = 3) AND (b.metric_id = 1) AND (b.measure_id = 2) AND (b.age_id = 22)); + CREATE OR REPLACE MATERIALIZED VIEW public.view_burdens_cte2 AS SELECT c1.cause_id, + + c1.year, + + c1.val AS h_sdi_val, + + c1.upper_95 AS h_sdi_u95, + + c1.lower_95 AS h_sdi_l95, + + c2.val AS hm_sdi_val, + + c2.upper_95 AS hm_sdi_u95, + + c2.lower_95 AS hm_sdi_l95, + + c3.val AS m_sdi_val, + + c3.upper_95 AS m_sdi_u95, + + c3.lower_95 AS m_sdi_l95, + + c4.val AS lm_sdi_val, + + c4.upper_95 AS lm_sdi_u95, + + c4.lower_95 AS lm_sdi_l95, + + c5.val AS l_sdi_val, + + c5.upper_95 AS l_sdi_u95, + + c5.lower_95 AS l_sdi_l95 + + FROM ((((view_burdens_cte c1 + + JOIN view_burdens_cte c2 ON (((c1.cause_id = c2.cause_id) AND (c1.year = c2.year)))) + + JOIN view_burdens_cte c3 ON (((c1.cause_id = c3.cause_id) AND (c1.year = c3.year)))) + + JOIN view_burdens_cte c4 ON (((c1.cause_id = c4.cause_id) AND (c1.year = c4.year)))) + + JOIN view_burdens_cte c5 ON (((c1.cause_id = c5.cause_id) AND (c1.year = c5.year)))) + + WHERE ((c1.location_id = 44635) AND (c2.location_id = 44634) AND (c3.location_id = 44639) AND (c4.location_id = 44636) AND (c5.location_id = 44637)); + CREATE OR REPLACE MATERIALIZED VIEW public.view_cte AS SELECT ts.nct_id, + + ts.primary_completion_date, + + ts.primary_completion_date_category, + + ts.enrollment, + + ts.start_date, + + ts.enrollment_category, + + ts.overall_status, + + min(ts.submission_date) AS earliest_date_observed + + FROM history.trial_snapshots ts + + WHERE (((ts.nct_id)::text IN ( SELECT DISTINCT tti.nct_id + + FROM "DiseaseBurden".trial_to_icd10 tti + + WHERE (tti.approved = 'accepted'::"DiseaseBurden".validation_type))) AND (ts.submission_date >= ts.start_date) AND (ts.overall_status <> ALL (ARRAY['Completed'::history.study_statuses, 'Terminated'::history.study_statuses]))) + + GROUP BY ts.nct_id, ts.primary_completion_date, ts.primary_completion_date_category, ts.start_date, ts.enrollment, ts.enrollment_category, ts.overall_status; + CREATE OR REPLACE MATERIALIZED VIEW public.view_disbur_cte0 AS SELECT tti.nct_id, + + tti.ui, + + tti.condition, + + itc.cause_text, + + ch.cause_id, + + ch.level + + FROM (("DiseaseBurden".trial_to_icd10 tti + + JOIN "DiseaseBurden".icd10_to_cause itc ON ((replace(replace((tti.ui)::text, '-'::text, ''::text), '.'::text, ''::text) = replace(replace((itc.code)::text, '-'::text, ''::text), '.'::text, ''::text)))) + + JOIN "DiseaseBurden".cause_hierarchy ch ON (((itc.cause_text)::text = (ch.cause_name)::text))) + + WHERE (tti.approved = 'accepted'::"DiseaseBurden".validation_type); + CREATE OR REPLACE MATERIALIZED VIEW public.view_disbur_cte AS SELECT view_disbur_cte0.nct_id, + + max(view_disbur_cte0.level) AS max_level + + FROM view_disbur_cte0 + + GROUP BY view_disbur_cte0.nct_id; + CREATE OR REPLACE MATERIALIZED VIEW public.view_trial_to_cause AS SELECT tti.nct_id, + + tti.ui, + + tti.condition, + + itc.cause_text, + + ch.cause_id, + + ch.level + + FROM (("DiseaseBurden".trial_to_icd10 tti + + JOIN "DiseaseBurden".icd10_to_cause itc ON ((replace(replace((tti.ui)::text, '-'::text, ''::text), '.'::text, ''::text) = replace(replace((itc.code)::text, '-'::text, ''::text), '.'::text, ''::text)))) + + JOIN "DiseaseBurden".cause_hierarchy ch ON (((itc.cause_text)::text = (ch.cause_name)::text))) + + WHERE (tti.approved = 'accepted'::"DiseaseBurden".validation_type) + + ORDER BY tti.nct_id; + CREATE OR REPLACE MATERIALIZED VIEW public.view_disbur_cte2 AS SELECT ttc.nct_id, + + ttc.ui, + + ttc.condition, + + ttc.cause_text, + + ttc.cause_id, + + disbur_cte.max_level + + FROM (view_trial_to_cause ttc + + JOIN view_disbur_cte disbur_cte ON (((disbur_cte.nct_id)::text = (ttc.nct_id)::text))) + + WHERE (ttc.level = disbur_cte.max_level) + + GROUP BY ttc.nct_id, ttc.ui, ttc.condition, ttc.cause_text, ttc.cause_id, disbur_cte.max_level + + ORDER BY ttc.nct_id, ttc.ui; + CREATE OR REPLACE MATERIALIZED VIEW public.view_disbur_cte3 AS SELECT disbur_cte2.nct_id, + + SUBSTRING(disbur_cte2.ui FROM 1 FOR 3) AS code, + + disbur_cte2.condition, + + disbur_cte2.cause_text, + + disbur_cte2.cause_id, + + ic.chapter_code AS category_id, + + ic.group_name, + + disbur_cte2.max_level + + FROM (view_disbur_cte2 disbur_cte2 + + JOIN "DiseaseBurden".icd10_categories ic ON (((SUBSTRING(disbur_cte2.ui FROM 1 FOR 3) <= (ic.end_code)::text) AND (SUBSTRING(disbur_cte2.ui FROM 1 FOR 3) >= (ic.start_code)::text)))) + + WHERE (ic.level = 1); + CREATE OR REPLACE MATERIALIZED VIEW public.formatted_data AS SELECT cte.nct_id, + + cte.start_date, + + cte.enrollment AS current_enrollment, + + cte.enrollment_category, + + cte.overall_status AS current_status, + + cte.earliest_date_observed, + + (EXTRACT(epoch FROM (cte.earliest_date_observed - cte.start_date)) / EXTRACT(epoch FROM (cte.primary_completion_date - cte.start_date))) AS elapsed_duration, + + count(DISTINCT mttmsd.application_number_or_citation) AS n_brands, + + dbc3.code, + + dbc3.condition, + + dbc3.cause_text, + + dbc3.cause_id, + + dbc3.category_id, + + dbc3.group_name, + + dbc3.max_level, + + b.year, + + b.h_sdi_val, + + b.h_sdi_u95, + + b.h_sdi_l95, + + b.hm_sdi_val, + + b.hm_sdi_u95, + + b.hm_sdi_l95, + + b.m_sdi_val, + + b.m_sdi_u95, + + b.m_sdi_l95, + + b.lm_sdi_val, + + b.lm_sdi_u95, + + b.lm_sdi_l95, + + b.l_sdi_val, + + b.l_sdi_u95, + + b.l_sdi_l95 + + FROM (((view_cte cte + + JOIN match_trial_to_marketing_start_date mttmsd ON (((cte.nct_id)::text = (mttmsd.nct_id)::text))) + + JOIN view_disbur_cte3 dbc3 ON (((dbc3.nct_id)::text = (cte.nct_id)::text))) + + JOIN view_burdens_cte2 b ON (((b.cause_id = dbc3.cause_id) AND (EXTRACT(year FROM b.year) = EXTRACT(year FROM cte.earliest_date_observed))))) + + WHERE (mttmsd.min <= cte.earliest_date_observed) + + GROUP BY cte.nct_id, cte.start_date, cte.enrollment, cte.enrollment_category, cte.overall_status, cte.earliest_date_observed, (EXTRACT(epoch FROM (cte.earliest_date_observed - cte.start_date)) / EXTRACT(epoch FROM (cte.primary_completion_date - cte.start_date))), dbc3.code, dbc3.condition, dbc3.cause_text, dbc3.cause_id, dbc3.category_id, dbc3.group_name, dbc3.max_level, b.cause_id, b.year, b.h_sdi_val, b.h_sdi_u95, b.h_sdi_l95, b.hm_sdi_val, b.hm_sdi_u95, b.hm_sdi_l95, b.m_sdi_val, b.m_sdi_u95, b.m_sdi_l95, b.lm_sdi_val, b.lm_sdi_u95, b.lm_sdi_l95, b.l_sdi_val, b.l_sdi_u95, b.l_sdi_l95+ + ORDER BY cte.nct_id, cte.earliest_date_observed; + CREATE OR REPLACE MATERIALIZED VIEW public.formatted_data_with_planned_enrollment AS SELECT f.nct_id, + + f.start_date, + + f.current_enrollment, + + f.enrollment_category, + + f.current_status, + + f.earliest_date_observed, + + f.elapsed_duration, + + f.n_brands, + + f.code, + + f.condition, + + f.cause_text, + + f.cause_id, + + f.category_id, + + f.group_name, + + f.max_level, + + f.year, + + f.h_sdi_val, + + f.h_sdi_u95, + + f.h_sdi_l95, + + f.hm_sdi_val, + + f.hm_sdi_u95, + + f.hm_sdi_l95, + + f.m_sdi_val, + + f.m_sdi_u95, + + f.m_sdi_l95, + + f.lm_sdi_val, + + f.lm_sdi_u95, + + f.lm_sdi_l95, + + f.l_sdi_val, + + f.l_sdi_u95, + + f.l_sdi_l95, + + s.overall_status AS final_status, + + c2a.version, + + c2a.enrollment AS planned_enrollment + + FROM (((formatted_data f + + JOIN ctgov.studies s ON (((f.nct_id)::text = (s.nct_id)::text))) + + JOIN enrollment_closest_to_start_view c3e ON (((c3e.nct_id)::text = (f.nct_id)::text))) + + JOIN rank_proximity_to_start_time_view c2a ON ((((c3e.nct_id)::text = (c2a.nct_id)::text) AND (c3e.enrollment_source = c2a.rownum)))); + CREATE OR REPLACE MATERIALIZED VIEW http.trials_to_download AS SELECT most_recent_download_status.nct_id + + FROM http.most_recent_download_status + + WHERE (most_recent_download_status.status = 'Of Interest'::http.history_download_status); + CREATE OR REPLACE MATERIALIZED VIEW public.primary_design_outcomes AS SELECT do2.id, + + do2.nct_id, + + do2.outcome_type, + + do2.measure, + + do2.time_frame, + + do2.population, + + do2.description + + FROM ctgov.design_outcomes do2 + + WHERE (((do2.outcome_type)::text = 'primary'::text) AND ((do2.nct_id)::text IN ( SELECT DISTINCT fd.nct_id + + FROM formatted_data fd))); +(40 rows) + diff --git a/export/output_2025-01-06_export_data_postgres_tables.sql b/export/output_2025-01-06_export_data_postgres_tables.sql new file mode 100644 index 0000000..a9aefa2 --- /dev/null +++ b/export/output_2025-01-06_export_data_postgres_tables.sql @@ -0,0 +1,920 @@ + ?column? +------------------------------------------------------- + CREATE TABLE DiseaseBurden.age_group + + ( + + id integer NOT NULL, + + age_group character varying NOT NULL + + ); + + + CREATE TABLE DiseaseBurden.burdens + + ( + + measure_id integer NOT NULL, + + location_id integer NOT NULL, + + sex_id integer NOT NULL, + + age_id integer NOT NULL, + + cause_id integer NOT NULL, + + metric_id integer NOT NULL, + + year date NOT NULL, + + val double precision NOT NULL, + + upper_95 double precision NOT NULL, + + lower_95 double precision NOT NULL, + + key_column integer NOT NULL + + ); + + + CREATE TABLE DiseaseBurden.cause + + ( + + id integer NOT NULL, + + cause character varying NOT NULL + + ); + + + CREATE TABLE DiseaseBurden.cause_hierarchy + + ( + + cause_id integer NOT NULL, + + cause_name character varying, + + parent_id integer NOT NULL, + + parent_nae character varying, + + level integer NOT NULL + + ); + + + CREATE TABLE DiseaseBurden.icd10_categories + + ( + + id integer NOT NULL, + + start_code character varying NOT NULL, + + end_code character varying NOT NULL, + + group_name character varying NOT NULL, + + level integer NOT NULL, + + chapter character varying NOT NULL, + + chapter_code integer NOT NULL + + ); + + + CREATE TABLE DiseaseBurden.icd10_to_cause + + ( + + id integer NOT NULL, + + code character varying NOT NULL, + + cause_text character varying NOT NULL + + ); + + + CREATE TABLE DiseaseBurden.location + + ( + + id integer NOT NULL, + + location character varying NOT NULL + + ); + + + CREATE TABLE DiseaseBurden.measures + + ( + + id integer NOT NULL, + + label character varying NOT NULL + + ); + + + CREATE TABLE DiseaseBurden.metric + + ( + + id integer NOT NULL, + + metric_label character varying NOT NULL + + ); + + + CREATE TABLE DiseaseBurden.rei + + ( + + id integer NOT NULL, + + rei_label character varying NOT NULL + + ); + + + CREATE TABLE DiseaseBurden.sex + + ( + + id integer NOT NULL, + + sex character varying NOT NULL + + ); + + + CREATE TABLE DiseaseBurden.trial_to_icd10 + + ( + + id integer NOT NULL, + + nct_id character varying NOT NULL, + + condition character varying NOT NULL, + + ui character varying, + + uri character varying, + + rootsource character varying, + + name character varying, + + source character varying, + + approved USER-DEFINED, + + approval_timestamp timestamp without time zone + + ); + + + CREATE TABLE Formularies.usp_dc_2023 + + ( + + USP Class character varying(250), + + USP Pharmacotherapeutic Group character varying(250),+ + API Concept character varying(250), + + rxcui character varying(15), + + tty character varying(10), + + Name character varying(256), + + Related BN character varying(250), + + Related DF character varying(25050), + + USP Category character varying(250) + + ); + + + CREATE TABLE ctgov.active_storage_attachments + + ( + + id bigint NOT NULL, + + name character varying NOT NULL, + + record_type character varying NOT NULL, + + record_id bigint NOT NULL, + + blob_id bigint NOT NULL, + + created_at timestamp without time zone NOT NULL + + ); + + + CREATE TABLE ctgov.active_storage_blobs + + ( + + metadata text, + + checksum character varying NOT NULL, + + byte_size bigint NOT NULL, + + created_at timestamp without time zone NOT NULL, + + id bigint NOT NULL, + + key character varying NOT NULL, + + filename character varying NOT NULL, + + content_type character varying + + ); + + + CREATE TABLE ctgov.baseline_counts + + ( + + count integer, + + nct_id character varying, + + id integer NOT NULL, + + ctgov_group_code character varying, + + units character varying, + + scope character varying, + + result_group_id integer + + ); + + + CREATE TABLE ctgov.baseline_measurements + + ( + + param_value character varying, + + id integer NOT NULL, + + nct_id character varying, + + result_group_id integer, + + ctgov_group_code character varying, + + classification character varying, + + category character varying, + + title character varying, + + description text, + + units character varying, + + param_type character varying, + + param_value_num numeric, + + dispersion_type character varying, + + dispersion_value character varying, + + dispersion_value_num numeric, + + dispersion_lower_limit numeric, + + dispersion_upper_limit numeric, + + explanation_of_na character varying, + + number_analyzed integer, + + number_analyzed_units character varying, + + population_description character varying, + + calculate_percentage character varying + + ); + + + CREATE TABLE ctgov.brief_summaries + + ( + + nct_id character varying, + + id integer NOT NULL, + + description text + + ); + + + CREATE TABLE ctgov.browse_conditions + + ( + + mesh_term character varying, + + id integer NOT NULL, + + mesh_type character varying, + + downcase_mesh_term character varying, + + nct_id character varying + + ); + + + CREATE TABLE ctgov.browse_interventions + + ( + + downcase_mesh_term character varying, + + mesh_term character varying, + + mesh_type character varying, + + id integer NOT NULL, + + nct_id character varying + + ); + + + CREATE TABLE ctgov.calculated_values + + ( + + number_of_secondary_outcomes_to_measure integer, + + maximum_age_unit character varying, + + minimum_age_unit character varying, + + maximum_age_num integer, + + minimum_age_num integer, + + has_single_facility boolean, + + has_us_facility boolean, + + months_to_report_results integer, + + number_of_sae_subjects integer, + + were_results_reported boolean, + + registered_in_calendar_year integer, + + nlm_download_date date, + + actual_duration integer, + + id integer NOT NULL, + + nct_id character varying, + + number_of_facilities integer, + + number_of_nsae_subjects integer, + + number_of_other_outcomes_to_measure integer, + + number_of_primary_outcomes_to_measure integer + + ); + + + CREATE TABLE ctgov.central_contacts + + ( + + phone_extension character varying, + + nct_id character varying, + + role character varying, + + id integer NOT NULL, + + contact_type character varying, + + name character varying, + + phone character varying, + + email character varying + + ); + + + CREATE TABLE ctgov.conditions + + ( + + downcase_name character varying, + + name character varying, + + id integer NOT NULL, + + nct_id character varying + + ); + + + CREATE TABLE ctgov.countries + + ( + + name character varying, + + nct_id character varying, + + id integer NOT NULL, + + removed boolean + + ); + + + CREATE TABLE ctgov.design_group_interventions + + ( + + id integer NOT NULL, + + design_group_id integer, + + intervention_id integer, + + nct_id character varying + + ); + + + CREATE TABLE ctgov.design_groups + + ( + + group_type character varying, + + id integer NOT NULL, + + nct_id character varying, + + title character varying, + + description text + + ); + + + CREATE TABLE ctgov.design_outcomes + + ( + + description text, + + measure text, + + outcome_type character varying, + + nct_id character varying, + + id integer NOT NULL, + + time_frame text, + + population character varying + + ); + + + CREATE TABLE ctgov.designs + + ( + + masking_description text, + + subject_masked boolean, + + caregiver_masked boolean, + + investigator_masked boolean, + + outcomes_assessor_masked boolean, + + id integer NOT NULL, + + nct_id character varying, + + allocation character varying, + + intervention_model character varying, + + observational_model character varying, + + primary_purpose character varying, + + time_perspective character varying, + + masking character varying, + + intervention_model_description text + + ); + + + CREATE TABLE ctgov.detailed_descriptions + + ( + + description text, + + nct_id character varying, + + id integer NOT NULL + + ); + + + CREATE TABLE ctgov.documents + + ( + + comment text, + + id integer NOT NULL, + + url character varying, + + document_type character varying, + + nct_id character varying, + + document_id character varying + + ); + + + CREATE TABLE ctgov.drop_withdrawals + + ( + + period character varying, + + reason character varying, + + count integer, + + ctgov_group_code character varying, + + result_group_id integer, + + nct_id character varying, + + id integer NOT NULL + + ); + + + CREATE TABLE ctgov.eligibilities + + ( + + older_adult boolean, + + id integer NOT NULL, + + nct_id character varying, + + sampling_method character varying, + + gender character varying, + + minimum_age character varying, + + maximum_age character varying, + + healthy_volunteers character varying, + + population text, + + criteria text, + + gender_description text, + + gender_based boolean, + + adult boolean, + + child boolean + + ); + + + CREATE TABLE ctgov.facilities + + ( + + id integer NOT NULL, + + nct_id character varying, + + status character varying, + + name character varying, + + city character varying, + + state character varying, + + zip character varying, + + country character varying + + ); + + + CREATE TABLE ctgov.facility_contacts + + ( + + contact_type character varying, + + name character varying, + + email character varying, + + id integer NOT NULL, + + nct_id character varying, + + phone character varying, + + phone_extension character varying, + + facility_id integer + + ); + + + CREATE TABLE ctgov.facility_investigators + + ( + + nct_id character varying, + + id integer NOT NULL, + + facility_id integer, + + role character varying, + + name character varying + + ); + + + CREATE TABLE ctgov.file_records + + ( + + url character varying, + + id bigint NOT NULL, + + filename character varying, + + file_size bigint, + + file_type character varying, + + created_at timestamp without time zone NOT NULL, + + updated_at timestamp without time zone NOT NULL + + ); + + + CREATE TABLE ctgov.id_information + + ( + + id integer NOT NULL, + + id_source character varying, + + nct_id character varying, + + id_link character varying, + + id_value character varying, + + id_type_description character varying, + + id_type character varying + + ); + + + CREATE TABLE ctgov.intervention_other_names + + ( + + name character varying, + + nct_id character varying, + + intervention_id integer, + + id integer NOT NULL + + ); + + + CREATE TABLE ctgov.interventions + + ( + + id integer NOT NULL, + + name character varying, + + intervention_type character varying, + + description text, + + nct_id character varying + + ); + + + CREATE TABLE ctgov.ipd_information_types + + ( + + name character varying, + + nct_id character varying, + + id integer NOT NULL + + ); + + + CREATE TABLE ctgov.keywords + + ( + + name character varying, + + id integer NOT NULL, + + nct_id character varying, + + downcase_name character varying + + ); + + + CREATE TABLE ctgov.links + + ( + + nct_id character varying, + + id integer NOT NULL, + + description text, + + url character varying + + ); + + + CREATE TABLE ctgov.mesh_headings + + ( + + qualifier character varying, + + id integer NOT NULL, + + subcategory character varying, + + heading character varying + + ); + + + CREATE TABLE ctgov.mesh_terms + + ( + + description character varying, + + tree_number character varying, + + qualifier character varying, + + id integer NOT NULL, + + downcase_mesh_term character varying, + + mesh_term character varying + + ); + + + CREATE TABLE ctgov.milestones + + ( + + count_units character varying, + + count integer, + + description text, + + period character varying, + + title character varying, + + ctgov_group_code character varying, + + result_group_id integer, + + nct_id character varying, + + id integer NOT NULL, + + milestone_description character varying + + ); + + + CREATE TABLE ctgov.outcome_analyses + + ( + + other_analysis_description text, + + param_type character varying, + + non_inferiority_type character varying, + + outcome_id integer, + + nct_id character varying, + + id integer NOT NULL, + + param_value numeric, + + dispersion_type character varying, + + dispersion_value numeric, + + p_value_modifier character varying, + + p_value double precision, + + ci_n_sides character varying, + + ci_percent numeric, + + ci_lower_limit numeric, + + ci_upper_limit numeric, + + ci_upper_limit_na_comment character varying, + + p_value_description character varying, + + method character varying, + + method_description text, + + estimate_description text, + + groups_description text, + + non_inferiority_description text + + ); + + + CREATE TABLE ctgov.outcome_analysis_groups + + ( + + result_group_id integer, + + ctgov_group_code character varying, + + id integer NOT NULL, + + nct_id character varying, + + outcome_analysis_id integer + + ); + + + CREATE TABLE ctgov.outcome_counts + + ( + + result_group_id integer, + + ctgov_group_code character varying, + + scope character varying, + + units character varying, + + count integer, + + outcome_id integer, + + nct_id character varying, + + id integer NOT NULL + + ); + + + CREATE TABLE ctgov.outcome_measurements + + ( + + result_group_id integer, + + ctgov_group_code character varying, + + classification character varying, + + category character varying, + + title character varying, + + description text, + + units character varying, + + param_type character varying, + + param_value character varying, + + param_value_num numeric, + + dispersion_type character varying, + + dispersion_value character varying, + + dispersion_value_num numeric, + + dispersion_lower_limit numeric, + + dispersion_upper_limit numeric, + + explanation_of_na text, + + id integer NOT NULL, + + nct_id character varying, + + outcome_id integer + + ); + + + CREATE TABLE ctgov.outcomes + + ( + + population text, + + id integer NOT NULL, + + nct_id character varying, + + outcome_type character varying, + + title text, + + description text, + + time_frame text, + + anticipated_posting_date date, + + anticipated_posting_month_year character varying, + + units character varying, + + units_analyzed character varying, + + dispersion_type character varying, + + param_type character varying + + ); + + + CREATE TABLE ctgov.overall_officials + + ( + + name character varying, + + affiliation character varying, + + role character varying, + + nct_id character varying, + + id integer NOT NULL + + ); + + + CREATE TABLE ctgov.participant_flows + + ( + + count_units integer, + + nct_id character varying, + + pre_assignment_details text, + + units_analyzed character varying, + + drop_withdraw_comment character varying, + + reason_comment character varying, + + recruitment_details text, + + id integer NOT NULL + + ); + + + CREATE TABLE ctgov.pending_results + + ( + + event_date_description character varying, + + event_date date, + + id integer NOT NULL, + + nct_id character varying, + + event character varying + + ); + + + CREATE TABLE ctgov.provided_documents + + ( + + has_sap boolean, + + id integer NOT NULL, + + nct_id character varying, + + document_type character varying, + + has_protocol boolean, + + has_icf boolean, + + document_date date, + + url character varying + + ); + + + CREATE TABLE ctgov.reported_event_totals + + ( + + id integer NOT NULL, + + updated_at timestamp without time zone NOT NULL, + + created_at timestamp without time zone NOT NULL, + + subjects_at_risk integer, + + subjects_affected integer, + + classification character varying NOT NULL, + + event_type character varying, + + ctgov_group_code character varying NOT NULL, + + nct_id character varying NOT NULL + + ); + + + CREATE TABLE ctgov.reported_events + + ( + + vocab character varying, + + nct_id character varying, + + result_group_id integer, + + ctgov_group_code character varying, + + time_frame text, + + event_type character varying, + + default_vocab character varying, + + default_assessment character varying, + + subjects_affected integer, + + subjects_at_risk integer, + + description text, + + event_count integer, + + organ_system character varying, + + adverse_event_term character varying, + + frequency_threshold integer, + + assessment character varying, + + id integer NOT NULL + + ); + + + CREATE TABLE ctgov.responsible_parties + + ( + + affiliation text, + + nct_id character varying, + + responsible_party_type character varying, + + name character varying, + + title character varying, + + organization character varying, + + id integer NOT NULL, + + old_name_title character varying + + ); + + + CREATE TABLE ctgov.result_agreements + + ( + + other_details text, + + restrictive_agreement character varying, + + restriction_type character varying, + + agreement text, + + pi_employee character varying, + + nct_id character varying, + + id integer NOT NULL + + ); + + + CREATE TABLE ctgov.result_contacts + + ( + + id integer NOT NULL, + + organization character varying, + + name character varying, + + phone character varying, + + email character varying, + + extension character varying, + + nct_id character varying + + ); + + + CREATE TABLE ctgov.result_groups + + ( + + result_type character varying, + + title character varying, + + description text, + + id integer NOT NULL, + + nct_id character varying, + + ctgov_group_code character varying + + ); + + + CREATE TABLE ctgov.retractions + + ( + + pmid character varying, + + id bigint NOT NULL, + + nct_id character varying, + + source character varying, + + reference_id integer + + ); + + + CREATE TABLE ctgov.search_results + + ( + + created_at timestamp without time zone NOT NULL, + + nct_id character varying NOT NULL, + + id integer NOT NULL, + + updated_at timestamp without time zone NOT NULL, + + grouping character varying NOT NULL, + + study_search_id integer, + + name character varying NOT NULL + + ); + + + CREATE TABLE ctgov.sponsors + + ( + + id integer NOT NULL, + + name character varying, + + lead_or_collaborator character varying, + + agency_class character varying, + + nct_id character varying + + ); + + + CREATE TABLE ctgov.studies + + ( + + phase character varying, + + delayed_posting character varying, + + source_class character varying, + + updated_at timestamp without time zone NOT NULL, + + created_at timestamp without time zone NOT NULL, + + plan_to_share_ipd_description character varying, + + plan_to_share_ipd character varying, + + ipd_url character varying, + + ipd_access_criteria character varying, + + ipd_time_frame character varying, + + biospec_description text, + + biospec_retention character varying, + + is_us_export boolean, + + is_ppsd boolean, + + is_unapproved_device boolean, + + is_fda_regulated_device boolean, + + is_fda_regulated_drug boolean, + + has_dmc boolean, + + expanded_access_type_treatment boolean, + + expanded_access_type_intermediate boolean, + + expanded_access_type_individual boolean, + + has_expanded_access boolean, + + why_stopped character varying, + + number_of_groups integer, + + number_of_arms integer, + + limitations_and_caveats character varying, + + source character varying, + + enrollment_type character varying, + + enrollment integer, + + expanded_access_nctid character varying, + + last_known_status character varying, + + overall_status character varying, + + official_title text, + + brief_title text, + + baseline_population text, + + acronym character varying, + + study_type character varying, + + target_duration character varying, + + results_first_submitted_date date, + + study_first_submitted_date date, + + nlm_download_date_description character varying, + + primary_completion_date date, + + nct_id character varying, + + primary_completion_date_type character varying, + + primary_completion_month_year character varying, + + completion_date date, + + completion_date_type character varying, + + completion_month_year character varying, + + verification_date date, + + verification_month_year character varying, + + start_date date, + + start_date_type character varying, + + start_month_year character varying, + + last_update_posted_date_type character varying, + + last_update_posted_date date, + + last_update_submitted_qc_date date, + + disposition_first_posted_date_type character varying,+ + disposition_first_posted_date date, + + disposition_first_submitted_qc_date date, + + results_first_posted_date_type character varying, + + results_first_posted_date date, + + results_first_submitted_qc_date date, + + study_first_posted_date_type character varying, + + study_first_posted_date date, + + study_first_submitted_qc_date date, + + last_update_submitted_date date, + + disposition_first_submitted_date date, + + baseline_type_units_analyzed character varying, + + fdaaa801_violation boolean, + + expanded_access_status_for_nctid character varying + + ); + + + CREATE TABLE ctgov.study_records + + ( + + nct_id character varying, + + sha character varying, + + created_at timestamp without time zone NOT NULL, + + updated_at timestamp without time zone NOT NULL, + + type character varying, + + content json, + + id bigint NOT NULL + + ); + + + CREATE TABLE ctgov.study_references + + ( + + id integer NOT NULL, + + citation text, + + reference_type character varying, + + pmid character varying, + + nct_id character varying + + ); + + + CREATE TABLE ctgov.study_searches + + ( + + query character varying NOT NULL, + + id integer NOT NULL, + + updated_at timestamp without time zone NOT NULL, + + created_at timestamp without time zone NOT NULL, + + beta_api boolean NOT NULL, + + name character varying NOT NULL, + + grouping character varying NOT NULL, + + save_tsv boolean NOT NULL + + ); + + + CREATE TABLE ctgov.verifiers + + ( + + id bigint NOT NULL, + + created_at timestamp without time zone NOT NULL, + + source json, + + updated_at timestamp without time zone NOT NULL, + + load_event_id integer, + + last_run timestamp without time zone, + + differences json NOT NULL + + ); + + + CREATE TABLE history.trial_snapshots + + ( + + completion_date timestamp without time zone, + + nct_id character varying(15) NOT NULL, + + version integer NOT NULL, + + submission_date timestamp without time zone, + + primary_completion_date timestamp without time zone, + + primary_completion_date_category USER-DEFINED, + + start_date timestamp without time zone, + + start_date_category USER-DEFINED, + + completion_date_category USER-DEFINED, + + overall_status USER-DEFINED, + + enrollment integer, + + enrollment_category USER-DEFINED, + + sponsor character varying, + + responsible_party character varying + + ); + + + CREATE TABLE http.download_status + + ( + + status USER-DEFINED NOT NULL, + + nct_id character varying(15) NOT NULL, + + id integer NOT NULL, + + update_timestamp timestamp with time zone + + ); + + + CREATE TABLE http.responses + + ( + + nct_id character varying(15), + + version_a smallint, + + version_b smallint, + + url character varying(255), + + response_code smallint, + + response_date timestamp with time zone, + + id integer NOT NULL, + + html text + + ); + + + CREATE TABLE rxnorm_migrated.ALLNDC_HISTORY + + ( + + sab character varying(10), + + ndc11_left9 character(9) NOT NULL, + + rowid integer NOT NULL, + + ndc character(13) NOT NULL, + + suppress character(1), + + edate character(6), + + sdate character(6), + + rxcui character(16) + + ); + + + CREATE TABLE rxnorm_migrated.ALLRXCUI_HISTORY + + ( + + tty character varying(5), + + sts character(1), + + rxindb character(1), + + indb character(1), + + rowid integer NOT NULL, + + rxcui character(16) NOT NULL, + + sab character varying(20), + + str character varying(3000), + + sdate character(6), + + edate character(6) + + ); + + + CREATE TABLE rxnorm_migrated.rxnorm_props + + ( + + rxcui character(8) NOT NULL, + + pres smallint NOT NULL, + + propvalue1 character varying(4000) NOT NULL, + + propname character varying(30) NOT NULL + + ); + + + CREATE TABLE rxnorm_migrated.rxnorm_relations + + ( + + tty2 character(4) NOT NULL, + + rxcui1 character(8) NOT NULL, + + tty1 character(4) NOT NULL, + + cvf character(4) NOT NULL, + + rxcui2 character(8) NOT NULL + + ); + + + CREATE TABLE spl.nsde + + ( + + proprietary_name character varying(500), + + package_ndc character varying(50), + + application_number_or_citation character varying(25),+ + package_ndc11 character varying(11), + + id integer NOT NULL, + + reactivation_date date, + + inactivation_date date, + + marketing_start_date date, + + marketing_end_date date, + + billing_unit character varying(35), + + dosage_form character varying(155), + + marketing_category character varying(160), + + product_type character varying(90) + + ); + + +(76 rows) + diff --git a/export/output_2025-01-06_export_data_postgres_views.sql b/export/output_2025-01-06_export_data_postgres_views.sql new file mode 100644 index 0000000..3a3d39c --- /dev/null +++ b/export/output_2025-01-06_export_data_postgres_views.sql @@ -0,0 +1,415 @@ + ?column? +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + CREATE OR REPLACE VIEW ctgov.all_browse_conditions AS SELECT browse_conditions.nct_id, + + array_to_string(array_agg(DISTINCT browse_conditions.mesh_term), '|'::text) AS names + + FROM ctgov.browse_conditions + + GROUP BY browse_conditions.nct_id; + CREATE OR REPLACE VIEW ctgov.all_browse_interventions AS SELECT browse_interventions.nct_id, + + array_to_string(array_agg(browse_interventions.mesh_term), '|'::text) AS names + + FROM ctgov.browse_interventions + + GROUP BY browse_interventions.nct_id; + CREATE OR REPLACE VIEW ctgov.all_cities AS SELECT facilities.nct_id, + + array_to_string(array_agg(DISTINCT facilities.city), '|'::text) AS names + + FROM ctgov.facilities + + GROUP BY facilities.nct_id; + CREATE OR REPLACE VIEW ctgov.all_conditions AS SELECT conditions.nct_id, + + array_to_string(array_agg(DISTINCT conditions.name), '|'::text) AS names + + FROM ctgov.conditions + + GROUP BY conditions.nct_id; + CREATE OR REPLACE VIEW ctgov.all_countries AS SELECT countries.nct_id, + + array_to_string(array_agg(DISTINCT countries.name), '|'::text) AS names + + FROM ctgov.countries + + WHERE (countries.removed IS NOT TRUE) + + GROUP BY countries.nct_id; + CREATE OR REPLACE VIEW ctgov.all_design_outcomes AS SELECT design_outcomes.nct_id, + + array_to_string(array_agg(DISTINCT design_outcomes.measure), '|'::text) AS names + + FROM ctgov.design_outcomes + + GROUP BY design_outcomes.nct_id; + CREATE OR REPLACE VIEW ctgov.all_facilities AS SELECT facilities.nct_id, + + array_to_string(array_agg(facilities.name), '|'::text) AS names + + FROM ctgov.facilities + + GROUP BY facilities.nct_id; + CREATE OR REPLACE VIEW ctgov.all_group_types AS SELECT design_groups.nct_id, + + array_to_string(array_agg(DISTINCT design_groups.group_type), '|'::text) AS names + + FROM ctgov.design_groups + + GROUP BY design_groups.nct_id; + CREATE OR REPLACE VIEW ctgov.all_id_information AS SELECT id_information.nct_id, + + array_to_string(array_agg(DISTINCT id_information.id_value), '|'::text) AS names + + FROM ctgov.id_information + + GROUP BY id_information.nct_id; + CREATE OR REPLACE VIEW ctgov.all_intervention_types AS SELECT interventions.nct_id, + + array_to_string(array_agg(interventions.intervention_type), '|'::text) AS names + + FROM ctgov.interventions + + GROUP BY interventions.nct_id; + CREATE OR REPLACE VIEW ctgov.all_interventions AS SELECT interventions.nct_id, + + array_to_string(array_agg(interventions.name), '|'::text) AS names + + FROM ctgov.interventions + + GROUP BY interventions.nct_id; + CREATE OR REPLACE VIEW ctgov.all_keywords AS SELECT keywords.nct_id, + + array_to_string(array_agg(DISTINCT keywords.name), '|'::text) AS names + + FROM ctgov.keywords + + GROUP BY keywords.nct_id; + CREATE OR REPLACE VIEW ctgov.all_overall_official_affiliations AS SELECT overall_officials.nct_id, + + array_to_string(array_agg(overall_officials.affiliation), '|'::text) AS names + + FROM ctgov.overall_officials + + GROUP BY overall_officials.nct_id; + CREATE OR REPLACE VIEW ctgov.all_overall_officials AS SELECT overall_officials.nct_id, + + array_to_string(array_agg(overall_officials.name), '|'::text) AS names + + FROM ctgov.overall_officials + + GROUP BY overall_officials.nct_id; + CREATE OR REPLACE VIEW ctgov.all_primary_outcome_measures AS SELECT design_outcomes.nct_id, + + array_to_string(array_agg(DISTINCT design_outcomes.measure), '|'::text) AS names + + FROM ctgov.design_outcomes + + WHERE ((design_outcomes.outcome_type)::text = 'primary'::text) + + GROUP BY design_outcomes.nct_id; + CREATE OR REPLACE VIEW ctgov.all_secondary_outcome_measures AS SELECT design_outcomes.nct_id, + + array_to_string(array_agg(DISTINCT design_outcomes.measure), '|'::text) AS names + + FROM ctgov.design_outcomes + + WHERE ((design_outcomes.outcome_type)::text = 'secondary'::text) + + GROUP BY design_outcomes.nct_id; + CREATE OR REPLACE VIEW ctgov.all_sponsors AS SELECT sponsors.nct_id, + + array_to_string(array_agg(DISTINCT sponsors.name), '|'::text) AS names + + FROM ctgov.sponsors + + GROUP BY sponsors.nct_id; + CREATE OR REPLACE VIEW ctgov.all_states AS SELECT facilities.nct_id, + + array_to_string(array_agg(DISTINCT facilities.state), '|'::text) AS names + + FROM ctgov.facilities + + GROUP BY facilities.nct_id; + CREATE OR REPLACE VIEW ctgov.categories AS SELECT search_results.id, + + search_results.nct_id, + + search_results.name, + + search_results.created_at, + + search_results.updated_at, + + search_results."grouping", + + search_results.study_search_id + + FROM ctgov.search_results; + CREATE OR REPLACE VIEW ctgov.covid_19_studies AS SELECT s.nct_id, + + s.overall_status, + + s.study_type, + + s.official_title, + + s.acronym, + + s.phase, + + s.why_stopped, + + s.has_dmc, + + s.enrollment, + + s.is_fda_regulated_device, + + s.is_fda_regulated_drug, + + s.is_unapproved_device, + + s.has_expanded_access, + + s.study_first_submitted_date, + + s.last_update_posted_date, + + s.results_first_posted_date, + + s.start_date, + + s.primary_completion_date, + + s.completion_date, + + s.study_first_posted_date, + + cv.number_of_facilities, + + cv.has_single_facility, + + cv.nlm_download_date, + + s.number_of_arms, + + s.number_of_groups, + + sp.name AS lead_sponsor, + + aid.names AS other_ids, + + e.gender, + + e.gender_based, + + e.gender_description, + + e.population, + + e.minimum_age, + + e.maximum_age, + + e.criteria, + + e.healthy_volunteers, + + ak.names AS keywords, + + ai.names AS interventions, + + ac.names AS conditions, + + d.primary_purpose, + + d.allocation, + + d.observational_model, + + d.intervention_model, + + d.masking, + + d.subject_masked, + + d.caregiver_masked, + + d.investigator_masked, + + d.outcomes_assessor_masked, + + ado.names AS design_outcomes, + + bs.description AS brief_summary, + + dd.description AS detailed_description + + FROM (((((((((((ctgov.studies s + + FULL JOIN ctgov.all_conditions ac ON (((s.nct_id)::text = (ac.nct_id)::text))) + + FULL JOIN ctgov.all_id_information aid ON (((s.nct_id)::text = (aid.nct_id)::text))) + + FULL JOIN ctgov.all_design_outcomes ado ON (((s.nct_id)::text = (ado.nct_id)::text))) + + FULL JOIN ctgov.all_keywords ak ON (((s.nct_id)::text = (ak.nct_id)::text))) + + FULL JOIN ctgov.all_interventions ai ON (((s.nct_id)::text = (ai.nct_id)::text))) + + FULL JOIN ctgov.sponsors sp ON (((s.nct_id)::text = (sp.nct_id)::text))) + + FULL JOIN ctgov.calculated_values cv ON (((s.nct_id)::text = (cv.nct_id)::text))) + + FULL JOIN ctgov.designs d ON (((s.nct_id)::text = (d.nct_id)::text))) + + FULL JOIN ctgov.eligibilities e ON (((s.nct_id)::text = (e.nct_id)::text))) + + FULL JOIN ctgov.brief_summaries bs ON (((s.nct_id)::text = (bs.nct_id)::text))) + + FULL JOIN ctgov.detailed_descriptions dd ON (((s.nct_id)::text = (dd.nct_id)::text))) + + WHERE (((sp.lead_or_collaborator)::text = 'lead'::text) AND ((s.nct_id)::text IN ( SELECT search_results.nct_id + + FROM ctgov.search_results + + WHERE ((search_results.name)::text = 'covid-19'::text)))); + CREATE OR REPLACE VIEW history.match_drugs_to_trials AS SELECT bi.nct_id, + + rp.rxcui, + + rp.propvalue1 + + FROM (ctgov.browse_interventions bi + + JOIN rxnorm_migrated.rxnorm_props rp ON (((bi.downcase_mesh_term)::text = (rp.propvalue1)::text))) + + WHERE (((rp.propname)::text = 'RxNorm Name'::text) AND ((bi.nct_id)::text IN ( SELECT trial_snapshots.nct_id + + FROM history.trial_snapshots))); + CREATE OR REPLACE VIEW http.most_recent_download_status AS SELECT t.nct_id, + + t.status, + + t.update_timestamp + + FROM ( SELECT download_status.id, + + download_status.nct_id, + + download_status.status, + + download_status.update_timestamp, + + row_number() OVER (PARTITION BY download_status.nct_id ORDER BY download_status.update_timestamp DESC) AS rn + + FROM http.download_status) t + + WHERE (t.rn = 1) + + ORDER BY t.nct_id; + CREATE OR REPLACE VIEW public.time_between_submission_and_start_view AS SELECT s.nct_id, + + s.start_date, + + ts.version, + + ts.submission_date, + + abs(((EXTRACT(epoch FROM (ts.submission_date - (s.start_date)::timestamp without time zone)))::double precision / (((24 * 60) * 60))::double precision)) AS start_deviance + + FROM (ctgov.studies s + + JOIN history.trial_snapshots ts ON (((s.nct_id)::text = (ts.nct_id)::text))) + + WHERE ((s.nct_id)::text IN ( SELECT DISTINCT tti.nct_id + + FROM "DiseaseBurden".trial_to_icd10 tti)); + CREATE OR REPLACE VIEW public.rank_proximity_to_start_time_view AS SELECT cte.nct_id, + + cte.version, + + row_number() OVER (PARTITION BY cte.nct_id ORDER BY cte.start_deviance) AS rownum, + + cte.submission_date, + + cte.start_deviance, + + cte.start_date, + + ts.primary_completion_date, + + ts.primary_completion_date_category, + + ts.overall_status, + + ts.enrollment, + + ts.enrollment_category + + FROM (time_between_submission_and_start_view cte + + JOIN history.trial_snapshots ts ON ((((cte.nct_id)::text = (ts.nct_id)::text) AND (cte.version = ts.version)))); + CREATE OR REPLACE VIEW public.enrollment_closest_to_start_view AS SELECT cte2.nct_id, + + min(cte2.rownum) AS enrollment_source + + FROM rank_proximity_to_start_time_view cte2 + + WHERE (cte2.enrollment IS NOT NULL) + + GROUP BY cte2.nct_id; + CREATE OR REPLACE VIEW public.match_trials_to_bn_in AS WITH trialncts AS ( + + SELECT DISTINCT ts.nct_id + + FROM history.trial_snapshots ts + + ) + + SELECT bi.nct_id, + + bi.downcase_mesh_term, + + rr.tty2, + + rr.rxcui2 AS bn_or_in_cui, + + count(*) AS count + + FROM ((ctgov.browse_interventions bi + + LEFT JOIN rxnorm_migrated.rxnorm_props rp ON (((bi.downcase_mesh_term)::text = (rp.propvalue1)::text))) + + LEFT JOIN rxnorm_migrated.rxnorm_relations rr ON ((rr.rxcui1 = rp.rxcui))) + + WHERE (((bi.nct_id)::text IN ( SELECT trialncts.nct_id + + FROM trialncts)) AND ((bi.mesh_type)::text = 'mesh-list'::text) AND ((rp.propname)::text = 'Active_ingredient_name'::text) AND (rr.tty2 = ANY (ARRAY['BN'::bpchar, 'IN'::bpchar, 'MIN'::bpchar]))) + + GROUP BY bi.nct_id, bi.downcase_mesh_term, rr.tty2, rr.rxcui2 + + ORDER BY bi.nct_id; + CREATE OR REPLACE VIEW public.match_trial_to_ndc11 AS SELECT mttbi.nct_id, + + ah.ndc, + + count(*) AS count + + FROM ((match_trials_to_bn_in mttbi + + LEFT JOIN rxnorm_migrated.rxnorm_relations rr ON ((mttbi.bn_or_in_cui = rr.rxcui1))) + + LEFT JOIN rxnorm_migrated."ALLNDC_HISTORY" ah ON ((rr.rxcui2 = ah.rxcui))) + + WHERE ((rr.tty1 = 'BN'::bpchar) AND (rr.tty2 = ANY (ARRAY['SBD'::bpchar, 'BPCK'::bpchar])) AND ((ah.sab)::text = 'RXNORM'::text)) + + GROUP BY mttbi.nct_id, ah.ndc + + ORDER BY mttbi.nct_id, ah.ndc; + CREATE OR REPLACE VIEW public.match_trial_to_marketing_start_date AS SELECT mttn.nct_id, + + n.application_number_or_citation, + + min(n.marketing_start_date) AS min + + FROM (match_trial_to_ndc11 mttn + + JOIN spl.nsde n ON ((mttn.ndc = (n.package_ndc11)::bpchar))) + + WHERE (((n.product_type)::text = 'HUMAN PRESCRIPTION DRUG'::text) AND ((n.marketing_category)::text = ANY (ARRAY[('NDA'::character varying)::text, ('ANDA'::character varying)::text, ('BLA'::character varying)::text, ('NDA authorized generic'::character varying)::text, ('NDA AUTHORIZED GENERIC'::character varying)::text]))) + + GROUP BY mttn.nct_id, n.application_number_or_citation + + ORDER BY mttn.nct_id; + CREATE OR REPLACE VIEW public.view_burdens_cte AS SELECT b.measure_id, + + b.location_id, + + b.sex_id, + + b.age_id, + + b.cause_id, + + b.metric_id, + + b.year, + + b.val, + + b.upper_95, + + b.lower_95, + + b.key_column + + FROM "DiseaseBurden".burdens b + + WHERE ((b.sex_id = 3) AND (b.metric_id = 1) AND (b.measure_id = 2) AND (b.age_id = 22)); + CREATE OR REPLACE VIEW public.view_burdens_cte2 AS SELECT c1.cause_id, + + c1.year, + + c1.val AS h_sdi_val, + + c1.upper_95 AS h_sdi_u95, + + c1.lower_95 AS h_sdi_l95, + + c2.val AS hm_sdi_val, + + c2.upper_95 AS hm_sdi_u95, + + c2.lower_95 AS hm_sdi_l95, + + c3.val AS m_sdi_val, + + c3.upper_95 AS m_sdi_u95, + + c3.lower_95 AS m_sdi_l95, + + c4.val AS lm_sdi_val, + + c4.upper_95 AS lm_sdi_u95, + + c4.lower_95 AS lm_sdi_l95, + + c5.val AS l_sdi_val, + + c5.upper_95 AS l_sdi_u95, + + c5.lower_95 AS l_sdi_l95 + + FROM ((((view_burdens_cte c1 + + JOIN view_burdens_cte c2 ON (((c1.cause_id = c2.cause_id) AND (c1.year = c2.year)))) + + JOIN view_burdens_cte c3 ON (((c1.cause_id = c3.cause_id) AND (c1.year = c3.year)))) + + JOIN view_burdens_cte c4 ON (((c1.cause_id = c4.cause_id) AND (c1.year = c4.year)))) + + JOIN view_burdens_cte c5 ON (((c1.cause_id = c5.cause_id) AND (c1.year = c5.year)))) + + WHERE ((c1.location_id = 44635) AND (c2.location_id = 44634) AND (c3.location_id = 44639) AND (c4.location_id = 44636) AND (c5.location_id = 44637)); + CREATE OR REPLACE VIEW public.view_cte AS SELECT ts.nct_id, + + ts.primary_completion_date, + + ts.primary_completion_date_category, + + ts.enrollment, + + ts.start_date, + + ts.enrollment_category, + + ts.overall_status, + + min(ts.submission_date) AS earliest_date_observed + + FROM history.trial_snapshots ts + + WHERE (((ts.nct_id)::text IN ( SELECT DISTINCT tti.nct_id + + FROM "DiseaseBurden".trial_to_icd10 tti + + WHERE (tti.approved = 'accepted'::"DiseaseBurden".validation_type))) AND (ts.submission_date >= ts.start_date) AND (ts.overall_status <> ALL (ARRAY['Completed'::history.study_statuses, 'Terminated'::history.study_statuses]))) + + GROUP BY ts.nct_id, ts.primary_completion_date, ts.primary_completion_date_category, ts.start_date, ts.enrollment, ts.enrollment_category, ts.overall_status; + CREATE OR REPLACE VIEW public.view_disbur_cte0 AS SELECT tti.nct_id, + + tti.ui, + + tti.condition, + + itc.cause_text, + + ch.cause_id, + + ch.level + + FROM (("DiseaseBurden".trial_to_icd10 tti + + JOIN "DiseaseBurden".icd10_to_cause itc ON ((replace(replace((tti.ui)::text, '-'::text, ''::text), '.'::text, ''::text) = replace(replace((itc.code)::text, '-'::text, ''::text), '.'::text, ''::text)))) + + JOIN "DiseaseBurden".cause_hierarchy ch ON (((itc.cause_text)::text = (ch.cause_name)::text))) + + WHERE (tti.approved = 'accepted'::"DiseaseBurden".validation_type); + CREATE OR REPLACE VIEW public.view_disbur_cte AS SELECT view_disbur_cte0.nct_id, + + max(view_disbur_cte0.level) AS max_level + + FROM view_disbur_cte0 + + GROUP BY view_disbur_cte0.nct_id; + CREATE OR REPLACE VIEW public.view_trial_to_cause AS SELECT tti.nct_id, + + tti.ui, + + tti.condition, + + itc.cause_text, + + ch.cause_id, + + ch.level + + FROM (("DiseaseBurden".trial_to_icd10 tti + + JOIN "DiseaseBurden".icd10_to_cause itc ON ((replace(replace((tti.ui)::text, '-'::text, ''::text), '.'::text, ''::text) = replace(replace((itc.code)::text, '-'::text, ''::text), '.'::text, ''::text)))) + + JOIN "DiseaseBurden".cause_hierarchy ch ON (((itc.cause_text)::text = (ch.cause_name)::text))) + + WHERE (tti.approved = 'accepted'::"DiseaseBurden".validation_type) + + ORDER BY tti.nct_id; + CREATE OR REPLACE VIEW public.view_disbur_cte2 AS SELECT ttc.nct_id, + + ttc.ui, + + ttc.condition, + + ttc.cause_text, + + ttc.cause_id, + + disbur_cte.max_level + + FROM (view_trial_to_cause ttc + + JOIN view_disbur_cte disbur_cte ON (((disbur_cte.nct_id)::text = (ttc.nct_id)::text))) + + WHERE (ttc.level = disbur_cte.max_level) + + GROUP BY ttc.nct_id, ttc.ui, ttc.condition, ttc.cause_text, ttc.cause_id, disbur_cte.max_level + + ORDER BY ttc.nct_id, ttc.ui; + CREATE OR REPLACE VIEW public.view_disbur_cte3 AS SELECT disbur_cte2.nct_id, + + SUBSTRING(disbur_cte2.ui FROM 1 FOR 3) AS code, + + disbur_cte2.condition, + + disbur_cte2.cause_text, + + disbur_cte2.cause_id, + + ic.chapter_code AS category_id, + + ic.group_name, + + disbur_cte2.max_level + + FROM (view_disbur_cte2 disbur_cte2 + + JOIN "DiseaseBurden".icd10_categories ic ON (((SUBSTRING(disbur_cte2.ui FROM 1 FOR 3) <= (ic.end_code)::text) AND (SUBSTRING(disbur_cte2.ui FROM 1 FOR 3) >= (ic.start_code)::text)))) + + WHERE (ic.level = 1); + CREATE OR REPLACE VIEW public.formatted_data AS SELECT cte.nct_id, + + cte.start_date, + + cte.enrollment AS current_enrollment, + + cte.enrollment_category, + + cte.overall_status AS current_status, + + cte.earliest_date_observed, + + (EXTRACT(epoch FROM (cte.earliest_date_observed - cte.start_date)) / EXTRACT(epoch FROM (cte.primary_completion_date - cte.start_date))) AS elapsed_duration, + + count(DISTINCT mttmsd.application_number_or_citation) AS n_brands, + + dbc3.code, + + dbc3.condition, + + dbc3.cause_text, + + dbc3.cause_id, + + dbc3.category_id, + + dbc3.group_name, + + dbc3.max_level, + + b.year, + + b.h_sdi_val, + + b.h_sdi_u95, + + b.h_sdi_l95, + + b.hm_sdi_val, + + b.hm_sdi_u95, + + b.hm_sdi_l95, + + b.m_sdi_val, + + b.m_sdi_u95, + + b.m_sdi_l95, + + b.lm_sdi_val, + + b.lm_sdi_u95, + + b.lm_sdi_l95, + + b.l_sdi_val, + + b.l_sdi_u95, + + b.l_sdi_l95 + + FROM (((view_cte cte + + JOIN match_trial_to_marketing_start_date mttmsd ON (((cte.nct_id)::text = (mttmsd.nct_id)::text))) + + JOIN view_disbur_cte3 dbc3 ON (((dbc3.nct_id)::text = (cte.nct_id)::text))) + + JOIN view_burdens_cte2 b ON (((b.cause_id = dbc3.cause_id) AND (EXTRACT(year FROM b.year) = EXTRACT(year FROM cte.earliest_date_observed))))) + + WHERE (mttmsd.min <= cte.earliest_date_observed) + + GROUP BY cte.nct_id, cte.start_date, cte.enrollment, cte.enrollment_category, cte.overall_status, cte.earliest_date_observed, (EXTRACT(epoch FROM (cte.earliest_date_observed - cte.start_date)) / EXTRACT(epoch FROM (cte.primary_completion_date - cte.start_date))), dbc3.code, dbc3.condition, dbc3.cause_text, dbc3.cause_id, dbc3.category_id, dbc3.group_name, dbc3.max_level, b.cause_id, b.year, b.h_sdi_val, b.h_sdi_u95, b.h_sdi_l95, b.hm_sdi_val, b.hm_sdi_u95, b.hm_sdi_l95, b.m_sdi_val, b.m_sdi_u95, b.m_sdi_l95, b.lm_sdi_val, b.lm_sdi_u95, b.lm_sdi_l95, b.l_sdi_val, b.l_sdi_u95, b.l_sdi_l95+ + ORDER BY cte.nct_id, cte.earliest_date_observed; + CREATE OR REPLACE VIEW public.formatted_data_with_planned_enrollment AS SELECT f.nct_id, + + f.start_date, + + f.current_enrollment, + + f.enrollment_category, + + f.current_status, + + f.earliest_date_observed, + + f.elapsed_duration, + + f.n_brands, + + f.code, + + f.condition, + + f.cause_text, + + f.cause_id, + + f.category_id, + + f.group_name, + + f.max_level, + + f.year, + + f.h_sdi_val, + + f.h_sdi_u95, + + f.h_sdi_l95, + + f.hm_sdi_val, + + f.hm_sdi_u95, + + f.hm_sdi_l95, + + f.m_sdi_val, + + f.m_sdi_u95, + + f.m_sdi_l95, + + f.lm_sdi_val, + + f.lm_sdi_u95, + + f.lm_sdi_l95, + + f.l_sdi_val, + + f.l_sdi_u95, + + f.l_sdi_l95, + + s.overall_status AS final_status, + + c2a.version, + + c2a.enrollment AS planned_enrollment + + FROM (((formatted_data f + + JOIN ctgov.studies s ON (((f.nct_id)::text = (s.nct_id)::text))) + + JOIN enrollment_closest_to_start_view c3e ON (((c3e.nct_id)::text = (f.nct_id)::text))) + + JOIN rank_proximity_to_start_time_view c2a ON ((((c3e.nct_id)::text = (c2a.nct_id)::text) AND (c3e.enrollment_source = c2a.rownum)))); + CREATE OR REPLACE VIEW http.trials_to_download AS SELECT most_recent_download_status.nct_id + + FROM http.most_recent_download_status + + WHERE (most_recent_download_status.status = 'Of Interest'::http.history_download_status); + CREATE OR REPLACE VIEW public.primary_design_outcomes AS SELECT do2.id, + + do2.nct_id, + + do2.outcome_type, + + do2.measure, + + do2.time_frame, + + do2.population, + + do2.description + + FROM ctgov.design_outcomes do2 + + WHERE (((do2.outcome_type)::text = 'primary'::text) AND ((do2.nct_id)::text IN ( SELECT DISTINCT fd.nct_id + + FROM formatted_data fd))); +(40 rows) +