#rpm -ivh package_name.rpm //ทำการติดตั้งโปรแกรม
#rpm -Uvh package_name.rpm //อัพเกรดโปรแกรม
#rpm -ev package_name.rpm //ถอนการติดตั้งโปรแกรมที่ติดตั้งไว้แล้ว
#rpm -qa //แสดงรายชื่อโปรแกรมที่ติดตั้งไปแล้ว
#rpm -ql package_name.rpm //แสดงรายละเอียดของโปรแกรมที่ติดตั้งไปแล้ว
สำหรับ web ที่ใช้ download คือ http://rpmfind.net
04 ธันวาคม 2561
15 สิงหาคม 2561
hosxp เมื่อต้องการนำข้อมูลเงื่อนไข parameter แสดงในรายงาน
เมื่อต้องการข้อมูล parameter ของรายงานมีแสดงผลให้ใช้ Fuction
GetUserParameter(i)
ยกตัวอย่าง
Value := 'ระหว่างวันที่ '+FormatThaiDate('d mmmm yyyy',StrToDate(GetUserParameter(0)))+' ถึงวันที่ '+FormatThaiDate('d mmmm yyyy',StrToDate(GetUserParameter(1)));
เมื่อต้องการนำข้อมูลหลายๆ แถวในคอลัมน์ มาเรียงกันเป็นแถวเดียว
ใช้คำสั่ง Group_concat()
แต่เมื่อใน hosxp ให้เพิ่ม คำสั่ง group_concat(ชื่อคอลัมน์) as ชื่่อตัวแปร ด้วย
แต่เมื่อใน hosxp ให้เพิ่ม คำสั่ง group_concat(ชื่อคอลัมน์) as ชื่่อตัวแปร ด้วย
04 กรกฎาคม 2560
คำสั่ง mysql เกี่ยวกับ ระบบงานห้องคลอด
1.เลขที่ หนังสือรับรองการเกิด
document_born_id
select * from serial where name like "%born%"
select document_born_id from ipt_labour_infant where ipt_labour_id = 274
2. mysql ดึงข้อมูล หนังสือรับรองการเกิด
select ili.sex, ili.birth_date, ili.birth_time, concat(p.pname,p.fname," ",p.lname) as mother_name,a.hn as mother_hn, a.age_y as mother_age, p.cid as mother_cid,
il.g-1+ip.child_count as child_no, il.l+1 as living_child, il.a, ili.hn, ili.labour_doctor, ip.ga,ili.birth_weight, ili.document_born_id,
concat(pt.pname,pt.fname) as infant_name, pt.lname as infant_lname, pt.cid as infant_cid, na.name as infant_citizenship,
if(pt.sex is null,ili.sex,pt.sex) as infant_sex, if(pt.fathername is null,concat(p.spsname," ",p.spslname),concat("นาย",pt.fathername," ",pt.fatherlname)) as father_name, pt.father_cid,
ili.ipt_labour_id, ip.deliver_type, ip.deliver_abnormal_type, ldat.labour_deliver_abnormal_name, ip.child_count
from ipt_labour_infant ili
join ipt_labour il on il.ipt_labour_id = ili.ipt_labour_id
join ipt_pregnancy ip on ip.an = il.an
join ipt i on i.an = il.an
join an_stat a on a.an=i.an
join patient p on p.hn = i.hn
left join patient pt on pt.hn=ili.hn
left join nationality na on na.nationality=pt.citizenship
left join labour_deliver_abnormal_type ldat on ldat.labour_deliver_abnormal_type=ip.deliver_abnormal_type
where ili.ipt_labour_infant_id = "221"
document_born_id
select * from serial where name like "%born%"
select document_born_id from ipt_labour_infant where ipt_labour_id = 274
2. mysql ดึงข้อมูล หนังสือรับรองการเกิด
select ili.sex, ili.birth_date, ili.birth_time, concat(p.pname,p.fname," ",p.lname) as mother_name,a.hn as mother_hn, a.age_y as mother_age, p.cid as mother_cid,
il.g-1+ip.child_count as child_no, il.l+1 as living_child, il.a, ili.hn, ili.labour_doctor, ip.ga,ili.birth_weight, ili.document_born_id,
concat(pt.pname,pt.fname) as infant_name, pt.lname as infant_lname, pt.cid as infant_cid, na.name as infant_citizenship,
if(pt.sex is null,ili.sex,pt.sex) as infant_sex, if(pt.fathername is null,concat(p.spsname," ",p.spslname),concat("นาย",pt.fathername," ",pt.fatherlname)) as father_name, pt.father_cid,
ili.ipt_labour_id, ip.deliver_type, ip.deliver_abnormal_type, ldat.labour_deliver_abnormal_name, ip.child_count
from ipt_labour_infant ili
join ipt_labour il on il.ipt_labour_id = ili.ipt_labour_id
join ipt_pregnancy ip on ip.an = il.an
join ipt i on i.an = il.an
join an_stat a on a.an=i.an
join patient p on p.hn = i.hn
left join patient pt on pt.hn=ili.hn
left join nationality na on na.nationality=pt.citizenship
left join labour_deliver_abnormal_type ldat on ldat.labour_deliver_abnormal_type=ip.deliver_abnormal_type
where ili.ipt_labour_infant_id = "221"
อ้างอิง : http://jda-memo.blogspot.com/2017/02/mysql.html?view=magazine
28 มิถุนายน 2560
คำสั่ง MySQL ที่ควรรู้ในการสร้างรายงานใน HOSXP
คำสั่ง MySQL คำสั่งตรวจสอบ show master status; ตรวจสอบการทำงานของ master show slave status; ตรวจสอบการทำงานของ slave show full processlist; : แสดงผู้ที่เข้ามาทำงาน mysql show create table ชื่อตาราง : แสดงคำสั่งใช้สร้างตารางนั้น describe ชื่อtable : แสดงรายละเอียดของตาราง 1.การสร้างฐานข้อมูล CREATE DATABASE `test` DEFAULT CHARACTER SET tis620 COLLATE tis620_thai_ci; อธิบาย สร้างฐานข้อมูล test โดยตั้งค่า(การเรียงลำดับ) หลักเป็น is620 COLLATE tis620_thai_ci; 1.1 การตั้งค่าสิทธิการใช้งานให้ตาราง grant all on test.* to test@'%' identified by '12345' อธิบาย ให้สิทธิทุกอย่าง ในการแก้ไขฐานข้อมูล test แก่ test@'%' โดยใช้รหัสผ่าน 12345 ในการเข้าใช้ 2.การสร้างตารางในฐานข้อมูล CREATE TABLE `test` (`id` int(11) NOT NULL default '0',`name` varchar(250) default NULL,PRIMARY KEY (`id`),UNIQUE KEY `id`(`id`)) อธิบาย สร้างตารางชื่อ refer_cause โดยมี field `id` เก็บข้อมูลชนิด integer ขนาด 11 ไม่มีค่าว่าง และมีค่า default=0 field 'name' เก็บข้อมูลชนิด varchar ขนาด 250 default = NULL โดยมี id เป็น PRIMARY KEY และ UNIQUE KEY 3. การปรับเปลี่ยนตาราง alter เพิ่ม alter table test add confirm char(10) อธิบาย แทรก(คอลัม)filed ชื่อ confirm ชนิดข้อมูล char ขนาด 10 ที่ตาราง test เปลี่ยนชื่อ ALTER TABLE `test` CHANGE `confirm` `rename` INT( 15 ) NULL DEFAULT NULL อธิบาย เปลี่ยน ชื่อคอลัม confirm ที่ตาราง test เป็น rename และชนิดข้อมูล INT ขนาด 15 ที่ตาราง test 4. การลบข้อมูลในตาราง (แถว) delete delete from pttype_group2 where pname=1 อธิบาย ลบข้อมูลในตาราง pttype_group2 เมื่อ pname มีค่า =1 delete from hipdata where cid in (select cid from patient where pttype = '20') อธิบาย ลบข้อมูลในตาราง hipdata เมื่อ cid มีค่า = cid ที่ patient และ patient.pttype = '20' 5. การลบตาราง(โยนทิ้ง) DROP DROP TABLE `pttype_group2` อธิบาย ลบตาราง(โยนทิ้ง) pttype_group2 จากฐานข้อมูลปัจจุบัน 6. การเลือกข้อมูล(นำข้อมูลมาแสดง) select 6.1 เลือกทั้งหมด select * from test 6.2 เลือกบางข้อมูล select id,name from test 6.3 เลือกโดยเงื่อนไข where // between,and,or,like,in,not in,distinct (ไม่ซ้ำ) , <, > ,=>,<=,=,<> (ไม่เท่ากับ) !=, %(อะไรก็ได้ยาวไม่จำกัด),_ (อะไรก็ได้แต่ยาวไม่เกินจำนวน _) 6.3.1 select * from vn_stat where pcode is null or pcode='' and pttype in ("75","80") and pdx like "K02%" and vstdate between "2006-03-01" and "2006-06-30" อธิบาย เลือกข้อมูลทุกตัว* จากตาราง vn_stat เมื่อ pcode เป็นค่าว่าง และ pttype มีค่าเป็น 75,80 และ pdx ขึ้นต้นด้วย k02 และ vstdate อยู่ในช่วง "2006-03-01" ถึง "2006-06-30" 6.3.2 select distinct hn,pttype from opitemrece where pttype in (select pttype from pttype where pcode in (select pcode from pcode)) อธิบาย แสดง hn ที่ไม่ซ้ำกัน ,pttype จาก opitemrece เมื่อ pttype มีค่าอยู่ใน ตาราง pttype.pttype และ pttype.pcode มีค่าอยู่ใน pcode.pcode 6.3.3 select v.pdx,i.name,count(v.pdx) as pdx_count from vn_stat v left outer join icd101 i on i.code=v.pdx where v.vstdate between '2006-08-01' and '2006-08-31' group by v.pdx,i.name order by pdx_count desc limit 10 อธิบาย แสดง pdx ,นับจำนวน pdx แสดงที่ pdx_count (การ count จำเป้นต้องใช้ as ร่วมด้วยไม่งั้นอาจมี error) ,ชื่อ pdx ( เชื่อม v.pdxกับicd101.code เพื่อดึงชื่อ) จาก vn_stat และอยู่ในช่วง vstdate โดยให้จัดกลุ่มตาม pdx (group by ใช่ร่วมกับคำสั่ง count, min ,max) และเรียงลำดับตาม pdx_count จากมากไปน้อย ( DESC มากไปน้อย ASC น้อยไปมาก) แสดงที่ 10 รายการ 6.4 การ join เป็นการนำตารางหลาย ๆ ตารางมาคิวรีพร้อมกัน เพื่อหาข้อมูลที่ต้องการ Inner Join เป็นการนำตาราง 2 ตารางมา join กัน ตามเงื่อนไขที่กำหนด (เป็นการ join ทั้งสองฝั่งต้องมี field ที่นำมา join กันเหมือนกัน) >> Equi JOIN จะมีการแสดงข้อมูลซ้ำกันในคอลัมน์ที่นำมาเปรียบเทียบกัน >> Natural JOIN จะไม่นำข้อมูลคอมลัมน์ที่เปรียบเทียบมาแสดง Cross Join (Unrestricted JOIN) เป็นการ JOIN ที่แสดงถึงความเป็นไปได้ของผลลัพธ์ที่สามารถเกิดขึ้นได้ (Cartesian Product) Outer Join การ JOIN ที่อยู่นอกเหนือเงื่อนไขที่กำหนด ประกอบไปด้วย >> LEFT OUTER JOIN (* =) นำเอาฝั่งซ้ายมาทุกrecord ส่วนทางขวาจะนำเอา record ที่เหมือนทางซ้ายมาเท่านั้น >> RIGHT OUTER JOIN (= *) นำเอาฝั่งขวามาทุกrecord ส่วนทางซ้ายจะนำเอา record ที่เหมือนทางขวามาเท่านั้น Outer Join เป็นการ JOIN ตารางเดียวกัน แต่ตั้งชื่อ alias ต่างกัน Full Join : เป็นการ join กันที่จะนำเอาฝั่งซ้ายและฝั่งขวามาทุกrecord โดยรายการไหนที่ไม่ match กันก็จะแสดง null value ออกมาให้ EXAMPLE 1 select d.name as doctor_name,o.icode,concat(s.name," ",s.strength," ",s.units) as item_name ,sum(o.qty) as sum_qty from opitemrece o left outer join doctor d on d.code=o.doctor left outer join s_drugitems s on s.icode=o.icode and o.icode like "1%" where o.rxdate between "2006-09-01" and "2009-09-10" group by d.name,o.icode อธิบาย เลือกข้อมูลหลักจากตาราง opitemrece o (ใช้ o แทน opitemrece) โดย เชื่อม ตาราง doctor d โดย d.code=o.doctor และ เชื่อม s_drugitems s on s.icode=o.icode o.icode ขึ้นต้นด้วย แล้วแสดงข้อมูล doctor.name ที่ doctor_name ,opitemrece.icode , รวมข้อมูล s_drugitems.name s_drugitems.strength s_drugitems.unit ที่ item_name และ ผลรวมของ opitemrece.qty EXAMPLE 2 SELECT p.hn,p.fname,p.lname,t1.name as chw_name, t2.name as amp_name,t3.name as tmb_name FROM patient p LEFT OUTER JOIN thaiaddress t1 on t1.chwpart=p.chwpart and t1.codetype='1' LEFT OUTER JOIN thaiaddress t2 on t2.chwpart=p.chwpart and t2.amppart=p.amppart and t2.codetype='2' LEFT OUTER JOIN thaiaddress t3 on t3.chwpart=p.chwpart and t3.amppart=p.amppart and t3.tmbpart= p.tmbpart and t3.codetype='3' WHERE p.fname LIKE 'สม%' EXAMPLE 3 select g.income_group,g.name,sum(o.rcptamt) as rcptamt from income_group g,income i,incoth o,vn_stat v where v.vstdate between "2006-09-01" and "2006-09-31" and v.vn=o.vn and i.income=o.income and g.income_group=i.income_group group by g.income_group,g.name 7. การแก้ไข/เปลี่ยนแปลงข้อมุลในตาราง update data set UPDATE nondrugitems SET istatus = 'Y' WHERE (istatus = '' OR istatus IS NULL) อธิบาย แก้ไขค่า istatus เป็น Y เมื่อ istatus มีค่าว่าง UPDATE nondrugitems SET price = price2 WHERE price2 >0 AND price2 IS NOT NULL อธิบาย แก้ไขค่า price ให้มีค่า= price2 เมื่อ price2 มีค่ามากกว่า 0และไม่ใช่ค่าว่าง UPDATE nondrugitems set billnumber=(select billnumber from nondrugi where nondrugi.icode=nondrugitems.icode) ดึงค่าจากตารางหนึ่งมาใส่ในตารางหนึ่ง แก้ไขค่า nondrugitems .billnumber ให้มีค่า= nondrugi.billnumber เมื่อ nondrugitems.icode =nondrugi.icode UPDATE clinicmember SET last_vn = (SELECT max(vn) FROM oapp WHERE oapp.hn=clinicmember.hn) ให้ดึงค่าที่มากที่สุดมาใช้ update patient set informaddr= (select full_name from thaiaddress left outer join vn_stat on vn_stat.aid=thaiaddress.addressid left outer join patient on patient.hn=vn_stat.hn where vn_stat.aid=thaiaddress.addressid) update patient set informaddr=(select concat(patient.moopart,' ',thaiaddress.full_name) from thaiaddress where thaiaddress.tmbpart=patient.tmbpart and thaiaddress.amppart=patient.amppart and thaiaddress.chwpart=patient.chwpart) การ update ในตารางเดียวกัน update rx_operator inner join rx_operator as rx_operator_2 on rx_operator.vn=rx_operator_2.vn set rx_operator.check_staff=rx_operator_2.pay_staff where rx_operator.check_staff is null update ovst inner join ovst as ovst_2 on ovst.vn=ovst_2.vn set ovst.spclty="15" where ovst_2.spclty ='96' การ update แบบเติมค่าเข้าไป update ptcardno p set p.cardno = concat('0-0000-0',mid(p.hn,1,4),'-',mid(p.hn,5,2),'-',right(p.hn,1)) where p.hn in(select hn from patient where nationality <>"99" and citizenship <> '99' and cid like"000000%" or cid like "1111111%" ) จาก sql ข้างบนเป็นการเลือกดูข้อมูลการส่ง lab ของ ผู้ป่วยนอกและผู้ป่วยใน ------------------------------------------------------------------------------------------------------------------------------------ --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------ ตรวจสอบการ gen การตัด - cid ในเลขบัตรประชาชน select p.hn,concat(p.pname,' ',p.fname,' ',p.lname)as ptname ,p.cid,pt.cardno ,concat(substr(pt.cardno,1,1),substr(pt.cardno,3,4),substr(pt.cardno,8,5), substr(pt.cardno,14,2),substr(pt.cardno,17,1))as pt_cardno ,p.nationality from patient p left join ptcardno pt on pt.hn=p.hn and pt.cardtype ='01' where p.death ='N' and p.cid in('','0000000000001','1111111111111') and p.nationality like('99') ตรวจสอบ ptcardno ไม่ถูกต้อง การตัด - ออก ในระหว่างค่า select p.hn,concat(p.pname,' ',p.fname,' ',p.lname)as ptname,p.cid,pt.cardno ,concat(substr(pt.cardno,1,1),substr(pt.cardno,3,4),substr(pt.cardno,8,5), substr(pt.cardno,14,2),substr(pt.cardno,17,1))as pt_cardno ,p.nationality from patient p left join ptcardno pt on pt.hn=p.hn and pt.cardtype ='01' where ( p.cid is null or p.cid ='') 121212121212ตรวจสอบ patient ไม่ถูกต้อง = การเพิ่มเครื่องหมาย - เข้าไปในระหว่างค่า1212121212 select p.hn,concat(p.pname,' ',p.fname,' ',p.lname)as ptname,p.cid,pt.cardno , concat(substr(p.cid,1,1),'-',substr(p.cid,2,4),'-',substr(p.cid,6,5),'-', substr(p.cid,11,2),'-',substr(p.cid,13,1))as p_cid ,p.nationality from patient p left join ptcardno pt on pt.hn=p.hn and pt.cardtype ='01' where ( pt.cardno is null or pt.cardno ='') and p.cid <>'0000000000001' limit 1000 ดึง cid ที่ถูกต้องจาก patient มาใส่ ptcardno จากรรูปแบบ 00000 มาเป็นแบบ 0-0000- 99999999999ตรวจสอบ cid patient.cid=ptcardno.cardno ptcardno.cardno=person.cid 99999999 select v.hn,v.vstdate,v.cid as vn_stat_cid,p.cid as patient_cid, concat(substr(pt.cardno,1,1),substr(pt.cardno,3,4),substr(pt.cardno,8,5), substr(pt.cardno,14,2),substr(pt.cardno,17,1))as pt_cardno,ps.cid as ps_cid from vn_stat v left outer join patient p on p.hn=v.hn left outer join ptcardno pt on pt.hn=p.hn and pt.cardtype='01' left outer join person ps on ps.patient_hn=p.hn where v.vstdate between'2010-11-01'and'2010-11-30' and v.cid<>ps.cid 1. เรียกข้อมูล และ save โครงสร้าง ptcardno select p.hn,pt.cardtype , concat(substr(p.cid,1,1),'-',substr(p.cid,2,4),'-',substr(p.cid,6,5),'-',substr(p.cid,11,2),'-',substr(p.cid,13,1))as cardno ,pt.expiredate ,pt.hos_guid from patient p left join ptcardno pt on pt.hn=p.hn and pt.cardtype ='01' where p.death ='N' and p.cid not in('','0000000000001' ,'1111111111111','0000000000000' ) and p.nationality ='99' +++++++++++++++++++++ select p.hn,pt.cardtype , concat(substr(p.cid,1,1),'-',substr(p.cid,2,4),'-',substr(p.cid,6,5),'-',substr(p.cid,11,2),'-',substr(p.cid,13,1))as cardno ,pt.expiredate ,pt.hos_guid , p.nationality from patient p left join ptcardno pt on pt.hn=p.hn and pt.cardtype ='01' where p.death ='N' and p.cid not in('','0000000000001' ,'1111111111111','0000000000000' ) and p.cid not like "011033%" and p.nationality <>'99' order by p.hn +++++++++++++++++++++++++++++ 2. ตรวจสอบ select * from ptcardno where hn in( select hn from patient p where p.cid not in('','0000000000001' ,'1111111111111','0000000000000' ) and p.nationality ='99') 3. ลบ delete from ptcardno where hn in( select hn from patient p where p.cid not in('','0000000000001' ,'1111111111111','0000000000000' ) and p.nationality ='99') 4. เปิิด ptcardno ที่ save ไว้ aphed ตรวจสอบ person select v.hn from vn_stat v left join person p on p.cid=v.cid left join patient pa on pa.hn=v.hn left outer join thaiaddress t1 on t1.addressid = concat(pa.chwpart,'0000') left outer join thaiaddress t2 on t2.addressid = concat(pa.chwpart,pa.amppart,'00') left outer join thaiaddress t3 on t3.addressid = concat(pa.chwpart,pa.amppart,pa.tmbpart) where v.vstdate between'2011-03-01'and'2011-03-31' and p.cid is null and pa.nationality='99' ---------------------------------------------------------------------------------------------------------------------- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ----------------------------------------------------------------------------------------------------------------------------- 8. การ Union select h.lab_order_number,h.lab_receive_number,h.hn,h.order_date, h.order_time,h.receive_time as service13,h.report_time as service14,d.code, d.name as doctor_name,concat(pt.pname,pt.fname,' ',pt.lname) as ptname,h.form_name, v.age_y as age_y,h.department ,v.dx_doctor , d2.name as dx_doctor_name from lab_head h left outer join patient pt on pt.hn=h.hn left outer join doctor d on d.code=h.doctor_code left outer join vn_stat v on v.vn=h.vn left outer join doctor d2 on d2.code = v.dx_doctor where h.order_date between '2006-01-01' and '2006-08-30' and h.department = 'OPD' group by h.lab_receive_number union select h.lab_order_number,h.lab_receive_number,h.hn,h.order_date, h.order_time,h.receive_time as service13,h.report_time as service14,d.code, d.name as doctor_name,concat(pt.pname,pt.fname,' ',pt.lname) as ptname,h.form_name, a.age_y as age_y,h.department ,a.dx_doctor , d2.name as dx_doctor_name from lab_head h left outer join patient pt on pt.hn=h.hn left outer join doctor d on d.code=h.doctor_code left outer join an_stat a on a.an=h.vn left outer join doctor d2 on d2.code = a.dx_doctor where h.order_date between '2006-01-01' and '2006-08-30' and h.department = 'IPD' group by h.lab_receive_number การเขียน VARAIBLE 1. "' มันคือ ' +" หรือ "+' 2. +' ... จำเป็นต้องปิดด้วย +' ไหม เพราะบางที่หาตัวปิดไม่เจอ 1. ชื่อฟังชั่นที่ใช้ก็เป็นการระบุถึงชนิดของผลลัพท์ที่ได้ เช่น double, string, interger 2. รูปแบบประโยค จะเป็น '.................................' ดังนั้น การเชื่อมประโยค จึงเป็น '......................'+'.........................' หรือ '.......................'+ ดังนั้น '.......................' จึงไม่ต้องปิดด้วย + 3. การใช้ตัวแปร สามารถเขียนอยู่ระหว่างประโยค เช่น '...........'+y+'...............' ดังนั้นการใส่ตัวแปรใน sql script x="y" จึงเป็น '...........x="y"..........' เมื่อเราใช้ตัวแปร y จาก pascal script มาใส่ sql script จะเป็น '.........................x=" ' + y + ' "...........' (เว้นวรรคเพื่อให้เห็นความแตกต่าง) 4. ส่วน DBPipeline['xx'] เป็นการดึงค่า จาก fields xx ซึ่งได้จากการ qeury ....หากมีการตัดบรรทัดให้เชื่อมด้วย '+' แกะยากกว่าหอยครับ แต่อร่อยกว่าแยะ ??????? หากต้องการศึกษา ใน tabl calc ให้เลือก เมนู -> View -> Module ครับ code จะอยู่ในส่วน Global -> Declaration และ Event ครับ ????? ตัวอย่าง code จาก SYSTEM-OPD-RG0110-1 sql เลือก select 1 from pttype limit 1 <<<<<<--- Declaration -->>>>>> ds1,ds2,d1,d2:string; td1,td2:tdatetime; pc1,pc2,pc3,pc4,pc5,pc6,pc7:string; dm1,ht1,new_dm1,new_ht1,baby_vn,fp_vn,anc_vn:string; service_exclude_cri:string; pt_subtype_cri:string; pt_subtype_cri_pcu:string; <<<<<<--- Event -->>>>>> GetDateRangeDialog(td1, td2); ds1:=formatdatetime('yyyy-mm-dd',td1); ds2:=formatdatetime('yyyy-mm-dd',td2); d1:=ds1; d2:=ds2; pc1 := getsqlsubquerydata('select pttype from pttype where pcode in ("A2")'); pc2 := getsqlsubquerydata('select pttype from pttype where pcode in ("A7")'); pc3 := getsqlsubquerydata('select pttype from pttype where pcode in ("UC","UA")'); pc4 := getsqlsubquerydata('select pttype from pttype where pcode in ("AA","AB","AC","AD","AE","AF","AG","AH","AI","AJ","AK","UB")'); pc5 := getsqlsubquerydata('select pttype from pttype where pcode in ("AL")'); pc6 := getsqlsubquerydata('select pttype from pttype where pcode in ("AM")'); pc7 := getsqlsubquerydata('select pttype from pttype where pcode not in (' + '"A2","A7","UC","UA","UB","AA","AB","AC","AD","AE","AF","AG","AH","AI","AJ","AK",' + '"AL","AM" ) '); pc7:=pc7+','+getsqlsubquerydata('select pttype from pttype where pcode IS NULL'); dm1 := getsqlsubquerydata('select hn from clinicmember where clinic="' + gethosvariable('dm_clinic_code') + '"'); ht1 := getsqlsubquerydata('select hn from clinicmember where clinic="' + gethosvariable('ht_clinic_code') + '"'); new_dm1 := getsqlsubquerydata('select hn from clinicmember where clinic="' + gethosvariable('dm_clinic_code') + '" and regdate between "' + d1 + '" and "' + d2 + '" '); new_ht1 := getsqlsubquerydata('select hn from clinicmember where clinic="' + gethosvariable('ht_clinic_code') + '" and regdate between "' + d1 + '" and "' + d2 + '" '); baby_vn := getsqlsubquerydata('select distinct b1.vn from baby_visit b1,ovst o where o.vstdate ' + ' between " ' + d1 + ' " and "' + d2 + '" and o.vn=b1.vn '); fp_vn := getsqlsubquerydata('select distinct b1.vn from fp_visit b1,ovst o where o.vstdate ' + ' between "' + d1 + '" and "' + d2 + '" and o.vn=b1.vn '); anc_vn := getsqlsubquerydata('select distinct b1.vn from anc_visit b1,ovst o where o.vstdate ' + ' between "' + d1 + '" and "' + d2 + '" and o.vn=b1.vn '); service_exclude_cri:=' and vn not in ('+baby_vn+','+fp_vn+','+anc_vn+') '; pt_subtype_cri := ' and pt_subtype in ("0","","2") '; pt_subtype_cri_pcu := ' and pt_subtype in ("1") '; <<<<<<<<<---ส่วนของ Variable--->>>>>>>>>>> ผู้ป่วยใช้สิทธิเบิกได้ pttype in (' + pc1 + ') ช่วงวันที่ ds1-ds2 ชื่อ รพ.--->>>>>>>>>>> Value := GetSQLStringData('select hospitalname from opdconfig'); วัันที่ Value := formatdatetime('dd/mm/eeee',td1); Value := formatdatetime('dd/mm/eeee',td2); เป็นผู้ป่วยใหม่ (count_in_year=0) และในเครือข่าย (pttype_in_region="Y") --->>>>>>>>>>> value:=getsqlintegerdata('select count(hn) as cc from vn_stat where vstdate between "' + d1 + '" and "' + d2 + '" ' + ' and count_in_year=0 and pttype_in_region="Y" and pttype in (' + pc1 + ')'+pt_subtype_cri+service_exclude_cri); value:=getsqlintegerdata('select count(hn) as cc from vn_stat where vstdate between "' + d1 + '" and "' + d2 + '" ' + ' and count_in_year=0 and pttype_in_region="" and pttype not in (' + pc1 +','+pc2+','+pc3+','+pc4+','+pc5+ ')'+pt_subtype_cri_pcu+service_exclude_cri); ผู้ป่วยทันตกรรม ครั้ง --->>>>>>>>>>> Value := getsqlintegerdata('select count(d.hn) as cc from dtmain d,vn_stat v where v.vstdate between "' + d1 + '" and "' + d2 + '" ' + ' and v.vn=d.vn and v.pttype in (' + pc1 + ')'); ผู้ป่วยรับบริการ วางแผนครอบครัว อื่น ๆ d.fp_code not in ( 3,6,7) --->>>>>>>>>>> Value := getsqlintegerdata('select count(distinct v.hn) as cc from fp_visit d,vn_stat v where v.vstdate between "' + d1 + '" and "' + d2 + '" ' + ' and v.vn=d.vn and v.pttype not in (' +pc1+','+pc2+','+ pc3+','+pc4 + ') and d.fp_code not in ( 3,6,7) '); หมันหญิง d.fp_code = 7 --->>>>>>>>>>> Value := getsqlintegerdata('select count(distinct v.hn) as cc from fp_visit d,vn_stat v where v.vstdate between "' + d1 + '" and "' + d2 + '" ' + ' and v.vn=d.vn and v.pttype in (' + pc2 + ') and d.fp_code = 7'); Value := getsqlintegerdata('select count(distinct v.hn) as cc from fp_visit d,vn_stat v where v.vstdate between "' + d1 + '" and "' + d2 + '" ' + ' and d.fp_code not in ( 3,6,7) and d.fp_code is not null '); ผู้ป่วยตาย --->>>>>>>>>>> Value := getsqlintegerdata('select count(d.hn) as cc from death d where d.death_date between "' + d1 + '" and "' + d2 + '" ' + ' and d.last_pttype in (' + pc3+','+pc4 + ') '); ตรวจก่อนคลอด d.anc_code in (10,11,12,13)--->>>>>>>>>>> Value := getsqlintegerdata('select count(distinct v.hn) as cc from anc_visit d,vn_stat v where v.vstdate between "' + d1 + '" and "' + d2 + '" ' + ' and v.vn=d.vn and v.pttype in (' + pc1 + ') and d.anc_code in (10,11,12,13) '); การคลอด ปกติ d.deliver_type = 1 --->>>>>>>>>>> Value := getsqlintegerdata('select count(v.an) as cc from ipt_pregnancy d,an_stat v where v.dchdate between "' + d1 + '" and "' + d2 + '" ' + ' and v.an=d.an and v.pttype in (' + pc1 + ') and d.deliver_type = 1'); ผู้ป่วยนอกตาย --->>>>>>>>>>> Value := getsqlintegerdata('select count(d.hn) as cc from death d where d.death_date between "' + d1 + '" and "' + d2 + '" ' + ' and d.last_pttype not in (' + pc1 +','+pc2+','+pc3+','+pc4+ ') '); แม่ตาย --->>>>>>>>>>> Value := getsqlintegerdata('select count(v.an) as cc from ipt_pregnancy d,an_stat v where v.dchdate between "' + d1 + '" and "' + d2 + '" ' + ' and v.an=d.an and d.death="Y"'); ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ตัวอย่าง code จาก SYSTEM-OPD-PTTYPE-SUMMARY sql เลือก select * from pttype order by pttype <<<<<<--- Declaration -->>>>>>> date1,date2 : TDateTime; ds1,ds2 : String; S : String; <<<<<<--- Event -->>>>>> begin GetDateRangeDialog(date1, date2); ds1:=formatdatetime('yyyy-mm-dd',date1); ds2:=formatdatetime('yyyy-mm-dd',date2); end; <<<<<<<<<---ส่วนของ Variable--->>>>>>>>>>> ( ตามสิทธิ and '+' pttype = "'+DBPipeline['pttype']+' ผู้ป่วยใหม่ ' and count_in_year=0' )--->>>>>>>>>>> s:= GetSQLStringData('select count(*) as cc from vn_stat '+ ' where vstdate between "'+ds1+'" and "'+ds2+'" and '+ ' pttype = "'+DBPipeline['pttype']+'"'+ ' and count_in_year=0'); Value := s; เรียงตามสิทธิ รวมค่ารักษาที่เกิดขึ้น sum(income)--->>>>>>>>>>> s:= GetSQLStringData('select sum(income) as cc from vn_stat '+ ' where vstdate between "'+ds1+'" and "'+ds2+'" and '+ ' pttype = " '+DBPipeline['pttype']+' " '+' '); if s='' then s:='0'; Value := strtofloat(s); สรุปค่ารักษาผู้ป่วยในแยกตามสิทธิการรักษา (รายการชำระเงิน) SQL select * from pttype where isuse = "Y" order by pttype รายการจ่ายเงินผู้ป่วยใน DC (ค่า income_group="01") Value:= GetSQLDoubleData('select sum(r.rcptamt) as cc from an_stat v,rcpt_print p,rcpt_print_detail r '+ ' where v.dchdate between "'+ds1+'" and "'+ds2+'" and '+ ' v.pttype = "'+DBPipeline['pttype']+'"'+ ' and v.an = p.vn and p.department="IPD" and p.finance_number= r.finance_number and r.paidst in ("01","03") and r.income in ('+ getsqlsubquerydata('select income from income where income_group="01" ') +')'); รวมค่าบริการทุกสิทธิ์ income=17 Value:= GetSQLDoubleData('select sum(r.rcptamt) as cc from an_stat v,rcpt_print p,rcpt_print_detail r '+ ' where v.dchdate between "'+ds1+'" and "'+ds2+'" and '+ ' v.an = p.vn and p.department="IPD" and p.finance_number= r.finance_number and r.paidst in ("01","03") and r.income in ('+ getsqlsubquerydata('select income from income where income_group="17" ') +')'); value:=getsqlintegerdata('select count(hn) as cc from vn_stat where vstdate between "' + d1 + '" and "' + d2 + '" ' + ' and pttype_in_region<>"Y" and pttype in (' + pc1 + ')'+zmain_pdx); Value:= GetSQLStringData('select sum(income) as cc from an_stat '+ ' where dchdate between "'+ds1+'" and "'+ds2+'" and '+ ' pcode = "A2" '+' '); :P -------------------------------------------------------------------------------------------------------------------------------------------------- :P ผู้ป่วยประกันสังคม update ovst set doctor="01" where pttype="04" update ovst set hospmain="10705" where pttype="04" ยานอกบัญชี select icode,name,drugaccount from drugitems where drugaccount='' การกำหนด Visible Label42.Visible := DBPipeline['an'] > '0'; (ถ้า an > 0 ให้มองเห็น label42) อีกแบบหนึ่ง ใช้ Variable (if ...then... else if) procedure Variable2OnCalc(var Value: Variant); begin Label12.visible:=False; Label21.visible:=False; Label23.visible:=False; Label29.visible:=False; if DBPipeline['spclty']='09' then Label12.visible:=True else if DBPipeline['spclty']='08' then Label21.visible:=True else if DBPipeline['spclty']='02' then Label23.visible:=True else Label29.visible:=True; end; การแปลงค่าเป็นตัวหนังสือ .ที่หน้าต่าง Design แบบรายงานน่ะ ให้ golf ไปคลิ๊กที่ system variable ตัวนั้น เช่น sum(mon11) .... ....แล้ว ดูตรง Report Tree ด้านบนซ้าย ว่า system variable ตัวนี้ชื่ออะไร จะมีเป็น highlight ทับที่ชื่อของ system variable ตัวนี้อยู่.... ....เช่น sum(mon11) ตัวนี้มีชื่อว่า DBCalc1 ก็ใช้คำสั่งเป็น Value :=ThaiMoney(DBCalc1.value) ; ...กรณีแรก ใช้จากค่าของ DBPipeline สมมุติว่าคือ mon1 มีค่าเท่ากับ 120.00 ....ตัวอย่าง.... Value := ThaiMoney(DBPipeline['mon1']) ; ผลที่ได้คือ หนึ่งร้อยยี่สิบบาท Value := '('+ThaiMoney(DBPipeline['mon1'])+')' ; ผลที่ได้คือ (หนึ่งร้อยยี่สิบบาท) ....กรณีที่ 2 ใช้ค่าจาก Variable สมมุติว่าคือ variable1 มีค่าเท่ากับ 96 ....ตัวอย่าง.... Value :=ThaiMoney(variable1.value) ; ผลที่ได้คือ เก้าสิบหกบาท Value :='('+ThaiMoney(variable1.value)+')' ; ผลที่ได้คือ (เก้าสิบหกบาท) การ join ตาราง ตัวอย่าง การนับจำนวนค่าการกรอกข้อมูลในฟิลด์ bpd,bps,bw,pulse,temperature โดยไม่นับจำนวนช่องว่างและค่าที่เป็นศูนย์ เฉพาะผู้ป่วยที่ส่งไปยังจัดซักประวัติ SELECT ov.vstdate,count(o1.vn) AS bps_count,count(o2.vn) AS bpd_count,count(o3.vn) AS bw_count,count(o4.vn) AS pulse_count,count(o5.vn) AS temp_count FROM ovst ov LEFT OUTER JOIN opdscreen o1 ON o1.vn = ov.vn AND o1.bps > 0 LEFT OUTER JOIN opdscreen o2 ON o2.vn = ov.vn AND o2.bpd > 0 LEFT OUTER JOIN opdscreen o3 ON o3.vn = ov.vn AND o3.bw > 0 LEFT OUTER JOIN opdscreen o4 ON o4.vn = ov.vn AND o4.pulse>0 LEFT OUTER JOIN opdscreen o5 ON o5.vn = ov.vn AND o5.temperature > 0 WHERE ov.vstdate BETWEEN "2007-09-01" AND "2007-09-06" AND ov.main_dep = "010" GROUP BY ov.vstdate การใช้ set@d1 สร้างรายงานที่ใช้เงื่อไขประกาศตัวแปล ตัวอย่างเป็นรายงาน ประเภทการให้บริการ ER set @d1 = '2008-01-01'; set @d2 = '2008-01-31'; select count(*),b.name from er_regist a left outer join er_emergency_type b on a.er_emergency_type=b.er_emergency_type where vstdate between @d1 and @d2 group by b.name union all select count(*),b.name from er_regist a left outer join er_dch_type b on a.er_dch_type =b.er_dch_type where vstdate between @d1 and @d2 group by b.name union all select count(*),c.name from er_regist a left outer join er_period c on a.er_period =c.er_period where vstdate between @d1 and @d2 group by c.name union all select count(*),d.name from er_regist a left outer join er_pt_type d on a.er_pt_type =d.er_pt_type where vstdate between @d1 and @d2 group by d.name ระยะเวลารอคอยเฉลี่ย (แบบแยก select * ,sec_to_time(time_to_sec(service12)-time_to_sec(service3)) as totaltime from service_time where vstdate between'2008-05-15' and '2008-05-15' and service12>=service3 order by vstdate,vn asc ระยะเวลารอคอยเฉลี่ย (แบบเฉลี่ย) select sec_to_time(avg(sec_to_time(time_to_sec(service6)-time_to_sec(service12)))) as total_time from service_time s where s.vstdate between "2007-09-30" and "2008-10-01" and s.service12 is not null and s.service6 is not null and s.service12 >= "08:00:00" and s.service6 <= "16:30:30" and s.service6 > s.service12 ระยะเวลารอคอยเฉลี่ย (ห้องฟัน) select sec_to_time(avg(sec_to_time(time_to_sec(end_time)-time_to_sec(begin_time)))) as avg_time from dtmain s where s.vstdate between "2008-11-18" and "2008-11-19" and s.end_time is not null and s.begin_time is not null order by vstdate,vn asc การมาตรวจซ้ำ ใน 48 hr select count(hn) as ptcount,hn,pdx from vn_stat where vn in ( select vn from er_regist where vstdate between '2008-05-01' and '2008-05-31') and lastvisit_hour<=48 and pdx not like 'Z%' group by hn,pdx having count(hn)>1 order by vstdate การใช้ If sum count select v.pcode, COUNT(if(d.count_in_year =0,1,null)) as newpt , COUNT(if(d.count_in_year >0,1,null)) as oldpt , count(d.vn) as cc from dt_list d inner join vn_stat v on v.vn=d.vn left join pttype p on v.pttype=p.pttype where v.vstdate between "2008-12-01" and "2008-12-30" and v.aid like "4304%" group by p.pcode select v.pcode, SUM(d.count_in_year =0) as newpt , SUM(d.count_in_year >0) as oldpt , count(d.vn) as cc from dt_list d inner join vn_stat v on v.vn=d.vn left join pttype p on v.pttype=p.pttype where v.vstdate between "2008-12-01" and "2008-12-30" and v.aid like "4304%" group by p.pcode
แปลง VN เป็น วันที่
select vn ,
concat(substr(vn,5,2)) as dd,
concat(substr(vn,3,2)) as mm,
concat('25',lpad(vn,2,0)) as yyyy,
concat(concat(substr(vn,5,2)),'/',concat(substr(vn,3,2)),'/',concat('25',lpad(vn,2,0)))as dmy
from ovst
where vstdate > '2015-01-01'
limit 5
จาก : http://jda-memo.blogspot.com/2014/08/mysql-code-hosxp.html
สมัครสมาชิก:
บทความ (Atom)
คำสั่ง Update patient ของ รพ.
UPDATE patient SET type_area = "4" WHERE chwpart = "31" AND amppart = "11" AND tmbpart = "02" AND...
-
คำสั่ง MySQL ที่น่ารู้และ code จำเป็นในการสร้างรายงาน HOSXP คำสั่ง MySQL คำสั่งตรวจสอบ show master status; ตรวจสอบการทำงานของ m...
-
คำสั่ง mysql เกี่ยวกับ ระบบงานห้องคลอด 1.เลขที่ หนังสือรับรองการเกิด document_born_id select * from serial where name like "%bor...
-
เมื่อต้องการข้อมูล parameter ของรายงานมีแสดงผลให้ใช้ Fuction GetUserParameter(i) ยกตัวอย่าง Value := 'ระหว่างวันที่ '+For...