DM@HT ใน JHCIS

การหาผู้ป่วย DM และ HT ใน JHCIS
ปัญหาที่พบ คือ จากการเรียงแฟ้มระบบการลงทะเบียน ใน JHCIS ที่ไม่สามารถ ใช้Scpt รันดูข้อมูลด้วย การกำหนด chroniccode เป็น 'e%' หรือ 'i%' ได้ เพราะ จะไม่สามารถแยกได้ชัดเจนว่าผู้ป่วยคนนั้นเป็น DM แล้วเป็น HT หรือ เป็น HT แล้วเป็น DM ด้วยหรือไม่ เพราะ ระบบแฟ้ม personchronic ใน JHCIS อนุญาตให้ pid ในแฟ้มดังกล่าว ซ้ำได้  ดังนั้น วิธีแก้ปัญหาคือ ใช้ scpt ต่อไปนี้รันดูได้เลยนะค่ะ (เรียงตามลำดับนะ)

1."kita1 DM@HTทั้ง2โรค"  ตัวนี้จะได้ผู้ป่วย 1  คน ที่เป็นทั้ง DMและHT
2."kita2 DM 59อย่างเดียว" ตัวนี้จะได้ผู้ป่วย 1  คน ที่เป็นDM อย่างเดียว ไม่เป็นHT
3."kita3 HT59อย่างเดียว" ตัวนี้จะได้ผู้ป่วย 1  คน ที่เป็นHT อย่างเดียว ไม่เป็น DM จ้า

......................................................................................................................................
1."kita1 DM@HTทั้ง2โรค" ตามนี้
.............................................................
DROP TABLE IF EXISTS 59persondm;
DROP TABLE IF EXISTS 59personht;

CREATE TABLE 59persondm AS
(SELECT
pcucodeperson,pid,chroniccode,typedischart
FROM personchronic
WHERE personchronic.pid NOT IN (SELECT persondeath.pid FROM persondeath)
AND personchronic.chroniccode LIKE 'E%'
AND personchronic.typedischart IN ('03','05')
GROUP BY pid);

CREATE TABLE 59personHT AS
(SELECT
pcucodeperson,pid,chroniccode,typedischart
FROM personchronic
WHERE personchronic.pid NOT IN (SELECT persondeath.pid FROM persondeath)
AND personchronic.chroniccode LIKE 'i%'
AND personchronic.typedischart IN ('03','05')
GROUP BY pid);

SELECT
person.pcucodeperson AS สถานบริการ,
person.pid,
CONCAT(ctitle.titlename) AS `คำนำหน้า`,
person.fname AS `ชื่อ`,
person.lname AS `สกุล`,

person.idcard AS '13หลัก',
59persondm.chroniccode AS 'รหัสโรคDM',
59personht.chroniccode AS 'รหัสโรคHT',
house.hno as บ้านเลขที่,
village.villno AS หมู่
FROM
person
INNER JOIN personchronic ON person.pcucodeperson = personchronic.pcucodeperson AND person.pid = personchronic.pid
INNER JOIN ctitle ON ctitle.titlecode = person.prename
INNER JOIN house ON person.hcode = house.hcode and person.pcucodeperson=house.pcucode
INNER JOIN village ON house.villcode = village.villcode and house.pcucode = village.pcucode
LEFT JOIN 59persondm ON person.pid = 59persondm.pid
LEFT JOIN 59personht ON person.pid = 59personht.pid
WHERE 59persondm.pid = 59personht.pid
AND personchronic.typedischart IN ('03','05')
AND person.pid not IN (SELECT persondeath.pid FROM persondeath)
GROUP BY person.pid
ORDER BY village.villno,house.hno;
................................................................................................................................... 

 2."kita2 DM 59อย่างเดียว" ตามนี้
.......................................................
SELECT
person.pid,
person.pcucodeperson AS สถานบริการ,
CONCAT(ctitle.titlename) AS `คำนำหน้า`,
person.fname AS `ชื่อ`,
person.lname AS `สกุล`,

person.idcard AS '13หลัก',
personchronic.chroniccode,
personchronic.typedischart,
house.hno,
house.hno as บ้านเลขที่,
village.villno AS หมู่
FROM
person
INNER JOIN personchronic ON person.pcucodeperson = personchronic.pcucodeperson AND person.pid = personchronic.pid
INNER JOIN ctitle ON ctitle.titlecode = person.prename
INNER JOIN house ON person.hcode = house.hcode and person.pcucodeperson=house.pcucode
INNER JOIN village ON house.villcode = village.villcode and house.pcucode = village.pcucode
WHERE personchronic.typedischart IN ('03','05')
AND person.pid not IN (SELECT persondeath.pid FROM persondeath)
AND personchronic.chroniccode LIKE 'e%'
AND person.pid NOT IN (SELECT personchronic.pid FROM personchronic
INNER JOIN 59persondm ON personchronic.pid = 59persondm.pid
INNER JOIN 59personht ON personchronic.pid = 59personht.pid
WHERE 59persondm.pid = 59personht.pid)
ORDER BY village.villno,house.hno;

