DROP TABLE IF EXISTS dim_factories;
CREATE TABLE dim_factories (
	factory_sk INTEGER identity(1,1) PRIMARY KEY,
	factory_bk NVARCHAR(100) NOT NULL,
	factory_name NVARCHAR(250),
	factory_country NVARCHAR(250)
);
GO

DROP TABLE IF EXISTS dim_time;
CREATE TABLE dim_time (
	time_sk INTEGER identity(1,1) PRIMARY KEY,
	time_bk DATE NOT NULL,
	time_string NCHAR(10) NOT NULL,
	year INTEGER,
	month INTEGER,
	day INTEGER,
	quarter INTEGER
);
GO

DROP TABLE IF EXISTS dim_drugs;
CREATE TABLE dim_drugs (
	drug_sk INTEGER identity(1, 1) PRIMARY KEY,
	DrugProductId INTEGER NOT NULL, -- business key
	RecordStatus CHAR(1), -- A for active, D for deactivated
	DrugProductName NVARCHAR(250),
	RONumber NVARCHAR(20),
	DrugProductFamilyId INTEGER,
	DrugProductFamilyName NVARCHAR(250)
);
GO

DROP TABLE IF EXISTS dim_countries;
CREATE TABLE dim_countries (
	country_sk INTEGER identity(1, 1) PRIMARY KEY,
	country_code NVARCHAR(2), -- business key
	country_name NVARCHAR(250)
);

DROP TABLE IF EXISTS dim_claim_statuses;
CREATE TABLE dim_claim_statuses (
	status_sk INTEGER identity(1, 1) PRIMARY KEY,
	status_code VARCHAR(1) NOT NULL, -- A for Accepted, D for Declined, W for Waiting
	status_description NVARCHAR(50)
);
GO

-- insert statuses
INSERT INTO dim_claim_statuses(status_code, status_description)
VALUES 
	('A', 'Accepted'),
	('D', 'Declined'),
	('W', 'Waiting');
GO

DROP TABLE IF EXISTS dim_indications;
CREATE TABLE dim_indications (
	indication_sk INTEGER identity(1, 1) PRIMARY KEY,
	IndicationId INTEGER NOT NULL,
	RecordStatus CHAR(1),
	IndicationDescription NVARCHAR(500)
);
GO

--TABELE FAKTÓW
--to by było do SQL Server'a < 2016
--IF OBJECT_ID('dbo.FT1_Registartion') IS NOT NULL DROP TABLE dbo.MyCategories;


DROP TABLE IF EXISTS FT1_Registartion;
CREATE TABLE FT1_Registartion (
	id INTEGER identity(1,1) PRIMARY KEY,
	expected_response integer,
	submission_date integer,
	response_time integer, 
	drug_sk integer,
	factory_sk_API integer,
	factory_sk_bulk integer,
	factory_sk_package integer,
	country_sk integer, 
	--claim status do uspójnienia z tabelą dim_status, wydaje mi się, że można by dodać przedrostek claim do kolumn, będzie czytelniej :) 
	claim_status_sk integer, 
	indication_sk integer,
	claim_number integer, 
	-- cnt jest tylko zliczeniowy, będzie miał 1, więc dałbym tinyint
	cnt tinyint
);
GO

DROP TABLE IF EXISTS FT2_Refund;
CREATE TABLE FT2_Registartion (
	id INTEGER identity(1,1) PRIMARY KEY,
	claim_status_sk integer,
	drug_sk integer,
	submission_date integer,
	expected_response integer,
	country_sk integer, 
	indication_sk integer, 
	registration_country integer, 
	--decimal zjada mniej, niż money, do przedyskutowania (precyzja - liczba miejsc przed i po przecinku, skala - liczba miejsc po przecinku)
	price decimal(9,2),
	reimbursement_amountPercent smallint, 
	--tu obliczymy jako iloczyn price * reimbursement_amountPercent
	reimbursement_amount decimal(9,2),
	
);
GO