161 lines
6.7 KiB
SQL
161 lines
6.7 KiB
SQL
-- Buat m_screening_template: master template screening klinik
|
|
CREATE TABLE IF NOT EXISTS one_klinik.m_screening_template (
|
|
M_ScreeningTemplateID INT(11) NOT NULL AUTO_INCREMENT,
|
|
M_ScreeningTemplateCode VARCHAR(30) NOT NULL DEFAULT '',
|
|
M_ScreeningTemplateName VARCHAR(100) NOT NULL DEFAULT '',
|
|
M_ScreeningTemplateDescription VARCHAR(255) NULL DEFAULT NULL,
|
|
M_ScreeningTemplateIsActive CHAR(1) NOT NULL DEFAULT 'Y',
|
|
M_ScreeningTemplateUserID INT(11) NULL DEFAULT NULL,
|
|
M_ScreeningTemplateCreated DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
M_ScreeningTemplateLastUpdated DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (M_ScreeningTemplateID),
|
|
UNIQUE KEY uk_M_ScreeningTemplateCode (M_ScreeningTemplateCode),
|
|
KEY idx_M_ScreeningTemplateIsActive (M_ScreeningTemplateIsActive)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Master template form screening klinik';
|
|
|
|
-- Buat m_screening_form: daftar pertanyaan per template
|
|
-- M_ScreeningFormOptions: JSON array pilihan jawaban, contoh: ["Ya","Tidak"]
|
|
-- M_ScreeningFormAnswerType: single=pilih satu, multi=pilih banyak, text=isian bebas
|
|
CREATE TABLE IF NOT EXISTS one_klinik.m_screening_form (
|
|
M_ScreeningFormID INT(11) NOT NULL AUTO_INCREMENT,
|
|
M_ScreeningFormM_ScreeningTemplateID INT(11) NOT NULL,
|
|
M_ScreeningFormQuestion TEXT NOT NULL,
|
|
M_ScreeningFormAnswerType ENUM('single','multi','text') NOT NULL DEFAULT 'single',
|
|
M_ScreeningFormOptions TEXT NULL DEFAULT NULL,
|
|
M_ScreeningFormSortOrder TINYINT(3) UNSIGNED NOT NULL DEFAULT 0,
|
|
M_ScreeningFormIsRequired CHAR(1) NOT NULL DEFAULT 'Y',
|
|
M_ScreeningFormIsActive CHAR(1) NOT NULL DEFAULT 'Y',
|
|
M_ScreeningFormUserID INT(11) NULL DEFAULT NULL,
|
|
M_ScreeningFormCreated DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
M_ScreeningFormLastUpdated DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (M_ScreeningFormID),
|
|
KEY idx_M_ScreeningFormTemplateID (M_ScreeningFormM_ScreeningTemplateID),
|
|
KEY idx_M_ScreeningFormIsActive (M_ScreeningFormIsActive),
|
|
CONSTRAINT fk_sf_template
|
|
FOREIGN KEY (M_ScreeningFormM_ScreeningTemplateID)
|
|
REFERENCES m_screening_template (M_ScreeningTemplateID)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Pertanyaan form screening per template';
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
-- Data master template
|
|
-- ---------------------------------------------------------------------------
|
|
INSERT INTO one_klinik.m_screening_template
|
|
(M_ScreeningTemplateCode, M_ScreeningTemplateName, M_ScreeningTemplateDescription, M_ScreeningTemplateIsActive)
|
|
VALUES
|
|
('VAKSINASI', 'Screening Vaksinasi',
|
|
'Form screening pra-vaksinasi untuk menilai kelayakan pemberian vaksin', 'Y'),
|
|
('KHITAN', 'Screening Khitan',
|
|
'Form screening pra-tindakan khitan untuk menilai kelayakan pasien', 'Y');
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
-- Pertanyaan template VAKSINASI
|
|
-- ---------------------------------------------------------------------------
|
|
SET @vaksin_id = (
|
|
SELECT M_ScreeningTemplateID
|
|
FROM one_klinik.m_screening_template
|
|
WHERE M_ScreeningTemplateCode = 'VAKSINASI'
|
|
);
|
|
|
|
INSERT INTO one_klinik.m_screening_form
|
|
(M_ScreeningFormM_ScreeningTemplateID, M_ScreeningFormQuestion,
|
|
M_ScreeningFormAnswerType, M_ScreeningFormOptions,
|
|
M_ScreeningFormSortOrder, M_ScreeningFormIsRequired)
|
|
VALUES
|
|
(@vaksin_id,
|
|
'Apakah saat ini sedang demam (suhu ≥ 38°C)?',
|
|
'single', '["Ya","Tidak"]', 1, 'Y'),
|
|
|
|
(@vaksin_id,
|
|
'Apakah sedang dalam kondisi sakit akut?',
|
|
'single', '["Ya","Tidak"]', 2, 'Y'),
|
|
|
|
(@vaksin_id,
|
|
'Apakah memiliki riwayat anafilaksis atau reaksi alergi berat?',
|
|
'single', '["Ya","Tidak","Tidak Tahu"]', 3, 'Y'),
|
|
|
|
(@vaksin_id,
|
|
'Apakah pernah mengalami reaksi alergi terhadap vaksin sebelumnya?',
|
|
'single', '["Ya","Tidak","Belum Pernah Divaksin"]', 4, 'Y'),
|
|
|
|
(@vaksin_id,
|
|
'Apakah sedang mengonsumsi obat imunosupresan atau menjalani kemoterapi?',
|
|
'single', '["Ya","Tidak"]', 5, 'Y'),
|
|
|
|
(@vaksin_id,
|
|
'Apakah sedang hamil atau menyusui?',
|
|
'single', '["Ya","Tidak","Tidak Berlaku"]', 6, 'Y'),
|
|
|
|
(@vaksin_id,
|
|
'Apakah memiliki riwayat penyakit kronis yang relevan? (sebutkan jika ada)',
|
|
'text', NULL, 7, 'N'),
|
|
|
|
(@vaksin_id,
|
|
'Kesimpulan: kelayakan pemberian vaksin',
|
|
'single', '["Layak","Tidak Layak","Tunda"]', 8, 'Y'),
|
|
|
|
(@vaksin_id,
|
|
'Catatan petugas screening',
|
|
'text', NULL, 9, 'N');
|
|
|
|
-- ---------------------------------------------------------------------------
|
|
-- Pertanyaan template KHITAN
|
|
-- ---------------------------------------------------------------------------
|
|
SET @khitan_id = (
|
|
SELECT M_ScreeningTemplateID
|
|
FROM one_klinik.m_screening_template
|
|
WHERE M_ScreeningTemplateCode = 'KHITAN'
|
|
);
|
|
|
|
INSERT INTO one_klinik.m_screening_form
|
|
(M_ScreeningFormM_ScreeningTemplateID, M_ScreeningFormQuestion,
|
|
M_ScreeningFormAnswerType, M_ScreeningFormOptions,
|
|
M_ScreeningFormSortOrder, M_ScreeningFormIsRequired)
|
|
VALUES
|
|
(@khitan_id,
|
|
'Apakah ada riwayat gangguan pembekuan darah atau hemofilia?',
|
|
'single', '["Ya","Tidak","Tidak Tahu"]', 1, 'Y'),
|
|
|
|
(@khitan_id,
|
|
'Apakah ada riwayat alergi terhadap obat anestesi lokal (lidokain, prokain, dll)?',
|
|
'single', '["Ya","Tidak","Tidak Tahu"]', 2, 'Y'),
|
|
|
|
(@khitan_id,
|
|
'Apakah menderita atau dicurigai Diabetes Mellitus?',
|
|
'single', '["Ya","Tidak","Dicurigai"]', 3, 'Y'),
|
|
|
|
(@khitan_id,
|
|
'Apakah saat ini sedang sakit akut atau demam (suhu ≥ 38°C)?',
|
|
'single', '["Ya","Tidak"]', 4, 'Y'),
|
|
|
|
(@khitan_id,
|
|
'Apakah sedang dalam pengobatan antikoagulan (pengencer darah)?',
|
|
'single', '["Ya","Tidak"]', 5, 'Y'),
|
|
|
|
(@khitan_id,
|
|
'Apakah ada kelainan anatomi pada area genitalia?',
|
|
'single', '["Ya","Tidak"]', 6, 'Y'),
|
|
|
|
(@khitan_id,
|
|
'Apakah pasien kooperatif untuk menjalani tindakan?',
|
|
'single', '["Kooperatif","Cukup Kooperatif","Tidak Kooperatif"]', 7, 'Y'),
|
|
|
|
(@khitan_id,
|
|
'Berat badan pasien (kg)',
|
|
'text', NULL, 8, 'Y'),
|
|
|
|
(@khitan_id,
|
|
'Tinggi badan pasien (cm)',
|
|
'text', NULL, 9, 'Y'),
|
|
|
|
(@khitan_id,
|
|
'Apakah ada riwayat tindakan bedah sebelumnya pada area genitalia?',
|
|
'single', '["Ya","Tidak"]', 10, 'N'),
|
|
|
|
(@khitan_id,
|
|
'Kesimpulan: kelayakan tindakan khitan',
|
|
'single', '["Layak","Tidak Layak","Tunda"]', 11, 'Y'),
|
|
|
|
(@khitan_id,
|
|
'Catatan petugas screening',
|
|
'text', NULL, 12, 'N');
|