.....................................................................................................................................
 3."kita3 HT59อย่างเดียว" ตามนี้
.......................................................
 SELECT
person.pid,
person.pcucodeperson AS สถานบริการ,
CONCAT(ctitle.titlename) AS `คำนำหน้า`,
person.fname AS `ชื่อ`,
person.lname AS `สกุล`,

person.idcard AS '13หลัก',
personchronic.chroniccode,
personchronic.typedischart,
house.hno,
house.hno as บ้านเลขที่,
village.villno AS หมู่
FROM
person
INNER JOIN personchronic ON person.pcucodeperson = personchronic.pcucodeperson AND person.pid = personchronic.pid
INNER JOIN ctitle ON ctitle.titlecode = person.prename
INNER JOIN house ON person.hcode = house.hcode and person.pcucodeperson=house.pcucode
INNER JOIN village ON house.villcode = village.villcode and house.pcucode = village.pcucode
WHERE personchronic.typedischart IN ('03','05')
AND person.pid not IN (SELECT persondeath.pid FROM persondeath)
AND personchronic.chroniccode LIKE 'i%'
AND person.pid NOT IN (SELECT personchronic.pid FROM personchronic
INNER JOIN 59persondm ON personchronic.pid = 59persondm.pid
INNER JOIN 59personht ON personchronic.pid = 59personht.pid
WHERE 59persondm.pid = 59personht.pid)
ORDER BY village.villno,house.hno;

....................................................................................................................................
 สำหรับวิธีการรัน แนะนำให้รันเ เรียงตามลำดับเลย นะค่ะ คือชุดที่ 1,2,3 และ ไม่ต้องปิดชุดที่ 1 นะค่ะ เพราะข้อมูลเชื่อมโยงกันอยู่
และวิธีปิด scpt ก็ให้ปิด ย้อนหลังจาก จากชุดที่ 3,2,1 นะค่ะ
ข้อดี คือ จะทำให้ฐานข้อมูลท่านไม่หนักแฟ้มและขยะที่เกิดขึ้นขณะรันscpt จ้า
...................................................................................................................................


 .................................................................................................................................
 4.แต่ถ้าอยากดูผู้ป่วยกลุ่ม DMและHTทั้งหมด ที่มี ใน JHCIS ก็ตามนี้จ้า
..........................................................................
SELECT
person.pcucodeperson AS สถานบริการ,
person.pid,
CONCAT(ctitle.titlename) AS `คำนำหน้า`,
person.fname AS `ชื่อ`,
person.lname AS `สกุล`,
personchronic.chroniccode AS 'รหัสโรค',
personchronic.typedischart AS 'สถานะจำหน่าย',
house.hno as บ้านเลขที่,
village.villno AS หมู่
FROM
person
INNER JOIN personchronic ON person.pcucodeperson = personchronic.pcucodeperson AND person.pid = personchronic.pid
INNER JOIN ctitle ON ctitle.titlecode = person.prename
INNER JOIN house ON person.hcode = house.hcode and person.pcucodeperson=house.pcucode
INNER JOIN village ON house.villcode = village.villcode and house.pcucode = village.pcucode
AND person.pid not IN (SELECT persondeath.pid FROM persondeath)
AND (personchronic.chroniccode LIKE 'e%'OR personchronic.chroniccode LIKE 'I%')
WHERE personchronic.typedischart IN ('03','05')
GROUP BY personchronic.pid
ORDER BY village.villno ;

...............................................................................................................................
5..หลังปิดออกจากscpt ทั้งหมดแล้ว.....เพื่อเป็นการลดไฟล์ขยะที่ตกค้างจากการรัน แนะนำให้รัน scpt ชุดที่ 5 ดังนี้
...............................................................
DROP TABLE 59persondm,59personht;
.....................................................................................................................................พบปัญหาจากการรัน Scpt รบกวนท่านได้แจ้ง comment ด้านล่างนะค่ะ หรือ mail ที่ patharadol@gmail.com

"""""""""""""""""""""""""""""""""""""""""Good luck every  body"""""""""""""""""""""""""


 

ไม่มีความคิดเห็น:

https://www.blogs

 kllgnsgkj[jtlm'oahd bfldkb'pdojgaojp mfigjdo;sjgaij misjgo;sjagijwo;