เพิ่มลายเซ็น hosxp

  • เพิ่มลายเซ็นใน Hosxp

 

sql (ตารางเก็บข้อมูลลายเซ็น)

select signature_jpeg_blob from doctor_signature where doctor_code = '0206' limit 10

ไปที่ : Tools > Report > Report Designer > ค้นหาฟอร์ม 

  • ใบรับรองต่างๆ : ค้นหา Cert
  • แบบฟอร์ม ค้นหา  Report

เข้าไปในแบบฟอร์ม >  #อย่าลืมใส่ HN คนไข้ที่ "value"  มันจะ error > Design Report > Calc > event

#  อย่าลืม ลายเซ็น ต้อง join ตาราง doctor ด้วย Code เสมอ

+' LEFT JOIN doctor_signature ds1 ON ds1.doctor_code = d.code'

 เสร็จแล้ว ไปที่ select ให้ select เอา ds1.signature_jpeg_blob ด้วย

+' opdscreen_fp_type.opdscreen_fp_type_name,ost.name as ovstost,ds1.signature_jpeg_blob '

ต่อไปเพิ่มลายเซ็นที่หน้า Design

  • ใช้ DBimage เพราะไม่ต้อง config code เพิ่ม เหมือนการใช้ image
  • เลือกข้อมูลว่าเป็น pipeline ไหนและใช้ data อะไร
  • ปรับขนาดโดย คลิกขวาที่ image เลือก stretch ให้ขนาดเล็กลง
  • จากนั้นก็ปรับขนาดให้พอดีกับหน้ากระดาษ
  • # ห้ามลบ variable อะไรทั้งนั้นเพราะ ทุกอย่างถูกเขียนเชื่อมโยงกันหมด จะเกิด error

# ตัวอย่าง code opd card BACKUP

 
_vn1 := GetUserParameter(0);
_vn := _vn1;
_hn := GetSQLStringData('select hn from ovst where vn ="'+_vn+'" ');
vn_lists := GetSQLSubQueryData('select vn from ovst where vn in("'+_vn+'") ');
if vn_lists = '' then vn_lists := '"A999999999"';
 
if _vn = '' then _vn := '"A999999999"';
 
doctor_list := GetSQLSubQueryData('select distinct doctor_code '
+' from( '
+' select doctor_code from patient_history_hpi where vn = "'+_vn+'" '
+' union all select doctor from ovstdiag where vn = "'+_vn+'" '
+' union all select doctor_code from ovst_doctor_diag where vn = "'+_vn+'" '
+' union all select doctor from opitemrece where vn = "'+_vn+'" '
+' union all select doctor from dtmain where vn = "'+_vn+'" '
+' union all select doctor_code from opdscreen_doctor_pe where vn = "'+_vn+'" '
+' ) as cc '
+' where doctor_code is not null ');
 
