Objective
Build an analytics system for medical imaging operations, tracking study volumes, turnaround times, quality metrics, and resource utilization.
Step 1: Create Studies Analytics Table
Store study-level metrics.
CREATE TABLE study_analytics (
id INTEGER PRIMARY KEY,
study_uid VARCHAR(100) UNIQUE,
study_date DATE NOT NULL,
study_time TIME,
modality VARCHAR(20),
body_region VARCHAR(100),
exam_code VARCHAR(50),
patient_type VARCHAR(50),
priority VARCHAR(20),
institution VARCHAR(200),
department VARCHAR(100),
referring_physician VARCHAR(200),
performing_technologist VARCHAR(200),
radiologist VARCHAR(200),
image_count INTEGER,
study_size_mb DECIMAL(10, 2),
acquisition_duration_min INTEGER,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Step 2: Create Report Metrics Table
Track reporting performance.
CREATE TABLE report_metrics (
id INTEGER PRIMARY KEY,
study_id INTEGER NOT NULL,
report_status VARCHAR(50),
dictation_start TIMESTAMP,
dictation_end TIMESTAMP,
preliminary_time TIMESTAMP,
final_time TIMESTAMP,
addendum_time TIMESTAMP,
dictation_duration_min INTEGER,
turnaround_hours DECIMAL(8, 2),
word_count INTEGER,
critical_finding BOOLEAN DEFAULT FALSE,
communication_time_min INTEGER,
FOREIGN KEY (study_id) REFERENCES study_analytics(id)
);
Step 3: Create Quality Metrics Table
Store quality indicators.
CREATE TABLE quality_metrics (
id INTEGER PRIMARY KEY,
study_id INTEGER NOT NULL,
image_quality_score DECIMAL(3, 2),
motion_artifact BOOLEAN DEFAULT FALSE,
repeat_required BOOLEAN DEFAULT FALSE,
repeat_reason VARCHAR(100),
contrast_issue BOOLEAN DEFAULT FALSE,
protocol_deviation BOOLEAN DEFAULT FALSE,
deviation_description TEXT,
peer_reviewed BOOLEAN DEFAULT FALSE,
peer_review_score DECIMAL(3, 2),
discrepancy_found BOOLEAN DEFAULT FALSE,
FOREIGN KEY (study_id) REFERENCES study_analytics(id)
);
Step 4: Create Equipment Analytics Table
Track scanner utilization.
CREATE TABLE equipment_analytics (
id INTEGER PRIMARY KEY,
equipment_id VARCHAR(50),
equipment_name VARCHAR(200),
modality VARCHAR(20),
location VARCHAR(100),
record_date DATE,
studies_performed INTEGER DEFAULT 0,
total_scan_time_min INTEGER DEFAULT 0,
uptime_hours DECIMAL(5, 2),
downtime_hours DECIMAL(5, 2),
maintenance_events INTEGER DEFAULT 0,
utilization_percent DECIMAL(5, 2)
);
Step 5: Create Radiation Dose Table
Track CT radiation exposure.
CREATE TABLE radiation_dose (
id INTEGER PRIMARY KEY,
study_id INTEGER NOT NULL,
protocol_name VARCHAR(100),
ctdi_vol DECIMAL(8, 2),
dlp DECIMAL(10, 2),
effective_dose_msv DECIMAL(8, 4),
patient_size VARCHAR(20),
dose_alert BOOLEAN DEFAULT FALSE,
dose_alert_reason VARCHAR(200),
FOREIGN KEY (study_id) REFERENCES study_analytics(id)
);
Step 6: Insert Study Analytics Data
Add sample analytics.
INSERT INTO study_analytics (id, study_uid, study_date, study_time, modality, body_region, exam_code, patient_type, priority, institution, department, referring_physician, performing_technologist, radiologist, image_count, study_size_mb, acquisition_duration_min) VALUES
(1, '1.2.840.001', '2024-01-15', '08:00:00', 'CT', 'CHEST', 'CT-CHEST-CON', 'outpatient', 'routine', 'Main Hospital', 'Radiology', 'Dr. Anderson', 'Tech. Wilson', 'Dr. Miller', 450, 285.5, 15),
(2, '1.2.840.002', '2024-01-15', '08:30:00', 'MR', 'BRAIN', 'MR-BRAIN-WO', 'outpatient', 'routine', 'Main Hospital', 'Radiology', 'Dr. Thompson', 'Tech. Brown', 'Dr. Garcia', 320, 425.0, 35),
(3, '1.2.840.003', '2024-01-15', '09:00:00', 'CT', 'ABDOMEN', 'CT-ABD-PEL', 'inpatient', 'stat', 'Main Hospital', 'ED', 'Dr. White', 'Tech. Davis', 'Dr. Miller', 520, 345.2, 12),
(4, '1.2.840.004', '2024-01-15', '09:30:00', 'XR', 'CHEST', 'XR-CHEST-2V', 'emergency', 'stat', 'Main Hospital', 'ED', 'Dr. Lee', 'Tech. Wilson', 'Dr. Chen', 2, 15.0, 5),
(5, '1.2.840.005', '2024-01-15', '10:00:00', 'US', 'ABDOMEN', 'US-ABD-COMP', 'outpatient', 'routine', 'Main Hospital', 'Radiology', 'Dr. Garcia', 'Tech. Martinez', 'Dr. Garcia', 45, 28.5, 25),
(6, '1.2.840.006', '2024-01-15', '10:30:00', 'CT', 'HEAD', 'CT-HEAD-WO', 'emergency', 'stat', 'Main Hospital', 'ED', 'Dr. White', 'Tech. Davis', 'Dr. Miller', 80, 52.0, 8),
(7, '1.2.840.007', '2024-01-15', '11:00:00', 'MR', 'SPINE', 'MR-LSPINE', 'outpatient', 'routine', 'Main Hospital', 'Radiology', 'Dr. Anderson', 'Tech. Brown', 'Dr. Garcia', 280, 380.0, 40),
(8, '1.2.840.008', '2024-01-15', '11:30:00', 'CT', 'CHEST', 'CT-CHEST-PE', 'inpatient', 'stat', 'Main Hospital', 'ICU', 'Dr. Thompson', 'Tech. Wilson', 'Dr. Miller', 380, 245.8, 10),
(9, '1.2.840.009', '2024-01-15', '12:00:00', 'XR', 'HAND', 'XR-HAND-3V', 'outpatient', 'routine', 'Main Hospital', 'Radiology', 'Dr. Lee', 'Tech. Martinez', 'Dr. Chen', 3, 8.5, 8),
(10, '1.2.840.010', '2024-01-15', '12:30:00', 'CT', 'ABDOMEN', 'CT-ABD-PEL', 'outpatient', 'routine', 'Main Hospital', 'Radiology', 'Dr. Garcia', 'Tech. Davis', 'Dr. Miller', 490, 325.0, 15);
Step 7: Insert Report Metrics
Add reporting performance data.
INSERT INTO report_metrics (id, study_id, report_status, dictation_start, dictation_end, preliminary_time, final_time, dictation_duration_min, turnaround_hours, word_count, critical_finding, communication_time_min) VALUES
(1, 1, 'final', '2024-01-15 09:00:00', '2024-01-15 09:12:00', '2024-01-15 09:15:00', '2024-01-15 11:00:00', 12, 3.0, 285, FALSE, NULL),
(2, 2, 'final', '2024-01-15 10:00:00', '2024-01-15 10:18:00', '2024-01-15 10:20:00', '2024-01-15 13:00:00', 18, 4.5, 320, FALSE, NULL),
(3, 3, 'final', '2024-01-15 09:20:00', '2024-01-15 09:28:00', '2024-01-15 09:30:00', '2024-01-15 10:00:00', 8, 1.0, 245, FALSE, NULL),
(4, 4, 'final', '2024-01-15 09:40:00', '2024-01-15 09:45:00', '2024-01-15 09:46:00', '2024-01-15 10:30:00', 5, 1.0, 125, FALSE, NULL),
(5, 5, 'final', '2024-01-15 11:00:00', '2024-01-15 11:15:00', '2024-01-15 11:18:00', '2024-01-15 14:00:00', 15, 4.0, 350, FALSE, NULL),
(6, 6, 'final', '2024-01-15 10:45:00', '2024-01-15 10:50:00', '2024-01-15 10:52:00', '2024-01-15 11:15:00', 5, 0.75, 180, TRUE, 3),
(7, 7, 'final', '2024-01-15 12:30:00', '2024-01-15 12:50:00', '2024-01-15 12:55:00', '2024-01-15 15:00:00', 20, 4.5, 425, FALSE, NULL),
(8, 8, 'final', '2024-01-15 11:45:00', '2024-01-15 11:52:00', '2024-01-15 11:55:00', '2024-01-15 12:30:00', 7, 1.0, 210, FALSE, NULL),
(9, 9, 'final', '2024-01-15 12:15:00', '2024-01-15 12:20:00', '2024-01-15 12:22:00', '2024-01-15 14:00:00', 5, 1.75, 95, FALSE, NULL),
(10, 10, 'final', '2024-01-15 13:30:00', '2024-01-15 13:45:00', '2024-01-15 13:48:00', '2024-01-15 16:00:00', 15, 3.5, 295, FALSE, NULL);