Project

General

Profile

Edit Copy Actions

3.Defect #3667

closed

[Dashboard] รว. > ปรับความสูงกล่อง และเพิ่ม map แสดงเคสในพื้นที่ที่อยู่ผู้ป่วย และพื้นที่แพร่เชื้อ

Added by Onanong Nakmool 16 days ago. Updated 2 days ago.

Status:
Ready for Test
Priority:
High
Assignee:
Category:
-
Target version:
-
Start date:
26/03/2026
Due date:
% Done:

0%

Estimated time:

Description

  • ปรับวันที่ค้นหาแยกช่องกัน
  • ปรับความสูงกล่องให้เตี้ยลง

  • ปรับการแสดงกราฟให้ balance กับพื้นที่ในกรอบ

  • เพิ่ม map แสดงเคสในพื้นที่ที่อยู่ผู้ป่วย และพื้นที่แพร่เชื้อ โดยแสดงข้อมูลถึงแค่ระดับตำบล ใน map เดียวกัน
    filter : พื้นที่ที่อยู่ผู้ป่วย , พื้นที่แหล่งแพร่เชื้อ , ทั้งพื้นที่ที่อยู่ผู้ป่วยและแหล่งแพร่เชื้อ
    รายละเอียด map และตาราง
    -map : แสดงตำแหน่งตำบลบน interactive map พร้อม marker และ polygon
    -ตาราง : แสดงรายละเอียดผู้ป่วยและแหล่งแพร่เชื้อแยก 2 ตาราง
    ทั้งสองส่วนเชื่อมกันแบบ two-way: คลิก marker บน map → highlight แถวในตาราง / คลิกแถวในตาราง → map zoom ไปตำบลนั้น

field ในตาราง ที่อยู่ผู้ป่วย : จังหวัด อำเภอ ตำบล ปรเทศ พบเชื้อ F V M K Mix รอสอบ
field ในตาราง แหล่งแพร่เชื้อ : จังหวัด อำเภอ ตำบล ปรเทศ จำนวนเคสที่ติดเชื้อจากจุดนี้ การตัดสินชนิดเชื้อ

query : ที่อยู่ผู้ป่วย

SELECT
ct.COUNTRY_NAME_TH,
dst.SUBDISTRICT_NAME_TH,
ds.DISTRICT_NAME_TH,
pv.PROVINCE_NAME_TH,
COUNT(CASE WHEN NULLIF(NULLIF(EP1_BLOOD_TEST_RESULT_CODE,''),'01') IS NOT NULL OR NULLIF(NULLIF(EP1_RDT_RESULT_CODE,''),'01') IS NOT NULL THEN 1 END) AS num_pos,

COUNT(CASE WHEN
	NULLIF(NULLIF(EP1_RDT_RESULT_CODE,''),'01') = '02'
	OR (NULLIF(NULLIF(EP1_RDT_RESULT_CODE,''),'01') IS NULL 
		AND NULLIF(NULLIF(EP1_BLOOD_TEST_RESULT_CODE,''),'01') = '02')
THEN 1 END) AS F,

COUNT(CASE WHEN
	NULLIF(NULLIF(EP1_RDT_RESULT_CODE,''),'01') = '03'
	OR (NULLIF(NULLIF(EP1_RDT_RESULT_CODE,''),'01') IS NULL 
		AND NULLIF(NULLIF(EP1_BLOOD_TEST_RESULT_CODE,''),'01') = '05')
THEN 1 END) AS V,

COUNT(CASE WHEN
	NULLIF(NULLIF(EP1_RDT_RESULT_CODE,''),'01') IS NULL
	AND NULLIF(NULLIF(EP1_BLOOD_TEST_RESULT_CODE,''),'01') = '06'
THEN 1 END) AS M,

COUNT(CASE WHEN
	NULLIF(NULLIF(EP1_RDT_RESULT_CODE,''),'01') IS NULL
	AND NULLIF(NULLIF(EP1_BLOOD_TEST_RESULT_CODE,''),'01') = '15'
THEN 1 END) AS O,