{
repeat
showmessage('เลือกวันที่ต้องการพิมพ์ข้อมุล');
vn_lists := GetMultipleList('select to_char(vstdate,"yyyymmdd") from ovst where hn = "'+_hn+'" order by vstdate desc limit 100 ');
until vn_lists <> '';
 
vn_lists := GetSQLSubQueryData('select vn from ovst where hn = "'+_hn+'" and to_char(vstdate,"yyyymmdd") in('+vn_lists+') ');
}
ChangeReportSQL(' SELECT '
+' ovst.vn, concat("200",ovst.vn) as barvn, ovst.hn, ovst.vstdate, ovst_seq.hospital_department_id, '
+' hospital_department.name AS hospital_department_name, ovst.pttype, ovst.pttypeno, '
+' case when pt.bloodgrp <>"" then pt.bloodgrp '
+' when pt2.bloodgrp <>"" then pt2.bloodgrp '
+' else "ไม่ทราบ" end as bloodgrp, '
 
+' coalesce(pt.bloodgroup_rh,pt2.bloodgroup_rh) bldgr_rh, '
+' coalesce(pt.mobile_phone_number,pt2.mobile_phone_number) pt_mobile, '
+' coalesce(pt.hometel,pt2.hometel) pt_hometel, '
+' ovst.spclty, coalesce(pt.birthday,pt2.birthday) as birthday, coalesce(pt.cid,pt2.cid) cid, '
+' Concat(pt2.pname, pt2.fname, " ", pt2.lname) AS pt_name, '
// +' case when pt.pname <> "" then Concat(pt.pname, pt.fname, " ", pt.lname) else Concat(pt2.pname, pt2.fname, " ", pt2.lname) end AS pt_name, '
+' opdscreen.bpd,opdscreen.bps,opdscreen.bw, opdscreen.cc,opdscreen.hr, opdscreen.pe, '
+' opdscreen.pulse, opdscreen.temperature,opdscreen.rr,opdscreen.height, opdscreen.fbs, '
+' opdscreen.bmi,opdscreen.tg, opdscreen.pregnancy,opdscreen.tc,opdscreen.ast, '
+' opdscreen.ldl, opdscreen.symptom, opdscreen.alt,opdscreen.walk_id, opdscreen.peak_flow,opdscreen.pe, '
//+'opdscreen.pe_rtf '
+' opdscreen.breast_feeding,opdscreen.cradle_lie,opdscreen.cholesterol,opdscreen.waist, opdscreen.pain_score,opdscreen.lmp_date,opdscreen.o2sat, '
+' opdscreen_fbs.dtx1, opdscreen_fbs.dtx2, opdscreen.opdscreen_patient_type_id, '
+' smoking_type.smoking_type_name, drinking_type.drinking_type_name,pttype1.name AS pttypename, '
+' case when pt.sex = "1" or mct.menstrual_cycle_type_name is null then "N/A" else mct.menstrual_cycle_type_name end AS menstrual_cycle_type_name,'
+' vst.vaccine_screen_type_name, dst.development_screen_type_name,'
+' spclty.name AS spclty_name,ovst.vsttime, sex2.name AS sexname1, '
 
+' his.pmh as pmh, '
+' his.fh AS fh, '
+' his.sh AS sh, '
+' his.ros AS ros, '
+' Concat("201", ovst.vn) AS vn2, opdscreen.found_allergy,found_allergy_type.found_allergy_type_name, '
+' d.name AS doctor, h1.name AS hospmain,h2.name AS hospsub, '
+' er_pt_type.name AS pt_type, ed.er_accident_type_id, '
+' ed.gcs_e, ed.gcs_m,ed.gcs_v,ed.pupil_l,ed.pupil_l_text, '
+' ed.pupil_r, ed.pupil_r_text, '
+' pt2.informname, '
+' '
{+' case '
+' when pt.ec_fname <> "" then rt.patient_relation_type_name '
+' when pt2.ec_fname <> "" then rt2.patient_relation_type_name'
+' when pt.informname <> "" then pt.informrelation '
+' else pt2.informname end AS patient_relation_type_name, '
+' '
}
+' pt2.informrelation AS patient_relation_type_name, '
{ +' case '
+' when pt.ec_fname <> "" then Concat(pt.ec_fname," ",pt.ec_lname) '
+' when pt2.ec_fname <> "" then Concat(pt2.ec_fname, " ",pt2.ec_lname) '
+' when pt.informrelation <> "" then pt.informname '
+' else pt2.informrelation end AS contact, '
}
+' pt2.informname AS contact, ovst.oqueue, '
+' '
{+' case '
+' when length(t5.full_name) > 0 then Concat(("เลขที่ " || pr5.addrpart), (" หมู่ " || pr5.moopart), t5.full_name) '
+' when length(t4.full_name) > 0 then Concat(("เลขที่ " || pr4.addrpart), (" หมู่ " || pr4.moopart), t4.full_name) '
+' when length(t52.full_name) > 0 then Concat(("เลขที่ " || pr52.addrpart), (" หมู่ " || pr52.moopart), t52.full_name) '
+' when length(t42.full_name) > 0 then Concat(("เลขที่ " || pr42.addrpart), (" หมู่ " || pr42.moopart), t42.full_name) '
+' end AS contact_addr, '
}
+' Concat("เลขที่ ",COALESCE(pr4.addrpart,"")," หมู่ " , COALESCE(pr4.moopart,""), COALESCE(t4.full_name,"")) as contact_addr,'
+' '
{+' CASE '
+' when coalesce(pr5.phone, "") <> "" or coalesce(pr5.mobile, "") <> "" THEN concat(pr5.phone, " ", pr5.mobile)'
+' when coalesce(pr4.phone, "") <> "" or coalesce(pr4.mobile, "") <> "" THEN concat(pr4.phone, " ", pr4.mobile)'
+' when coalesce(pr42.phone, "") <> "" or coalesce(pr42.mobile, "") <> "" THEN concat(pr42.phone, " ", pr42.mobile)'
+' when coalesce(pr52.phone, "") <> "" or coalesce(pr52.mobile, "") <> "" THEN concat(pr52.phone, " ", pr52.mobile)' }
+' COALESCE(pr4.mobile,pr4.phone) AS contact_phone, '
+' opdscreen.pregnancy, '
+' opdscreen.breast_feeding,opdscreen_fp.g,opdscreen_fp.p,opdscreen_fp.a,opdscreen_fp.last_child_age_y,opdscreen_fp.last_child_age_m,opdscreen_fp.last_child_age_d, '
+' opdscreen_fp_type.opdscreen_fp_type_name,ost.name as ovstost,ds1.signature_jpeg_blob '
+' FROM ovst '
+' LEFT JOIN ovst_tx_doctor otd ON otd.vn = ovst.vn '
+' LEFT JOIN doctor dds ON dds.code = otd.doctor_code '
+' LEFT JOIN ovst_seq ON ovst_seq.vn = ovst.vn '
+' LEFT JOIN ovstost ost ON ost.ovstost = ovst.ovstost '
+' LEFT JOIN hospital_department ON hospital_department.id = ovst_seq.hospital_department_id '
+' LEFT JOIN ovst_patient_record pt ON pt.vn = ovst.vn '
+' LEFT JOIN patient pt2 ON pt2.hn = ovst.hn '
+' LEFT JOIN opdscreen ON ovst.vn = opdscreen.vn '
+' LEFT JOIN opdscreen_fbs ON opdscreen_fbs.vn = opdscreen.vn '
+' LEFT JOIN opdscreen_fp ON opdscreen_fp.vn = opdscreen.vn '
+' LEFT JOIN opdscreen_fp_type ON opdscreen_fp_type.opdscreen_fp_type_id = opdscreen_fp.opdscreen_fp_type_id '
+' LEFT JOIN smoking_type ON smoking_type.smoking_type_id = opdscreen.smoking_type_id '
+' LEFT JOIN drinking_type ON drinking_type.drinking_type_id = opdscreen.drinking_type_id '
+' LEFT JOIN pttype pttype1 ON ovst.pttype = pttype1.pttype '
+' LEFT JOIN spclty ON ovst.spclty = spclty.spclty '
+' LEFT JOIN found_allergy_type ON found_allergy_type.found_allergy = opdscreen.found_allergy '
+' '
+' LEFT JOIN sex ON pt.sex = sex.code '
+' LEFT JOIN thaiaddress ta ON ta.chwpart = pt.chwpart AND pt.amppart = ta.amppart AND pt.tmbpart = ta.tmbpart AND ta.codetype = "3" '
+' LEFT JOIN patient_relation_type rt ON pt.ec_relation_type_id = rt.patient_relation_type_id '
+' LEFT JOIN patient_relation_address pr4 ON pt2.hn = pr4.hn AND pr4.patient_relation_type_id = 4 '
+' LEFT JOIN thaiaddress t4 ON t4.chwpart = pr4.chwpart AND pr4.amppart = t4.amppart AND pr4.tmbpart = t4.tmbpart AND t4.codetype = "3" '
+' LEFT JOIN patient_relation_address pr5 ON pt.hn = pr5.hn AND pr5.patient_relation_type_id = 5'
+' LEFT JOIN thaiaddress t5 ON t5.chwpart = pr5.chwpart AND pr5.amppart = t5.amppart AND pr5.tmbpart = t5.tmbpart AND t5.codetype = "3" '
+' '
+' LEFT JOIN sex sex2 ON pt2.sex = sex2.code '
+' LEFT JOIN thaiaddress ta2 ON ta2.chwpart = pt2.chwpart AND pt2.amppart = ta2.amppart AND pt2.tmbpart = ta2.tmbpart AND ta2.codetype = "3" '
+' LEFT JOIN patient_relation_type rt2 ON pt2.ec_relation_type_id = rt2.patient_relation_type_id '
+' LEFT JOIN patient_relation_address pr42 ON pt2.hn = pr42.hn AND pr42.patient_relation_type_id = 4 '
+' LEFT JOIN thaiaddress t42 ON t42.chwpart = pr42.chwpart AND pr42.amppart = t42.amppart AND pr42.tmbpart = t42.tmbpart AND t42.codetype = "3" '
+' LEFT JOIN patient_relation_address pr52 ON pt2.hn = pr52.hn AND pr52.patient_relation_type_id = 5'
+' LEFT JOIN thaiaddress t52 ON t52.chwpart = pr52.chwpart AND pr52.amppart = t52.amppart AND pr52.tmbpart = t52.tmbpart AND t52.codetype = "3" '
+' '
+' LEFT JOIN patient_history his ON his.hn = ovst.hn '
+' LEFT JOIN ovstdiag odx ON ovst.vn = odx.vn AND odx.diagtype = "1" '
+' LEFT JOIN doctor d ON d.code = odx.doctor AND d.position_id in (1,2) '
+' LEFT JOIN hospcode h1 ON h1.hospcode = ovst.hospmain '
+' LEFT JOIN hospcode h2 ON h2.hospcode = ovst.hospsub '
+' LEFT JOIN er_pt_type ON er_pt_type.er_pt_type = ovst_seq.er_pt_type '
+' LEFT JOIN er_nursing_detail ed ON ed.vn = ovst.vn '
+' LEFT JOIN menstrual_cycle_type mct ON mct.menstrual_cycle_type_id = opdscreen.menstrual_cycle_type_id'
+' LEFT JOIN vaccine_screen_type vst ON vst.vaccine_screen_type_id = opdscreen.vaccine_screen_type_id'
+' LEFT JOIN development_screen_type dst ON dst.development_screen_type_id = opdscreen.development_screen_type_id'
+' LEFT JOIN doctor_signature ds1 ON ds1.doctor_code = d.code'
+' WHERE coalesce(ovst.vn,"") in ('+vn_lists+') order by ovst.vn desc LIMIT 1');
 
