Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add initial migration script to include TCR tables & custom query tables #2462

Merged
merged 3 commits into from
Aug 29, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
107 changes: 107 additions & 0 deletions containers/tefca-viewer/migrations/V01_01__tcr_custom_query_schema.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
BEGIN;
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

CREATE TABLE IF NOT EXISTS conditions (
id TEXT PRIMARY KEY,
system TEXT,
name TEXT,
version TEXT
);

CREATE TABLE IF NOT EXISTS valuesets (
id TEXT PRIMARY KEY,
oid TEXT,
version TEXT,
name TEXT,
author TEXT,
type TEXT
);

CREATE TABLE IF NOT EXISTS concepts (
id TEXT PRIMARY KEY,
code TEXT,
code_system TEXT,
display TEXT,
gem_formatted_code TEXT,
version TEXT
);

CREATE TABLE IF NOT EXISTS condition_to_valueset (
id TEXT PRIMARY KEY,
condition_id TEXT,
valueset_id TEXT,
source TEXT,
FOREIGN KEY (condition_id) REFERENCES conditions(id),
FOREIGN KEY (valueset_id) REFERENCES valuesets(id)
);

CREATE TABLE IF NOT EXISTS valueset_to_concept (
id TEXT PRIMARY KEY,
valueset_id TEXT,
concept_id TEXT,
FOREIGN KEY (valueset_id) REFERENCES valuesets(id),
FOREIGN KEY (concept_id) REFERENCES concepts(id)
);

CREATE TABLE IF NOT EXISTS icd_crosswalk (
id TEXT PRIMARY KEY,
icd10_code TEXT,
m-goggins marked this conversation as resolved.
Show resolved Hide resolved
icd9_code TEXT,
match_flags TEXT);


CREATE TABLE IF NOT EXISTS query (
m-goggins marked this conversation as resolved.
Show resolved Hide resolved
id UUID DEFAULT uuid_generate_v4 (),
author VARCHAR(255),
date_created TIMESTAMP,
date_last_modified TIMESTAMP,
time_window_number INT,
time_window_unit VARCHAR(80),
PRIMARY KEY (id));

CREATE TABLE IF NOT EXISTS query_to_valueset (
id TEXT PRIMARY KEY,
query_id UUID,
valueset_id TEXT,
FOREIGN KEY (query_id) REFERENCES query(query_id),
FOREIGN KEY (valueset_id) REFERENCES valuesets(id)
);

CREATE TABLE IF NOT EXISTS query_included_concepts (
id TEXT PRIMARY KEY,
query_by_valueset_id TEXT,
concept_id TEXT,
include BOOLEAN,
FOREIGN KEY (query_by_valueset_id) REFERENCES query_to_valueset(id),
FOREIGN KEY (concept_id) REFERENCES concepts(id)
);

-- Create indexes for all primary and foreign keys

CREATE INDEX IF NOT EXISTS conditions_id_index ON conditions (id);

CREATE INDEX IF NOT EXISTS valuesets_id_index ON valuesets (id);

CREATE INDEX IF NOT EXISTS concepts_id_index ON concepts (id);

CREATE INDEX IF NOT EXISTS condition_to_valueset_id_index ON condition_to_valueset (id);
CREATE INDEX IF NOT EXISTS condition_to_valueset_condition_id_index ON condition_to_valueset (condition_id);
CREATE INDEX IF NOT EXISTS condition_to_valueset_valueset_id_index ON condition_to_valueset (valueset_id);

CREATE INDEX IF NOT EXISTS valueset_to_concept_id_index ON valueset_to_concept (id);
CREATE INDEX IF NOT EXISTS valueset_to_concept_valueset_id_index ON valueset_to_concept (valueset_id);
CREATE INDEX IF NOT EXISTS valueset_to_concept_concept_id_index ON valueset_to_concept (concept_id);

CREATE INDEX IF NOT EXISTS icd_crosswalk_id_index ON icd_crosswalk (id);

CREATE INDEX IF NOT EXISTS query_id_index ON query (id);

CREATE INDEX IF NOT EXISTS query_to_valueset_id_index ON query_to_valueset (id);
CREATE INDEX IF NOT EXISTS query_to_valueset_query_id_index ON query_to_valueset (query_id);
CREATE INDEX IF NOT EXISTS query_to_valueset_valueset_id_index ON query_to_valueset (valueset_id);

CREATE INDEX IF NOT EXISTS query_included_concepts_id_index ON query_included_concepts (id);
CREATE INDEX IF NOT EXISTS query_included_concepts_query_by_valueset_id_index ON query_included_concepts (query_by_valueset_id);
CREATE INDEX IF NOT EXISTS query_included_concepts_concept_id_index ON query_included_concepts (concept_id);

COMMIT;
Loading