Showing posts with label Report HOSxP. Show all posts
Showing posts with label Report HOSxP. Show all posts

Thursday, May 1, 2014

ทดสอบคำสั่ง update table แบบ Multi row record ใน MySql

ยกตัวอย่าง ผมต้องการเอาข้อมูล HN จากตารางที่ 2 มาใส่ในตารางที่ 1 โดยผมเชื่อมด้วย vn
ตอนแรกผมเชื่อมกับตาราง vn_stat โดยตรงซึ่งข้อมูล ใหญ่มาก     ผมเลยสร้างตารางขึ้นมาใหม่ l_clinic_hn ซึ่งเก็บข้อมูล vn and hn ไว้

[SQL] UPDATE clinicmember_cormobidity_screen t1 ,(SELECT * from l_clinic_hn) as t2
SET t1.hn=t2.hn
WHERE t1.vn = t2.vn

Affected rows: 214
Time: 3.777ms

OK  ผ่านครับ
เรียนรู้มาจากเว็บนี้ครับ http://www.ict.buu.ac.th/Blog/Lists/Posts/Post.aspx?ID=1009

Monday, June 24, 2013

CUSTOM- รายงานจำนวนผู้ป่วยที่มารับการรักษาที่ห้องฉุกเฉินแล้ว Admit – By keepper/ตั๊ก ER

ด้วยงานฉุกเฉิน รพ.จักราช ต้องการทราบว่า ผู้ป่วยที่มารับบริการห้องฉุกเฉิน แล้วได้รับการ Admit เข้าไปเป็นผู้ป่วยในจำนวนเท่าไร  โดยแบ่งตามรายงาน และระดับความรุนแรง  

ได้ SQL หลัก  ดังนี้ 


GetDateRangeDialog(d1, d2);
       ds1 :=  FormatThaiDate('YYYY-MM-DD', d1);
       ds2 :=  FormatThaiDate('YYYY-MM-DD', d2);
    ChangeReportSQL('select y.`name`,COUNT(v.hn) as cc,e.er_pt_type from er_regist   e '+
                      'left outer join ovst v on v.vn= e.vn    '+
                      'LEFT OUTER JOIN  er_pt_type y on y.er_pt_type=e.er_pt_type   '+
                      'where e.vstdate BETWEEN "'+ds1+'" and "'+ds2+'"   and v.an <> ""  '+
                      'GROUP BY y.`name`     '+
                      'ORDER BY y.`name`');

รูปแบบรายงาน บันทัดรวม เขียนใน Summary

ดาวโหลด รายงาน  >>> ดาวโหลด <<<
#keepper

Wednesday, June 12, 2013

รายงานตามคำขอ ผู้มารับบริการที่ ER คลินิค COPD และ Asthma /พี่อ็อด


ตัวอย่างรายงานผู้มารับบริการที่ ER คลินิค COPD และ Asthma /พี่อ็อด
SQL Code

begin

      GetDateRangeDialog(d1, d2);
       ds1 :=  FormatThaiDate('YYYY-MM-DD', d1);
       ds2 :=  FormatThaiDate('YYYY-MM-DD', d2);
    ChangeReportSQL('select e.vstdate,e.enter_er_time,e.vn,o.hn,CONCAT(p.pname,p.fname,"  ",p.lname) as ptname,o.icd10,i.`name` as ICD,d.`name`,t.name as erd from er_regist e    '+
                      'left outer join ovstdiag o on o.vn=e.vn   '+
                      'LEFT OUTER JOIN doctor d on d.`code`=e.er_doctor '+
                      'LEFT OUTER JOIN patient p on p.hn=o.hn  '+
                      'LEFT OUTER JOIN icd101 i on i.`code`=o.icd10   '+
                      'LEFT OUTER JOIN er_dch_type t on t.er_dch_type=e.er_dch_type   '+
                      'where e.vstdate between "'+ds1+'" and "'+ds2+'" and i.`name` LIKE "%chronic obstructive pulmonary disease%"   '+
                      'GROUP BY e.vn');


