-- 1. สร้างตารางตัวอย่างสำหรับผลการทดสอบ
-- หากมีตารางอยู่แล้ว สามารถข้ามส่วนนี้ได้
CREATE TABLE LabTestResults (
    ResultID INT PRIMARY KEY IDENTITY(1,1),
    PatientID INT NOT NULL,
    TestName VARCHAR(100) NOT NULL,
    RawResultValue DECIMAL(10, 2) NOT NULL, -- สมมติว่าเป็นค่าตัวเลขที่ได้จากการทดสอบ
    TestDateTime DATETIME DEFAULT GETDATE()
);

-- 2. เพิ่มข้อมูลตัวอย่างลงในตาราง
INSERT INTO LabTestResults (PatientID, TestName, RawResultValue) VALUES
(101, 'COVID-19 Antigen', 0.15), -- Negative
(102, 'COVID-19 Antigen', 2.50), -- Positive
(103, 'Dengue NS1', 0.85),     -- Indeterminate
(104, 'HIV Antibody', 0.05),   -- Negative
(105, 'HIV Antibody', 1.90),   -- Positive
(106, 'Malaria Pf/Pv', -0.01), -- Invalid (สมมติว่าค่าติดลบคือ Invalid)
(107, 'COVID-19 Antigen', 0.70); -- Indeterminate

-- 3. Query เพื่อแสดงผลและตีความผลลัพธ์โดยใช้ CASE Expression
SELECT
    ResultID,
    PatientID,
    TestName,
    RawResultValue,
    CASE
        WHEN TestName = 'COVID-19 Antigen' THEN
            CASE
                WHEN RawResultValue >= 1.00 THEN 'Positive'
                WHEN RawResultValue BETWEEN 0.50 AND 0.99 THEN 'Indeterminate'
                WHEN RawResultValue >= 0.00 AND RawResultValue < 0.50 THEN 'Negative'
                ELSE 'Invalid' -- ค่าที่ไม่เข้าเงื่อนไขใดๆ
            END
        WHEN TestName = 'Dengue NS1' THEN
            CASE
                WHEN RawResultValue >= 1.50 THEN 'Positive'
                WHEN RawResultValue BETWEEN 0.75 AND 1.49 THEN 'Indeterminate'
                WHEN RawResultValue >= 0.00 AND RawResultValue < 0.75 THEN 'Negative'
                ELSE 'Invalid'
            END
        WHEN TestName = 'HIV Antibody' THEN
            CASE
                WHEN RawResultValue >= 1.20 THEN 'Positive'
                WHEN RawResultValue >= 0.00 AND RawResultValue < 1.20 THEN 'Negative'
                ELSE 'Invalid'
            END
        -- คุณสามารถเพิ่มเงื่อนไขสำหรับ TestName อื่นๆ ได้ที่นี่
        ELSE 'Unknown Test' -- สำหรับ TestName ที่ไม่ได้ระบุเงื่อนไข
    END AS InterpretedResult,
    TestDateTime
FROM
    LabTestResults;

-- 4. (ตัวเลือก) หากคุณต้องการบันทึกผลการตีความนี้ลงในคอลัมน์ใหม่ในตาราง
-- คุณสามารถเพิ่มคอลัมน์ใหม่ในตาราง LabTestResults
-- ALTER TABLE LabTestResults ADD InterpretedResult VARCHAR(50);

-- จากนั้นใช้ UPDATE statement เพื่ออัปเดตข้อมูล
/*
UPDATE LabTestResults
SET InterpretedResult = CASE
    WHEN TestName = 'COVID-19 Antigen' THEN
        CASE
            WHEN RawResultValue >= 1.00 THEN 'Positive'
            WHEN RawResultValue BETWEEN 0.50 AND 0.99 THEN 'Indeterminate'
            WHEN RawResultValue >= 0.00 AND RawResultValue < 0.50 THEN 'Negative'
            ELSE 'Invalid'
        END
    WHEN TestName = 'Dengue NS1' THEN
        CASE
            WHEN RawResultValue >= 1.50 THEN 'Positive'
            WHEN RawResultValue BETWEEN 0.75 AND 1.49 THEN 'Indeterminate'
            WHEN RawResultValue >= 0.00 AND RawResultValue < 0.75 THEN 'Negative'
            ELSE 'Invalid'
        END
    WHEN TestName = 'HIV Antibody' THEN
        CASE
            WHEN RawResultValue >= 1.20 THEN 'Positive'
            WHEN RawResultValue >= 0.00 AND RawResultValue < 1.20 THEN 'Negative'
            ELSE 'Invalid'
        END
    ELSE 'Unknown Test'
END;
*/

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: