z230
This commit is contained in:
@@ -0,0 +1,139 @@
|
||||
import mysql.connector
|
||||
import db_config
|
||||
|
||||
conn = mysql.connector.connect(
|
||||
host=db_config.DB_HOST, port=db_config.DB_PORT,
|
||||
user=db_config.DB_USER, password=db_config.DB_PASSWORD,
|
||||
database=db_config.DB_NAME
|
||||
)
|
||||
c = conn.cursor()
|
||||
|
||||
# Přidat report_type do iwrs_import (pokud ještě neexistuje)
|
||||
try:
|
||||
c.execute("""ALTER TABLE iwrs_import
|
||||
ADD COLUMN report_type VARCHAR(20) NOT NULL DEFAULT 'patients'
|
||||
AFTER source_file""")
|
||||
print("ALTER TABLE iwrs_import OK — report_type přidán")
|
||||
except mysql.connector.errors.DatabaseError as e:
|
||||
if "Duplicate column" in str(e):
|
||||
print("report_type již existuje — přeskočeno")
|
||||
else:
|
||||
raise
|
||||
|
||||
stmts = [
|
||||
(
|
||||
"iwrs_shipments",
|
||||
"""CREATE TABLE IF NOT EXISTS iwrs_shipments (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
import_id INT NOT NULL,
|
||||
study VARCHAR(20) NOT NULL,
|
||||
shipment_id VARCHAR(20) NOT NULL,
|
||||
status VARCHAR(50),
|
||||
type VARCHAR(30),
|
||||
ship_from VARCHAR(50),
|
||||
ship_to_site VARCHAR(50),
|
||||
location VARCHAR(50),
|
||||
request_date DATE,
|
||||
shipped_date DATE,
|
||||
received_date DATE,
|
||||
received_by VARCHAR(100),
|
||||
delivered_date_utc DATE,
|
||||
delivery_recipient VARCHAR(100),
|
||||
delivery_details VARCHAR(200),
|
||||
cancelled_date DATE,
|
||||
total_medication_ids SMALLINT,
|
||||
tracking_no VARCHAR(100),
|
||||
shipping_category VARCHAR(50),
|
||||
expected_arrival DATE,
|
||||
FOREIGN KEY (import_id) REFERENCES iwrs_import(import_id),
|
||||
INDEX idx_import (import_id),
|
||||
INDEX idx_study_shipment (study, shipment_id)
|
||||
)"""
|
||||
),
|
||||
(
|
||||
"iwrs_shipment_items",
|
||||
"""CREATE TABLE IF NOT EXISTS iwrs_shipment_items (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
import_id INT NOT NULL,
|
||||
study VARCHAR(20) NOT NULL,
|
||||
shipment_id VARCHAR(20) NOT NULL,
|
||||
destination_location VARCHAR(50),
|
||||
shipment_status VARCHAR(50),
|
||||
shipment_type VARCHAR(30),
|
||||
destination_site VARCHAR(50),
|
||||
investigator VARCHAR(100),
|
||||
medication_description VARCHAR(200),
|
||||
medication_type VARCHAR(50),
|
||||
medication_id VARCHAR(20),
|
||||
packaged_lot_no VARCHAR(50),
|
||||
packaged_lot_description VARCHAR(100),
|
||||
container_id VARCHAR(50),
|
||||
quantity SMALLINT,
|
||||
expiration_date DATE,
|
||||
item_status VARCHAR(50),
|
||||
FOREIGN KEY (import_id) REFERENCES iwrs_import(import_id),
|
||||
INDEX idx_import (import_id),
|
||||
INDEX idx_med_id (medication_id)
|
||||
)"""
|
||||
),
|
||||
(
|
||||
"iwrs_inventory",
|
||||
"""CREATE TABLE IF NOT EXISTS iwrs_inventory (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
import_id INT NOT NULL,
|
||||
study VARCHAR(20) NOT NULL,
|
||||
site VARCHAR(50),
|
||||
investigator VARCHAR(100),
|
||||
location VARCHAR(50),
|
||||
medication_id VARCHAR(20),
|
||||
packaged_lot_no VARCHAR(50),
|
||||
original_expiration_date DATE,
|
||||
expiration_date DATE,
|
||||
received_date DATE,
|
||||
receipt_user VARCHAR(100),
|
||||
subject_identifier VARCHAR(20),
|
||||
quantity_assigned SMALLINT,
|
||||
irt_transaction VARCHAR(100),
|
||||
date_assigned DATE,
|
||||
assignment_user VARCHAR(100),
|
||||
dispensation_status VARCHAR(50),
|
||||
dispensing_date DATE,
|
||||
quantity_dispensed SMALLINT,
|
||||
dispensing_user VARCHAR(100),
|
||||
quantity_returned SMALLINT,
|
||||
date_returned DATE,
|
||||
return_user VARCHAR(100),
|
||||
FOREIGN KEY (import_id) REFERENCES iwrs_import(import_id),
|
||||
INDEX idx_import (import_id),
|
||||
INDEX idx_site (study, site)
|
||||
)"""
|
||||
),
|
||||
(
|
||||
"iwrs_destruction",
|
||||
"""CREATE TABLE IF NOT EXISTS iwrs_destruction (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
study VARCHAR(20) NOT NULL,
|
||||
site_id VARCHAR(50),
|
||||
investigator VARCHAR(100),
|
||||
location VARCHAR(50),
|
||||
basket_id VARCHAR(20) NOT NULL,
|
||||
destruction_date DATE,
|
||||
medication_description VARCHAR(200),
|
||||
medication_id VARCHAR(20),
|
||||
packaged_lot_description VARCHAR(100),
|
||||
comments VARCHAR(500),
|
||||
imported_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY uq_destruction (study, basket_id, medication_id),
|
||||
INDEX idx_study_basket (study, basket_id)
|
||||
)"""
|
||||
),
|
||||
]
|
||||
|
||||
for name, sql in stmts:
|
||||
c.execute(sql)
|
||||
print(f"OK: {name}")
|
||||
|
||||
conn.commit()
|
||||
c.close()
|
||||
conn.close()
|
||||
print("\nVšechny tabulky připraveny.")
|
||||
Reference in New Issue
Block a user