end;
ตารางหลัก er_regist  เก็บข้อมูลคนไข้ที่มาลงทะเบียนรับบริการที่ ห้องฉุกเฉิน
ตารางอื่นๆ ovstdiag  เชื่อมเพื่อดึง ข้อมูลการวินิจฉัย
doctor  ชื่อแพทย์
 patient ข้อมูลผู้รับบริการ
icd101 ข้อมูลชื่อโรค
er_dch_type  สถานะการจำหน่าย

เงื่อนไข
กำหนดเงื่อนไข ช่วงเวลาที่มารับบริการ และชื่อโรค

จบ 
@keepper

ดาวโหลดตัวอย่างรายงาน  >>> คลิก <<<
QR

Tuesday, May 7, 2013

SQL ดึงรายชื่อ Clinic HT ที่มีค่าความดันมากกว่า 140/90 mmHg /พี่แจ๋ว OPD

คำสัง SQL  ดึงรายชื่อผู้ป่วยในคลินิค HT ที่มีค่าความดัน มากกว่า หรือเท่ากับ 140/90 mmHg 
ดังนี้

SELECT o.vstdate,o.hn,p.cid,CONCAT(p.pname,p.fname,"  ",p.lname) as ptname,p.informaddr,v.age_y,bps,bpd 
from opdscreen o
LEFT OUTER JOIN patient p on p.hn=o.hn
LEFT OUTER JOIN vn_stat v on v.vn=o.vn
WHERE o.vstdate BETWEEN "2013-04-01" and "2013-04-30" and (o.bps > "139" or o.bpd > "89")
and o.hn in (SELECT hn from clinicmember WHERE clinic = "003")

จากฐานข้อมูล HOSxP
เชื่อมตาราง
1.patient ดึงค่าขอมูลผู้มารับบริการ  เชื่อมด้วย HN
2. vn_stat  ดึงค่าอายุวันที่มารับบริการ  เชื่อมด้วย VN
เงื่อนไข
1. วันที่มารับบริการเดือนเมษายน 2556
2. เป็นผู้ป่วยที่อยู่ในคลินิค ความดัน 003
3. ค่าความดันมากกว่า หรือเท่ากับ 140/90 

@keepper


Sunday, March 3, 2013

รายงานทะเบียนคัดกรองถ่ายภาพจอประสาทตา/2556

     เช้านี้หลังตรวจ Lab ประจำปีคลินิค DM พี่ไก่สุมาลี ก็มานั่งคุยเรื่องการดึงรายงายผลตรวจคัดกรองถ่ายภาพจอประสาทตา ผู้ป่วยเบาหวาน เมื่อ มกราคม 2556
     เขียนรายงาน ดึงข้อมูล 2 สถานะคือ ติดตามการรรักษาและส่งต่อไปรับยาที่ รพ.สต.



คำสั่ง SQL เบื้องต้น (ทะเบียนคนไข้ทั้งหมด)

SELECT CONCAT(a.pname,a.fname,"  ",a.lname) as ptname,a.hn,a.cid,p.age_y,a.tmbpart,a.moopart,a.informaddr,
s.clinic_member_status_name
from clinicmember c
LEFT OUTER JOIN person p on c.hn=p.patient_hn
LEFT OUTER JOIN patient a on a.hn=c.hn  
LEFT OUTER JOIN village v on v.village_id=p.village_id
LEFT OUTER JOIN clinic_member_status s on s.clinic_member_status_id=c.clinic_member_status_id
WHERE c.clinic = "001"  and c.clinic_member_status_id in ("1","2")
GROUP BY a.hn ORDER BY a.hn



SQL ในส่วนข้อมูลผลถ่ายภาพจอประสาทตา Variable