hospcode := GetSQLStringData('select hospitalcode from opdconfig');
hospcodeAddr := GetSQLStringData(' select Concat( CASE '
+' WHEN (addrpart IS NULL OR addrpart = "") '
+' THEN "-" '
+' ELSE addrpart '
+' END, " หมู่ ", CASE '
+' WHEN (moopart IS NULL OR moopart = "") '
+' THEN "-" '
+' ELSE moopart '
+' END, " ",tt.full_name, " ", Coalesce(h.po_code, "")) AS FullAddress '
+' from hospcode h'
+' left join thaiaddress tt on concat(h.chwpart,h.amppart,h.tmbpart)=tt.addressid'
+' where h.hospcode = "'+hospcode+'"' );
LnHospcodeAddr.Text := hospcodeAddr;
LnHospcodeAddr1.Text := hospcodeAddr;
 
LnHospcode1.Text := hospitalname;
LnHospcode2.Text := hospitalname;
 
if GetSQLintegerData('select count(*) from patient_image where hn = "'+DBPipeline['hn']+'"')>0 then
img_hn := DBPipeline['hn']
else
img_hn := '999999999';
 
LoadPPImageFromSQL(Image1,'select app_icon_80x80_png from opdconfig');
LoadPPImageFromSQL(Image2,'select app_icon_80x80_png from opdconfig');
LoadPPImageFromSQL(Image3,'select image from patient_image where hn = "'+img_hn+'"');
LoadPPImageFromSQL(Image4,'select image from patient_image where hn = "'+img_hn+'"');
 