COUNT(CASE WHEN
	NULLIF(NULLIF(EP1_RDT_RESULT_CODE,''),'01') IS NULL
	AND NULLIF(NULLIF(EP1_BLOOD_TEST_RESULT_CODE,''),'01') = '16'
THEN 1 END) AS K,

COUNT(CASE WHEN
	NULLIF(NULLIF(EP1_RDT_RESULT_CODE,''),'01') IS NULL
	AND NULLIF(NULLIF(EP1_BLOOD_TEST_RESULT_CODE,''),'01') 
		IN ('03','04','07','08','09','10','11','12','13','14','17','18')
THEN 1 END) AS Mix,

COUNT(CASE WHEN
	NULLIF(NULLIF(EP1_RDT_RESULT_CODE,''),'01') NOT IN ('02','03')
	AND NULLIF(NULLIF(EP1_RDT_RESULT_CODE,''),'01') IS NOT NULL
	OR (
		NULLIF(NULLIF(EP1_RDT_RESULT_CODE,''),'01') IS NULL
		AND NULLIF(NULLIF(EP1_BLOOD_TEST_RESULT_CODE,''),'01') NOT IN 
			('02','03','04','05','06','07','08','09','10',
			 '11','12','13','14','15','16','17','18')
		AND NULLIF(NULLIF(EP1_BLOOD_TEST_RESULT_CODE,''),'01') IS NOT NULL
	)
THEN 1 END) AS Unknow,

COUNT(CASE WHEN (
	NULLIF(NULLIF(EP1_BLOOD_TEST_RESULT_CODE,''),'01') IS NOT NULL
	OR NULLIF(NULLIF(EP1_RDT_RESULT_CODE,''),'01') IS NOT NULL
)
AND ep1.EP1_EP3_STATUS = '01'
AND ISNULL(ep1.EP1_IS_TRANSFER,'') = ''
THEN 1 END) AS wait_investigate

FROM
[TBL_EP_EP1] ep1
LEFT JOIN TBL_MS_PROVINCE pv ON pv.PROVINCE_ID = SUBSTRING(EP1.EP1_P_SITE_ID,1,2)
LEFT JOIN TBL_MS_DISTRICT ds ON ds.DISTRICT_ID = SUBSTRING(EP1.EP1_P_SITE_ID,1,4)
LEFT JOIN TBL_MS_SUBDISTRICT dst ON dst.SUBDISTRICT_ID = SUBSTRING(EP1.EP1_P_SITE_ID,1,6)
LEFT join TBL_MS_COUNTRY ct on ct.COUNTRY_ID = ep1.EP1_P_COUNTRY_ID
WHERE ((EP1_BLOOD_TEST_RESULT_CODE > '01') OR (EP1_RDT_RESULT_CODE > '01') )
AND EP1_ORG_ID = @param_org_id
AND [EP1_BLOOD_DRAW_DATE] BETWEEN @param_stdate AND @param_eddate
GROUP BY
pv.PROVINCE_NAME_TH,
ds.DISTRICT_NAME_TH,
dst.SUBDISTRICT_NAME_TH,
ct.COUNTRY_NAME_TH

ORDER BY
num_pos desc,SUBDISTRICT_NAME_TH

query : แหล่งแพร่เชื้อ

SELECT
ct.COUNTRY_NAME_TH,
dst.SUBDISTRICT_NAME_TH,
ds.DISTRICT_NAME_TH,
pv.PROVINCE_NAME_TH,
COUNT(ep3.EP1_ID) AS total_case,
cls.case_classification