SELECT b.dmht_eye_screen_blindness_name,c.dmht_eye_screen_cataract_name,l.dmht_eye_screen_laser_name,m.dmht_eye_screen_macular_name,s.hn,e.dmht_eye_screen_blindness_id,e.dmht_eye_screen_cataract_id,e.dmht_eye_screen_laser_id,e.dmht_eye_screen_macular_id
FROM clinicmember_cormobidity_eye_screen e
LEFT OUTER JOIN clinicmember_cormobidity_screen s on s.clinicmember_cormobidity_screen_id=e.clinicmember_cormobidity_screen_id
LEFT OUTER JOIN dmht_eye_screen_cataract  c on c.dmht_eye_screen_cataract_id=e.dmht_eye_screen_cataract_id
LEFT OUTER JOIN dmht_eye_screen_blindness b on b.dmht_eye_screen_blindness_id=e.dmht_eye_screen_blindness_id
LEFT OUTER JOIN dmht_eye_screen_laser l on l.dmht_eye_screen_laser_id=e.dmht_eye_screen_laser_id
LEFT OUTER JOIN dmht_eye_screen_macular m on  m.dmht_eye_screen_macular_id=e.dmht_eye_screen_macular_id
WHERE s.screen_date BETWEEN "2012-10-01" and "2013-03-31"

เงื่อนไข  ใช้ Variable  ดึงผลถ่ายภาพจอประสาทตา  หากผู้ป่วยคนไหนไม่มีผลก็จะเป็นค่าว่าง แล้วนำค่าว่างได้นัดคนไข้ เพื่อทำการเก็บตก การถ่ายภาพจอประสาทตา ต่อไป..
#keepper

Thursday, February 14, 2013

TB 01 Card /น้องแอน

     จากงานคลินิคพิเศษ TB ได้ประสานให้คำแนะนำเรื่อง Smart TB
เรื่องที่คิดต่อยอดจากการบันทึกข้อมูลทะเบียน TB clinic  ว่าข้อมูลสามารถที่บันทึกสามารถที่พิมพ์ออกมาเพื่อเป็นทะเบียน และส่งต่อไพล์ ให้กับรพ.สต.

     Tuberculosis Treatment Card   TB01
ข้อมูลทั่วไป
HN
CID
ชื่อ - สกุล
Tel
อาชีพ
เพศ
วันเกิด
อายุ

คำสั่งตามคำขอ จำนวนผู้รับบริการที่กระดูกหักแล้ว Refer /พี่นิ่งER


14 ก.พ. 2556 วันนี้ได้รับโทรศัพท์สอบถามจำนวนผู้รับบริการที่กระดูกหัก แล้วได้ทำการ Refer ต่อ ขอข้อมูลทั้ง IPD และ OPD  เป็นเวลาเดียวกันที่ผมกำลังจะออกเยี่ยมบ้านตอนบ่าย จึงไม่ได้เขียนคำสั่งให้ T____T 

มาเริ่มกันเลยหลังกลับมาจากเยี่ยมบ้าน และความคุมโรค มือ เท้า ปาก  ก็เหนื่อยเหมือนกัน งานหลายหน้าแต่ก็จะทำให้ดีที่สุด

คำแนะนำที่ได้ให้พี่นิ่งไปคือ
1. รายงานถูกเก็บไว้ที่ทะเบียน Refer ที่กรอกๆกันแหละครับ
2. จะต้องรู้ว่า ICD10 อะไรบ้างที่เกี่ยวกับกระดูกหัก  ผมเองก็ไม่รู้ 555+ แน่นำไป เพราะเจ้าเอ เวชสถิติ ไม่อยู่อันนี้เลยยากเลย  เพราะผมต้องพึ่งเป็นประจำ

ลงเมื่อเขียนคำสั่ง SQL กัน


SELECT r.department,COUNT(r.hn) total FROM referout r
LEFT OUTER JOIN icd101 i on i.`code`=r.pdx
WHERE i.`name` like "%Fracture%"
and r.refer_date BETWEEN "2012-01-01" and "2012-12-31"
GROUP BY r.department