opd_allergy := GetSQLSubQueryData('select concat(agent,":"||symptom) from opd_allergy where hn="'+_hn+'" ');
chk_allergy := GetSQLIntegerData('select count(*) from opd_allergy where hn="'+_hn+'" ');
patient_address := GetPatientAddress(_hn);
 
reportname := getReportName+' v.' +GetSQLStringData(' select report_version from reporttemplate where name = "'+GetReportName+'"');
 
ChangeDBPipeLineLink8SQL(' select p.*,o.name from patient_log p '
+' left outer join opduser o on o.loginname = p.staff '
+' where p.hn = "'+_hn+'" order by p.log_datetime desc limit 1 ' );
if DBPipeLineLink8['name'] <> '' then
patient_log := DBPipeLineLink8['name'] +' วันที่ '+FormatThaidate('d mmm yy',DBPipeLineLink8['log_datetime'])
else
patient_log := '-';
 
{
doctor_name := StringReplaceAll(GetSQLSubQueryData(' select distinct d.name'
+' from ovst od, doctor d'
+' where od.sign_doctor = d.code and vn = "'+_vn1+'" '
+' and d.position_id in(1,2,45,54,73) ' ),'''', '', True);
 
nurse_screen := GetSQLStringData('select concat("ผู้ซักประวัติ : ",d.name) as doctorname '
+' from ovst_service_time o '
+' left outer join doctor d on d.code=o.doctor '
+' where o.vn = "'+_vn+'" '
+' and o.ovst_service_time_type_code = "OPD-SCREEN" limit 1' );
}
chk_diag := GetSQLIntegerData('select count(*) from ovstdiag where vn = "'+DBPipeline['vn']+'" and diagtype = "1" ');
doctor_name := GetSQLStringData(' select Concat(d.name," ",d.licenseno)'
+' from ovstdiag od, doctor d'
+' where od.doctor = d.code and vn = "'+DBPipeline['vn']+'"'
+' and od.diagtype = "1" ' );
 
doctor_dx_name := GetSQLStringData(' SELECT Concat(doctor.name," ",doctor.licenseno) from ovst_doctor_diag , doctor '
+' where ovst_doctor_diag.vn = "'+DBPipeline['vn']+'" and ovst_doctor_diag.doctor_code = doctor.code ');
 
LoadPPImageFromSQL(Image5,'select officer_signature_jpeg_blob from officer_signature os,officer ofi,doctor d '
+' where os.officer_id = ofi.officer_id and ofi.officer_doctor_code = d.code and d.name = "'+doctor_name+'"');
 
nurse_screen := GetSQLStringData('select concat("ผู้ซักประวัติ : ",d.name) as doctorname '
+' from opdscreen_cc_list o '
+' left join opduser u on o.staff = u.loginname '
+' left join doctor d on d.code=u.doctorcode '
+' where o.vn = "'+_vn+'" '
+' order by o.update_datetime desc limit 1' );
 
food_allergy := GetSQLStringData('select GROUP_CONCAT(agent) FROM food_allergy fa WHERE hn = "'+DBPipeLine['hn']+'" ');
 
// ------------------------ Region_accident --------------------------------- //
Region_accident.Visible := GetSQLStringData('select vn from er_regist where vn = "'+_vn+'" ') <> '';
er_accident_type_name.text := '';
gcs_e.Text := '';
gcs_v.Text := '';
gcs_m.Text := '';
 
er_accident_type_name.text := GetSQLStringData('select er_accident_type_name from er_accident_type '
+' where er_accident_type_id = "'+DBPipeline['er_accident_type_id']+'"');
 
if DBPipeline['gcs_e'] <> 0 then
gcs_e.Text := GetSQLStringData('select gcs_scale_eye_type_name '
+' from gcs_scale_eye_type where gcs_scale_eye_type_id = "'+DBPipeline['gcs_e']+'" ');
 
if DBPipeline['gcs_v'] <> 0 then
gcs_v.Text := GetSQLStringData('select gcs_scale_verbal_type_name '
+' from gcs_scale_verbal_type where gcs_scale_verbal_type_id = "'+DBPipeline['gcs_v']+'" ');
 
if DBPipeline['gcs_m'] <> 0 then
gcs_m.Text := GetSQLStringData('select gcs_scale_motor_type_name from gcs_scale_motor_type '
+' where gcs_scale_motor_type_id = "'+DBPipeline['gcs_m']+'"');
 
// ------------------------------------------------------------------------ //
 
// ------------------------------ BP วัดซ้ำ------------------------------- //
ChangeDBPipeLineLink8SQL(' select o1.* ,o2.name as staff_name ,k.department'
+' from opdscreen_bp o1 '
+' left outer join opduser o2 on o2.loginname = o1.staff'
+' left outer join kskdepartment k on k.depcode = o1.depcode'
+' where o1.vn = "'+_vn+'" order by o1.screen_date desc,o1.screen_time desc limit 3' );
// ------------------------------------------------------------------------ //
 
// ---------------------------- Region_PE --------------------------------- //
ChangeDBPipeLineLink1SQL(' select oe.doctor_code, concat(d.name,(" ["||d.licenseno||"]")) as doctor_name, '
+' min(case when coalesce(oe.pe_ga,"-")="Y" then "Normal" when coalesce(oe.pe_ga,"-")="N" then "Abnormal" WHEN coalesce(oe.pe_ga,"-") = "-" THEN "ไม่ได้ตรวจ" else "" end) as pe_ga_name, GROUP_CONCAT(oe.pe_ga_text) as pe_ga_text, '
+' min(case when coalesce(oe.pe_heent,"-")="Y" then "Normal" when coalesce(oe.pe_heent,"-")="N" then "Abnormal" WHEN coalesce(oe.pe_heent,"-") = "-" THEN "ไม่ได้ตรวจ" else "" end) as pe_heent_name, GROUP_CONCAT(oe.pe_heent_text) as pe_heent_text, '
+' min(case when coalesce(oe.pe_heart,"-")="Y" then "Normal" when coalesce(oe.pe_heart,"-")="N" then "Abnormal" WHEN coalesce(oe.pe_heart,"-") = "-" THEN "ไม่ได้ตรวจ" else "" end ) as pe_heart_name, GROUP_CONCAT(oe.pe_heart_text) as pe_heart_text, '
+' min(case when coalesce(oe.pe_chest,"-")="Y" then "Normal" when coalesce(oe.pe_chest,"-")="N" then "Abnormal" WHEN coalesce(oe.pe_chest,"-") = "-" THEN "ไม่ได้ตรวจ" else "" end ) as pe_chest_name, GROUP_CONCAT(oe.pe_chest_text) as pe_chest_text, '
+' min(case when coalesce(oe.pe_ab,"-")="Y" then "Normal" when coalesce(oe.pe_ab,"-")="N" then "Abnormal" WHEN coalesce(oe.pe_ab,"-") = "-" THEN "ไม่ได้ตรวจ" else "" end ) as pe_ab_name, GROUP_CONCAT(oe.pe_ab_text) as pe_ab_text, '
+' min(case when coalesce(oe.pe_pv,"-")="Y" then "Normal" when coalesce(oe.pe_pv,"-")="N" then "Abnormal" WHEN coalesce(oe.pe_pv,"-") = "-" THEN "ไม่ได้ตรวจ" else "" end ) as pe_pv_name, GROUP_CONCAT(oe.pe_pv_text) as pe_pv_text, '
+' min(case when coalesce(oe.pe_pr,"-")="Y" then "Normal" when coalesce(oe.pe_pr,"-")="N" then "Abnormal" WHEN coalesce(oe.pe_pr,"-") = "-" THEN "ไม่ได้ตรวจ" else "" end ) as pe_pr_name, GROUP_CONCAT(oe.pe_pr_text) as pe_pr_text, '
+' min(case when coalesce(oe.pe_gen,"-")="Y" then "Normal" when coalesce(oe.pe_gen,"-")="N" then "Abnormal" WHEN coalesce(oe.pe_gen,"-") = "-" THEN "ไม่ได้ตรวจ" else "" end ) as pe_gen_name, GROUP_CONCAT(oe.pe_gen_text) as pe_gen_text, '
+' min(case when coalesce(oe.pe_neuro,"-")="Y" then "Normal" when coalesce(oe.pe_neuro,"-")="N" then "Abnormal" WHEN coalesce(oe.pe_neuro,"-") = "-" THEN "ไม่ได้ตรวจ" else "" end ) as pe_neuro_name, GROUP_CONCAT(oe.pe_neuro_text) as pe_neuro_text, '
+' min(case when coalesce(oe.pe_ext,"-")="Y" then "Normal" when coalesce(oe.pe_ext,"-")="N" then "Abnormal" WHEN coalesce(oe.pe_ext,"-") = "-" THEN "ไม่ได้ตรวจ" else "" end ) as pe_ext_name, GROUP_CONCAT(oe.pe_ext_text) as pe_ext_text, '
//+' string_agg(replace(replace(oe.pe,chr(13)," "),chr(10),""),",") as pe '
+' GROUP_CONCAT(COALESCE(oe.pe,"")) as pe'
+' from opdscreen_doctor_pe oe'
+' left join doctor d on oe.doctor_code = d.code'
+' where oe.vn = "'+_vn+'" '
+' and coalesce(oe.doctor_code,"") in('+doctor_list+') '
+' group by oe.doctor_code, doctor_name' );
 
chk_pe_img := GetSQLIntegerData('select count(*) from pe_xe_image where vn = "'+_vn+'"');
chk_pe := GetSQLIntegerData(' select count(*) from opdscreen_doctor_pe where vn = "'+_vn+'" and coalesce(doctor_code,"") in('+doctor_list+') '
+' and (pe_ga_text <> "" or pe_heent_text <> "" or pe_heart_text <> "" or pe_chest_text<> "" or pe_ab_text <> "" '
+' or pe_pv_text <> "" or pe_pr_text <> "" or pe_gen_text <>"" or pe_neuro_text <> "" or pe_ext_text <> "" or pe<>"")' );
Region_PE.Visible := (chk_pe>0) or (chk_pe_img>0);
{ (DBPipeLineLink1['pe_ga_text'] <> '') or (DBPipeLineLink1['pe_heent_text'] <> '') or (DBPipeLineLink1['pe_heart_text'] <> '')
or (DBPipeLineLink1['pe_chest_text'] <> '') or (DBPipeLineLink1['pe_ab_text'] <> '') or (DBPipeLineLink1['pe_pv_text'] <> '')
or (DBPipeLineLink1['pe_pr_text'] <> '') or (DBPipeLineLink1['pe_gen_text'] <> '') or (DBPipeLineLink1['pe_neuro_text'] <> '')
or (DBPipeLineLink1['pe_ext_text'] <> '') or (DBPipeLineLink1['pe'] <> '') or (chk_pe_img>0);
}
// ------------------------------------------------------------------------ //
 
// ------------------------------ HPI ------------------------------------- //
ChangeDBPipeLineLink11SQL(' select concat(dd.name,(" ["||dd.licenseno||"]")) as doctor_name, GROUP_CONCAT(hpi_text) as pi'
+' from patient_history_hpi hh, doctor dd '
+' where dd.code=hh.doctor_code and dd.position_id in(1,2) '
+' and hh.vn = "'+_vn+'" '
+' and coalesce(dd.code,"") in('+doctor_list+') '
+' group by doctor_name' );
 
// ------------------------------------------------------------------------ //
 
// ---------------------------- Region_Dx --------------------------------- //
chk_dx := GetSQLIntegerData(' select count(*) from ovstdiag where vn = "'+_vn+'" and diagtype = "1" and doctor in('+doctor_list+') ')
+ GetSQLIntegerData(' select count(*) from ovst_doctor_diag where vn = ("'+_vn+'") and coalesce(doctor_code,"") in('+doctor_list+') ');
if chk_dx > 0 then
ChangeDBPipeLineLink2SQL(' SELECT ovstdiag.hn,ovstdiag.vn,ovstdiag.doctor,ovstdiag.diagtype,ovstdiag.icd10,doctor.licenseno, '
+' concat(doctor.name," (",COALESCE(doctor.licenseno,""),") ") AS doctorname,diagtype.name AS DIAGTYPEMANE, '
+' case '
+' when ovstdiag.icd10 in ("Z21","Z206","R75","T742") then "" '
+' when ovstdiag.icd10 between "B200" and "B240" then "" '
+' when ovstdiag.icd10 between "Y0500" and "Y0599" then "" '
+' when LENGTH(ovstdiag.icd10) = 3 then i1.name '
+' when LENGTH(ovstdiag.icd10) = 4 then Concat(i1.name," ",i2.name) '
+' when LENGTH(ovstdiag.icd10) = 5 then Concat(i1.name," ",i2.name," ",i3.name) '
+' end as ICDNAME '
+' FROM ovstdiag '
+' INNER JOIN icd101 i1 ON i1.code = left(ovstdiag.icd10,3) '
+' LEFT JOIN icd101 i2 ON i2.code = left(ovstdiag.icd10,4) '
+' LEFT JOIN icd101 i3 ON i3.code = left(ovstdiag.icd10,5) '
+' LEFT JOIN doctor ON doctor.code = ovstdiag.doctor '
+' INNER JOIN diagtype ON ovstdiag.diagtype = diagtype.diagtype '
+' WHERE 1=1'
+' and ovstdiag.vn = "'+_vn+'" '
+' and coalesce(ovstdiag.doctor,"") in('+doctor_list+') '
+' '
+' union '
+' '
+' SELECT ovst.hn,ovst.vn,dx.doctor_code as doctor, "9" as diagtype, "" as icd10, dc.licenseno, '
+' concat(dc.name," (",COALESCE(dc.licenseno,""),") ") AS doctorname, "Diag text" AS DIAGTYPEMANE, '
+' dx.diag_text as ICDNAME '
+' from ovst, ovst_doctor_diag dx, doctor dc '
+' where ovst.vn = dx.vn and dc.code = dx.doctor_code and ovst.vn = "'+_vn+'" '
+' and coalesce(dx.doctor_code,"") in('+doctor_list+') '
+' ORDER BY diagtype ' )
else
ChangeDBPipeLineLink2SQL(' SELECT "" as hn,"" as vn,"" as doctor,"" as diagtype,"" as icd10,"" as licenseno,"" as doctorname,"" as DIAGTYPEMANE,"" as ICDNAME '
+' union all SELECT "" as hn,"" as vn,"" as doctor,"" as diagtype,"" as icd10,"" as licenseno,"" as doctorname,"" as DIAGTYPEMANE,"" as ICDNAME '
+' union all SELECT "" as hn,"" as vn,"" as doctor,"" as diagtype,"" as icd10,"" as licenseno,"" as doctorname,"" as DIAGTYPEMANE,"" as ICDNAME '
+' union all SELECT "" as hn,"" as vn,"" as doctor,"" as diagtype,"" as icd10,"" as licenseno,"" as doctorname,"" as DIAGTYPEMANE,"" as ICDNAME '
+' union all SELECT "" as hn,"" as vn,"" as doctor,"" as diagtype,"" as icd10,"" as licenseno,"" as doctorname,"" as DIAGTYPEMANE,"" as ICDNAME ');
// ------------------------------------------------------------------------ //
 
// ---------------------------- Region_Rx --------------------------------- //
ChangeDBPipeLineLink3SQL(' SELECT concat("[เหตุผล "||(select right(presc_reason,1) from ovst_presc_ned where opi_guid = o.hos_guid limit 1)) as reason,'
+' case when d.name_print is null then concat(d.name," ",d.strength," ",d.units) else d.name_print end as name_print, '
+' o.qty, concat(doctor.name,(" ["||doctor.licenseno||"]")) as doctor_name, '
+' case when od.usage_lock = "Y" then '
+' COALESCE(od.shortlist,concat(COALESCE(od.usage_line1,"")," ",COALESCE(od.usage_line2,"")," ",COALESCE(od.usage_line3,""))) '
+' else COALESCE(du.shortlist,concat(COALESCE(du.name1,"")," ",COALESCE(du.name2,"")," ",COALESCE(du.name3,""))) end as drugusagename '
+' FROM opitemrece o '
+' JOIN drugitems d ON d.icode = o.icode '
+' left join drugusage du on o.drugusage = du.drugusage'
+' LEFT JOIN opi_dispense od ON od.hos_guid = o.hos_guid'
+' LEFT JOIN doctor ON doctor.code = o.doctor '
+' WHERE VN = "'+_vn+'" '
+' and coalesce(o.doctor,"") in('+doctor_list+') '
+' ');
// ------------------------------------------------------------------------ //
 
// ---------------------------- Region_serv --------------------------------- //
ChangeDBPipeLineLink13SQL(' SELECT case when i.income in("07") then " LAB" when i.income in("08") then " X-Ray" else "ค่าใช้จ่าย" end as income_name, '
+' d.name as serv_name, sum(o.qty) as qty '
+' FROM opitemrece o '
+' join income i on o.income = i.income '
+' left JOIN s_drugitems d ON d.icode = o.icode '
+' WHERE VN = "'+_vn+'" and o.icode not like "1%" '
//+' and o.doctor in('+doctor_list+') '
+' group by i.income, serv_name'
+' order by income_name' );
// ------------------------------------------------------------------------ //
 
// ------------------------- Advice --------------------------------------- //
ChangeDBPipeLineLink4SQL('select concat(" ",o1.opdscreen_advice_item_name," ",COALESCE(o.advice_note,"")) as opdscreen_advice_item_name, '
+' case when position("," in d.name) > 0 then CONCAT(SUBSTR(d.name,position("," in d.name)+1,LENGTH(d.name)),SUBSTR(d.name,1,position("," in d.name)-1)) else d.name end AS doctor_name '
+' from opdscreen_advice o '
+' inner join opdscreen_advice_item o1 on o1.opdscreen_advice_item_id=o.opdscreen_advice_item_id '
+' left join doctor d on d.code = o.doctor_code '
+' where vn = "'+_vn+'" '
+' order by o.opdscreen_advice_id ');
Region_Advice.Visible := DBPipeLineLink4['opdscreen_advice_item_name'] <> '';
Region_advice_fiq.Visible := DBPipeLineLink4['opdscreen_advice_item_name'] = '';
// ------------------------------------------------------------------------ //
 
// ---------------------------- LAB --------------------------------------- //
ChangeDBPipeLineLink5SQL(' SELECT lab_head.form_name,lab_head.hn,lab_head.vn,lab_head.lab_order_number, lab_head.report_time,offi.officer_name '
+' FROM lab_head '
+' LEFT OUTER JOIN lab_order ON lab_order.lab_order_number = lab_head.lab_order_number '
+' LEFT OUTER JOIN doctor on doctor.code = lab_head.doctor_code '
+' LEFT OUTER JOIN officer offi ON offi.officer_login_name = lab_head.reporter_name '
+' WHERE lab_head.vn="'+_vn+'" '
+' and lab_order.confirm = "Y" and lab_order_result <> "" '
// +' and lab_order.lab_items_code not in (select lab_items_code from lab_items '
// +' where (lower(lab_items_name) like "%hiv%" or lower(lab_items_name) like "%cd4%" '
// +' or lower(lab_items_name) like "%cd8%" or lower(lab_items_name) like "%vdrl%") '
// +' and active_status = "Y") '
+' GROUP BY lab_head.form_name,lab_head.vn,lab_head.lab_order_number, lab_head.report_time ');
// ------------------------------------------------------------------------ //
 
// ---------------------------- X-Ray ------------------------------------- //
ChangeDBPipeLineLink6SQL(' SELECT xray_report.confirm_read_film,xray_report.report_doctor, '+
' xray_report.report_text,xray_report.report_rtf,doctor.name, '+
' xray_items.xray_items_name '+
' FROM xray_report '+
' LEFT OUTER JOIN xray_items ON xray_items.xray_items_code = xray_report.xray_items_code '+
' LEFT OUTER JOIN doctor ON doctor.code = xray_report.report_doctor '+
' WHERE xray_report.vn = "'+_vn+'" and confirm_read_film = "Y" ');
// ------------------------------------------------------------------------ //
 
// ---------------------------- Appointment ------------------------------- //
ChangeDBPipeLineLink7SQL(' select o.clinic,o.oapp_id,o.doctor, u.name as app_username,'
+' c.name as clinic_name, d.name as doctor_name, o.hn,o.vstdate,o.nextdate, o.perform_text, '
+' o.nexttime,o.nexttime_end,o.note,o.vn,o.depcode,o.spclty,k.department '
+' from oapp o '
+' left outer join clinic c on c.clinic=o.clinic '
+' left outer join doctor d on d.code=o.doctor'
+' left outer join opduser u on o.app_user = u.loginname'
+' left outer join kskdepartment k on k.depcode = o.depcode '
+' where o.vn = "'+_vn+'" and o.oapp_status_id = "1" '
+' group by o.clinic,o.oapp_id,o.doctor,c.name,d.name , u.name, '
+' o.hn,o.vstdate,o.nextdate,o.nexttime,o.note,o.vn,o.depcode,o.spclty,k.department '
+' order by o.nextdate,o.nexttime ');
// ------------------------------------------------------------------------ //
 
// ------------------------------ Dental ---------------------------------- //
ChangeDBPipeLineLink9SQL(' select "ทันตกรรม" as name,d2.name as dttm_name,d1.ttcode '
+' from dtmain d1 '
+' left outer join dttm d2 on d2.code = d1.tmcode '
+' left outer join doctor d3 on d3.code = d1.doctor '
+' left outer join doctor d4 on d4.code = d1.doctor_helper '
+' where d1.vn = "'+_vn+'" '
+' and coalesce(d1.doctor,"") in('+doctor_list+') '
+'' );
// ------------------------------------------------------------------------ //
 
// ----------------------------- Eye Screen ------------------------------- //
ChangeDBPipeLineLink10SQL('select * from eye_screen where vn="'+_vn+'" ');
// ------------------------------------------------------------------------ //
 
 
// ----------------------------- Nutrition Consult ------------------------------- //
Region_nutri.visible := GetSQLIntegerData(' select count(*)'
+' from nutri_consult nc'
+' left join doctor dc ON dc.code = nc.doctor_code'
+' left join nutri_consult_screen ncs ON ncs.nutri_consult_id = nc.nutri_consult_id'
+' left join doctor ds ON ds.code = ncs.doctor_code'
+' left join nutri_consult_report nr on nc.nutri_consult_id = nr.nutri_consult_id'
+' left join doctor dr ON dr.code = nr.doctor_code'
+' where nc.vn = "'+_vn+'" ') > 0;
// ------------------------------------------------------------------------ //
 
ChangeDBPipeLineLink15SQL('select * from reporttemplate where name = "'+GetReportName+'"');
LnLogin.Caption := 'ผู้พิมพ์ : '+GetSQLStringData('select officer_name from officer '
+' where officer.officer_login_name = "'+GetCurrentUser+'" ');
LnPrinterName.Caption := 'พิมพ์จากเครื่อง '+GetSQLStringData('select computername '
+' from onlineuser where onlineid = "'+GetOnlineID+'" ')
+' วันที่พิมพ์ '+FormatThaiDate('dd mmmm yyyy เวลา hh:mm น.',CurrentDateTime);
 
ReportVersion.Caption := GetReportName+' v.'+DBPipeLineLink15['report_version'];
ReportUpdate.Caption := 'ปรับปรุงเอกสาร '+FormatThaiDate('d mmm yy',DBPipeLineLink15['last_update']);
 
vaccine := 0;
Region_vaccine.visible := GetSQLIntegerData('select count(*) from ovst_vaccine '
+' where vn = "'+_vn+'"') > 0;
 
Memo14.text := '';
Memo14.text := GetSQLStringData('select GROUP_CONCAT(cc.cc_persist_disease) as cc_persist_disease '
+' from (select cc_persist_disease from opd_ill_history where hn = "'+_hn+'" '
+' union all '
+' select clinic.name from clinicmember '
+' join clinic on clinicmember.clinic = clinic.clinic '
+' where clinicmember.hn = "'+_hn+'") as cc ');
if trim(Memo14.text) = '' then Memo14.text := ' - ';
 
 
Memo16.text := '';
Memo16.text := GetSQLStringData('select GROUP_CONCAT(consult_question||"\n"||consult_reply) as consult '
+' from doctor_consult '
+' join er_regist on er_regist.vn = doctor_consult.vn '
+' where doctor_consult.vn = "'+_vn+'" ');
if trim(Memo16.Text) = '' THEN Label128.Visible := FALSE;
Region_PE_DENTAL.Visible := FALSE;
cc_dtmain := GetSQLIntegerData('select count(*) from dtmain where vn = "'+_vn+'" ');
if cc_dtmain > 0 THEN
Begin
Region_PE.Visible := FALSE;
Region_PE_DENTAL.Visible := TRUE;
Memo19.Text := '';
Memo19.Text := GetSQLStringData('select GROUP_CONCAT(note) FROM dtmain WHERE vn = "'+_vn+'" ');
if trim(Memo19.Text) = ''
THEN Region_PE_DENTAL.Visible := FALSE;
END;
 
 
end;