FROM
[TBL_EP_EP3] ep3
INNER JOIN TBL_EP_EP1 ep1
ON ep3.EP1_ID = ep1.EP1_ID
AND ep1.EP1_EP3_STATUS = '02'
-- subquery นับและ concat แยกก่อน
INNER JOIN (
SELECT
agg.EP3_SITE_ID,
STRING_AGG(
DESCRIPTION_EN + ':' + CAST(cnt AS VARCHAR),
', '
) WITHIN GROUP (ORDER BY DESCRIPTION_EN) AS case_classification
FROM (
-- นับแยกตาม site + classification ก่อน
SELECT
substring(ep3_c.EP3_SITE_ID,1,6) as EP3_SITE_ID,
code_inner.DESCRIPTION_EN,
COUNT(*) AS cnt
FROM TBL_EP_EP3 ep3_c
INNER JOIN TBL_EP_EP1 ep1_c
ON ep3_c.EP1_ID = ep1_c.EP1_ID
AND ep1_c.EP1_EP3_STATUS = '02'
INNER JOIN TBL_MS_DEFINE_CODE code_inner
ON code_inner.MAJOR = '17'
AND code_inner.MINOR = ISNULL(ep3_c.EP3_CASE_CLASSIFICATION_NEW_PATIENT_CODE,
ep3_c.EP3_CASE_CLASSIFICATION_OLD_PATIENT_CODE)
WHERE ep3_c.EP3_TREAT_PLACE_ID_FU = @param_org_id
AND ep1_c.EP1_BLOOD_DRAW_DATE BETWEEN @param_stdate AND @param_eddate
GROUP BY
substring(ep3_c.EP3_SITE_ID,1,6),
code_inner.DESCRIPTION_EN
) agg
GROUP BY agg.EP3_SITE_ID
) cls ON substring(cls.EP3_SITE_ID,1,6) = substring(ep3.EP3_SITE_ID,1,6)
LEFT JOIN TBL_MS_PROVINCE pv
ON pv.PROVINCE_ID = SUBSTRING(cls.EP3_SITE_ID,1,2)
LEFT JOIN TBL_MS_DISTRICT ds
ON ds.DISTRICT_ID = SUBSTRING(cls.EP3_SITE_ID,1,4)
LEFT JOIN TBL_MS_SUBDISTRICT dst
ON dst.SUBDISTRICT_ID = SUBSTRING(cls.EP3_SITE_ID,1,6)
LEFT JOIN TBL_MS_COUNTRY ct
ON ct.COUNTRY_ID = ep3.EP3_COUNTRY_ID

WHERE ep3.EP3_TREAT_PLACE_ID_FU = @param_org_id
AND ep1.EP1_BLOOD_DRAW_DATE BETWEEN @param_stdate AND @param_eddate

GROUP BY
dst.SUBDISTRICT_NAME_TH,
ds.DISTRICT_NAME_TH,
pv.PROVINCE_NAME_TH,
ct.COUNTRY_NAME_TH,
cls.case_classification

ORDER BY total_case DESC;


Files


Add

Subtasks


Add

Related issues

Actions #1

Updated by Onanong Nakmool 16 days ago

  • Assignee set to Santiparp-M M
  • Priority changed from Normal to High
Actions #2

Updated by Chanannaphat Kosithirantrakul 15 days ago

  • Assignee changed from Santiparp-M M to Nuttakorn Buajarern
Actions #3

Updated by Anonymous 15 days ago

  • Assignee changed from Nuttakorn Buajarern to Santiparp-M M
Actions #4

Updated by Nuttakorn Buajarern 10 days ago

  • Assignee changed from Santiparp-M M to Nuttakorn Buajarern
Actions #5

Updated by Nuttakorn Buajarern 10 days ago

  • Assignee changed from Nuttakorn Buajarern to Santiparp-M M
Actions #6

Updated by Nuttakorn Buajarern 10 days ago

  • Status changed from New to In Progress
Actions #7

Updated by Nuttakorn Buajarern 9 days ago

  • Status changed from In Progress to Ready for Test

Updated by Onanong Nakmool 3 days ago

ขอปรับสีการ์ดเป็นประมาณนี้ค่ะ

ในส่วนของกราฟ กลุ่มอายุ และ กลุ่มอาชีพ ปรับโทนสีประมาณนี้ค่ะ

ปรับแก้ label
พื้นที่ผู้ป่วย >> พื้นที่ที่อยู่ผู้ป่วย
พื้นที่แพร่เชื้อ >> พื้นที่แหล่งแพร่เชื้อ

Updated by Santiparp-M M 2 days ago

#3667 - Enhance BarChartWithLabels to support custom color palettes and update Dashboard to use teal stats card style

Actions #10

Updated by Santiparp-M M 2 days ago

  • Status changed from Wait for Deploy to Ready for Test
Edit Copy Actions

Also available in: Atom PDF