เสร็จแล้วสั้นไปไหม 555+
มาอธิบายคำสั่งกัน
ตารางที่เกี่ยงข้อง
1. referout
2. icd101

เงื่อนไข
1. เมื่อไม่รู้ว่า ICD10 มีอะไรบ้างผมเลยใช้เงื่อนไข ที่ว่า ถ้ามีคำว่า Fracture ให้ดึงข้อมูลมา 480 กว่ารหัสโน้น เบ้ย มากจริง  i.`name` like "%Fracture%"
2. ก็ใส่เงื่อนไข่วันที่ตาม ต้องการ r.refer_date BETWEEN "2012-01-01" and "2012-12-31"
3. รวมจุดที่ทำการ refer GROUP BY r.department

จบ ไม่มีอะไรที่ดึงไม่ได้ถ้าเรา Key ลงไป  ^____^ แอบเทพนิดๆ กับคำพูด
#keepper


Monday, February 11, 2013

Tip รายการนัดผู้ป่วยในคลินิค DM & HT

แบบร่างข้อมูลคร่าวก่อนลงมือปฏิบัติจริง  

เมื่อเราได้แบบร่างข้อมูลในหัวแล้ว
อันดับแรกเลือกตารางที่จำเป็นต้องใช้  ผมเลือก vn_stat  เพราะมันเก็บข้อมูลการมารับบริการ  patient เพราะจะดึงรายชื่อผู้รับบริการ clinicmember เพื่อใส่เงื่อนไขในการดึงข้อมูล

คำสัง SQL Clinic HT "003"
SELECT CONCAT(p.pname,p.fname,"  ",p.lname) as ptname,v.vstdate,v.hn,v.pdx,c.clinic from vn_stat v
LEFT OUTER JOIN clinicmember c on c.hn=v.hn
LEFT OUTER JOIN patient p on p.hn=v.hn
LEFT OUTER JOIN person pp on pp.patient_hn=v.hn
WHERE v.vstdate BETWEEN "2013-02-01" and "2013-02-11" and c.clinic in ("003") and v.hn not in (SELECT hn FROM clinicmember WHERE clinic = "001") and pp.village_id <> "1" and c.clinic_member_status_id in ("1","2")
GROUP BY v.hn
ORDER BY v.vstdate

อธิบายเงื่อนไข
 - เลือกผู้ป่วยในช่วงวันที่   v.vstdate BETWEEN "2013-02-01" and "2013-02-11" 
 - เลือกผู้ป่วยที่อยู่ใน Clinic 003 อย่างเดียว 001 ไม่เอา   c.clinic in ("003") and v.hn not in (SELECT hn FROM clinicmember
 - ผู้ป่วยต้องอยู่ในเขต  pp.village_id <> "1"
 - และสถานะต้องติดตามการรักษา  c.clinic_member_status_id in ("1","2")

คำสั่ง SQL Clinic DM "001"
SELECT CONCAT(p.pname,p.fname,"  ",p.lname) as ptname,v.vstdate,v.hn,v.pdx,c.clinic from vn_stat v
LEFT OUTER JOIN clinicmember c on c.hn=v.hn
LEFT OUTER JOIN patient p on p.hn=v.hn
LEFT OUTER JOIN person pp on pp.patient_hn=v.hn
WHERE v.vstdate BETWEEN "2013-02-01" and "2013-02-08" and c.clinic = "001" and pp.village_id <> "1" and c.clinic_member_status_id in ("1","2")
GROUP BY v.hn
ORDER BY v.vstdate


ส่งข้อมูลออก Excell แล้วก็จัดการตามใจชอบ ^___^
#keepper

Monday, February 4, 2013

แนะนำโปรแกรมที่ใช้ประกอบการเขียนรายงาน

1. BMS report builder    เป็นโปรแกรมที่แถมมาพร้อมการติดตั้งโปรแกรม HOSxP และ HOSxP_PCU ใช้สำหรับออกแบบรายงาน




2. Hosxp Query  เป็นโปรแกรมที่อยู่ใน HOSxP และ HOSxP_PCU ใช้สำหรับเขียนคำสั่ง SQL เพื่อดึงข้อมูลจากฐานข้อมูล



3. Navicat MySQL  เป็นโปรแกรมบริหารจัดการฐานข้อมูล MySQL ที่แนะนำสำหรับมือใหม่ควรศึกษา เพราะโปรแกรมจะมีชุดคำสั่งมาให้ ทำให้เราไม่ต้องจำคำสั่ง SQL ทั้งหมด และตัวโปรแกรมเองตรวจสอบ Error ของการเขียนคำสั่งได้ง่าย ไปหาโหลดมาใช้งานนะครับ โปรแกรมมีค่าใช้จ่าย ลองหาใน google ดู



เล่าเรื่องการใช้เงื่อนไขรหัส ICD10 ที่ใช้ดึงกลุ่มเป้าหมายตามต้องการ

เล่าเรื่องการใช้เงื่อนไขรหัส ICD10 ที่ใช้ดึงกลุ่มเป้าหมายตามต้องการ

1. เบาหวาน                    icd10 like ("E11%")
2. ความดันโลหิตสูง      icd10 LIKE ("i10%")
3. ไตวาย                       icd10   BETWEEN "N180" and "N189"
4. CVA                         icd10   BETWEEN "I60" and "I69"
5. โรคหัวใจ                   icd10 in ("I05","I050","I051","I052","I058","I059","I06","I060","I061","I062","I068","I069","I07","I070","I071","I072","I078","I079","I08","I080","I081","I082","I083",
              '"I088","I089","I09","I090","I091","I092","I098","I099","I20","I200","I201","I208","I209","I21","I210","I211","I212","I213","I214","I219","I22","I220","I221","I228",          
              '"I229","I23","I230","I231","I232","I233","I234","I235","I236","I238","I24","I240","I241","I248","I249","I25","I250","I251","I252","I253","I254","I255","I256",                  
              '"I258","I259","I30","I300","I301","I308","I309","I31","I310","I311","I312","I313","I318","I319","I32","I320","I321","I328","I33","I330","I339","I34","I340","I341",              
              '"I342","I348","I349","I35","I350","I351","I352","I358","I359","I36","I360","I361","I362","I368","I369","I37","I370","I371","I372","I378","I379","I38","I39","I390",                
              '"I391","I392","I393","I394","I398","I40","I400","I401","I408","I409","I41","I410","I411","I412","I418","I42","I420","I421","I422","I423","I424","I425","I426","I427",                
              '"I428","I429","I43","I430","I431","I432","I438","I44","I440","I441","I442","I443","I444","I445","I446","I447","I45","I450","I451","I452","I453","I454","I455","I456",                  
              '"I458","I459","I46","I460","I461","I469","I47","I470","I471","I472","I479","I48","I49","I490","I4900","I4901","I4908","I4909","I491","I492","I493","I494","I495",                        
              '"I498","I499","I50","I500","I501","I509","I51","I510","I511","I512","I513","I514","I515","I516","I517","I518","I519","I52")

6. โรคมะเร็ง             icd10 BETWEEN "C00" and "D48"

อธิบายคำสั่ง 
1. คำสั่ง like คือมีส่วนใดส่วนหนึ่งเหมือนก็เลือกมา
2. คำสั่ง between คือเลือกข้อมูลที่อยู่ในช่วงนั้นออกมา
3. คำสั่ง in คือเลือกข้อมูลในชุดข้อมูลที่เรากำหนด

*** ขอบคุณข้อมูลจาก A เวชสถิติ Chakkarat Hos
#keepper

คำสั่ง Query ที่ใช้ดึงกลุ่มเป้าหมายคัดกรอง 2Q /พี่บอย


สวัสดีเช้าวันจันทร์ เดือนแห่งความรัก "กุมภาพันธ์" 2556
วันนี้ประเดิมด้วยคำสั่ง SQL ตามนี้


SELECT CONCAT(p.pname,p.fname,"  ",p.lname) as ptname,p.cid,p.informaddr,p.tmbpart,d.hn,d.icd10,i.`name`,d.vstdate from ovstdiag d
LEFT OUTER JOIN patient p on p.hn=d.hn
LEFT OUTER JOIN icd101 i on i.`code`=d.icd10
WHERE vstdate BETWEEN "2012-10-01" and "2013-01-31" 
and (icd10 like ("E11%") or icd10 LIKE ("i10%") or  icd10   BETWEEN "N180" and "N189" or icd10   BETWEEN "I60" and "I69" or 
icd10 in ("I05","I050","I051","I052","I058","I059","I06","I060","I061","I062","I068","I069","I07","I070","I071","I072","I078","I079","I08","I080","I081","I082","I083", 
              '"I088","I089","I09","I090","I091","I092","I098","I099","I20","I200","I201","I208","I209","I21","I210","I211","I212","I213","I214","I219","I22","I220","I221","I228",            
              '"I229","I23","I230","I231","I232","I233","I234","I235","I236","I238","I24","I240","I241","I248","I249","I25","I250","I251","I252","I253","I254","I255","I256",                    
              '"I258","I259","I30","I300","I301","I308","I309","I31","I310","I311","I312","I313","I318","I319","I32","I320","I321","I328","I33","I330","I339","I34","I340","I341",                
              '"I342","I348","I349","I35","I350","I351","I352","I358","I359","I36","I360","I361","I362","I368","I369","I37","I370","I371","I372","I378","I379","I38","I39","I390",                  
              '"I391","I392","I393","I394","I398","I40","I400","I401","I408","I409","I41","I410","I411","I412","I418","I42","I420","I421","I422","I423","I424","I425","I426","I427",                  
              '"I428","I429","I43","I430","I431","I432","I438","I44","I440","I441","I442","I443","I444","I445","I446","I447","I45","I450","I451","I452","I453","I454","I455","I456",                    
              '"I458","I459","I46","I460","I461","I469","I47","I470","I471","I472","I479","I48","I49","I490","I4900","I4901","I4908","I4909","I491","I492","I493","I494","I495",                          
              '"I498","I499","I50","I500","I501","I509","I51","I510","I511","I512","I513","I514","I515","I516","I517","I518","I519","I52")  )
GROUP BY d.hn
ORDER BY d.icd10

โดยมีเงื่อนไข
1. ช่วงวันที่ vstdate BETWEEN "2012-10-01" and "2013-01-31" 
2. icd10 ตามเงื้นไขที่กำหนด เยอะไปหน่อย
3. GROUP By d.hn  รวม hn ที่ซ้ำกัน
4. ORDER By icd10 ให้เรียงลำดับตามรหัส icd10

ตารางที่เกี่ยวข้อง
1. ovstdiag  เก็บรหัสวินิจฉัยการพยาบาลทั้งหมด
2. patient เก็บข้อมูลผู้รับบริการ
3. icd101 เก็บรายละเอียดของรหัส ICD10 TM


จบบทความ  เอาไปคัดกรองภาวะซึมเศร้าในเดือนแห่งความรัก T____T นะครับ
#keepper

Wednesday, January 30, 2013

Report HOSxP ทะเบียนการคลอด Beta

งานอนามัยแม่และเด็ก ให้เขียนรายงานทะเบียนการคลอด เพื่อส่งข้อมูลผู้รับบริการที่มารับบริการคลอดให้ รพ.สต.ในเครือข่าย ได้ดูแลผู้รับบริการ ต่อไป... เพิ่มเติมข้อมูล แจ้งมาได้ครับทุกช่องทาง # keepper
 

Sample Text

111

Sample Text