วันศุกร์ที่ 13 มิถุนายน พ.ศ. 2557

คำสั่ง SQL เบื้องต้น

ผมไปเจอในเว็บคิดว่ามีความจำเป็นต้องใช้เลยเก็บเอามาไว้อ่านกัน
 
เครดิตจาก  http://natsusencho.blogspot.com/2012/08/sql-language.html  ครับ

คำสั่ง SQL เบื้องต้น by natsu


ก่อนอื่นต้องบอกเลยครับว่ามันไม่ได้ดีมากนักสำหรับหน้าเวปนี้เพราะผมอ่านหนังสือและสรุปอย่างคร่าวๆ แล้วรูปแบบมันอาจจะเพี้ยนๆ เพราะผมเขียนใน PAGE แล้วเอา COPY and PASTE ลงเล้ย แบบไม่แก้ไขอันใด tab มั่วไปหมด ถ้าผิดพลาดประการใดต้องขออภัยด้วยครับ


ภาษา SQL นั้นไม่เป็น case sensitive (ตัวเล็ก ตัวใหญ่มีค่าเท่ากัน) และในแต่ละคำสั่งจะถูกปิดด้วย ; (semi-colon) 
การเข้าใช้ให้เราเปิด cmd ขึ้นมาและ
$ mysql -u root -p
จากนั้นใส่ password ลงไป
จะเข้าสู่การใช้ mysql >
ถ้าต้องการออกใช้
mysql > quit
mysql > show databases; แสดง  databases ทั้งหมดที่เราสร้างขึ้น
mysql > use <ชื่อ database> เป็นการเข้าใช้ database นั้นๆ
mysql > SELECT database(); ดู database ที่เรากำลังใช้อยู่
mysql > show tables; แสดงตารางทั้งหมดที่เราสร้างขึ้นใน database ที่ use
สร้าง DATABASE
mysql > create database  <ชื่อdatabase>;
เช่น create database world;
สร้าง table
mysql > create table <ชื่อtable> (<ชื่อข้อมูล> <ชนิดข้อมูล>, ... );
เช่น create table human (name VARCHAR(20), birth DATE, sex CHAR(1));
ชนิดข้อมูล เช่น
VARCHAR(n) - ข้อมูลชนิด string เก็บแบบ linked list เหมาะสมกับข้อมูลที่มีความยาวที่ไม่แน่นอน
CHAR(n) - ข้อมูลชนิด string เก็บแบบ array เหมาะสมกับข้อมูลที่มีความยาวที่แน่นอน
INT - จำนวนเต็ม
DATE - ข้อมูลชนิดพิเศษของ SQL ใช้เก็บวันที่ มีรูปแบบเป็น YYYY-MM-DD
ดูชื่อและชนิดข้อมูลของแต่ละตาราง
mysql > describe <ชื่อtable>;
การใส่ข้อมูลลงไปใน table
  1. ใช้คำสั่ง load data จากไฟล์ที่เราเตรียมไว้ โดย default จะแบ่งเนื้อหาโดยใช้ tab แบบนี้จะมีปัญหาเรื่องการใช้ข้อมูลชนิด NULL ซึ่งใช้ \N แทน
mysql > load data local infile ‘natsu.txt’ into table pet;
  1. INSERT ใส่ทีละข้อมูล เหมาะกับข้อมูลที่น้อยๆ ที่เราเพิ่มเติมเข้าไป เช่น
mysql > INSERT INTO pet
                    -> VALUES (‘natsusencho’, ‘1992-03-25’, ‘M’);
  1. *ทำ SQL script คือเตรียมไฟล์คำสั่ง sql ไว้แล้วนำมาทำการ source ทีเดวเช่น
  ---- file natsu.sql ----
CREATE TABLE IF NOT EXISTS human (
       name   VARCHAR(20),
       birth DATE, 
sex CHAR(1) );
INSERT INTO human VALUES 
      ( 'NatsuSencho',   '1992-03-25', 'M'),
      ( 'Slime',   '1999-03-03', NULL ),
  ( ‘HeyFemale’ , ‘1993-12-25’ , ‘F’);
----- file natsu.sql -----
หลังจากสร้างเสร็จแล้วก้ลองใช้คำสั่ง
mysql > source natsu.sql;
ก็จะได้ตาราง world หน้าที่มีข้อมูล 3 ตัว
create table IF NOT EXISTS human
คำว่า IF NOT EXISTS หมายถึงการสร้าง table นี้ถ้ายังไม่มี table นี้ ถ้ามีแล้วก็ไม่ต้องสร้าง
มีสร้างก็ต้องมีลบ การลบ table ใช้คำสั่ง
mysql > DELETE FROM <ชื่อtable>;
หลังจากที่สร้างเป็นแล้วต้องสามารถแก้ไขข้อมูลได้
mysql > UPDATE <ชื่อtable> 
SET <ชื่อข้อมูล> = <ข้อมูลใหม่>
WHERE <เงื่อนไขอื่นๆ>;
เช่น UPDATE human SET name = ‘HeyGirl’ WHERE name = ‘HeyFemale’;
การสืบค้นข้อมูล
SELECT <สิ่งที่ต้องการ>
FROM   <ชื่อtable>
WHERE <เงื่อนไขอื่นๆ>
เช่นต้องการชื่อของข้อมูลในตาราง human ที่มีมีเพศชาย
SELECT name
FROM   human
WHERE sex = ‘M’; 
ต้องการดูข้อมูลทั้งหมดในตาราง human [* คือทั้งหมด]
SELECT *
FROM   human;
ซึ่งการกำหนดเงื่อนไขนั้นเราสามารถใช้ตัวแปรทางคณิตศาสตร์ตรรกะ มาช่วยได้เช่น
AND - และ OR - หรือ
< - น้อยกว่า > - มากกว่า
<= น้อยกว่าหรือเท่ากับ
>= มากกว่าหรือเท่ากับ
<> ไม่เท่ากับ
UNION - การนำ 2 ตารางมาเชื่อมต่อกันตัดตัวซ้ำ
  UNION ALL - การนำ 2 ตารางมาเชื่อมกันโดยไม่ตัดตัวซ้ำ
INTERSECT - ข้อมูลที่ซ้ำกัน
DISTINCT คือการตัดตัวที่ซ้ำกันออก
เช่น SELECT DISTINCT sex
FROM   human;
ORDER BY เรียงลำดับข้อมูล การจัดกลุ่มข้อมูล
เรียงลำดับจากมากไปน้อย (descending order)
เช่น SELECT *
FROM   human
ORDER BY name;
เรียงลำดับจากน้อยไปมาก (descending order)
เช่น SELECT *
FROM   human
ORDER BY name DESC;
ถ้าต้องการมากกว่าอันนึงก็ย่อมได้
เช่น SELECT *
FROM   human
ORDER BY name , sex DESC ;
แบบนี้จะจัดตามชื่อแบบ ascending ก่อนแล้วจะมาจัดเพศแบบ descending ทีหลัง
การคำนวณเกี่ยวกับวันที่
ตัวแปร DATE เป็น string ที่มีการเก็บเป็นรูปแบบ YYYY-MM-DD ตัวแปรชนิด DATE สามารถนำมาเทียบค่ากันได้ในระดับ ASCII
CURDATE() จะเป็น function ที่ส่งค่าออกมาเป็นข้อมูลรูปแบบ DATE (YYYY-MM-DD)
YEAR(<ข้อมูลชนิดdate>) ส่งค่าออกมาเป็นข้อมูลรูปแบบของปี (YYYY)
MONTH(<ข้อมูลชนิดdate>) ส่งค่าออกมาเป็นข้อมูลรูปแบบของเดือน (MM)
DAY(<ข้อมูลชนิดdate>)  ส่งค่าออกมาเป็นข้อมูลรูปแบบของวัน (DD)
RIGHT(<ข้อมูลชนิดstring>, <จำนวนตัวเลข>) ส่งค่าออกมาจำนวนเท่ากับที่เราต้องการตัดออกมาจาก string นั้นๆ โดยเริ่มนับจากทางขวา
LEFT(<ข้อมูลชนิดstring>, <จำนวนตัวเลข>) ส่งค่าออกมาจำนวนเท่ากับที่เราต้องการตัดออกมาจาก string นั้นๆ โดยเริ่มนับจากทางซ้าย
ตัวอย่าง
ex1. ต้องการปีของวันปัจจุบัน YEAR( CURDATE() )
ex2. ต้องการเดือนและวันของปัจจุบัน RIGHT( CURDATE(),5 )
[5 ในที่นี้คือนับจากทางขวามือมา YYYY-MM-DD ก็จะได้ ​MM-DD มา]
การใช้ตัวแปร NULL ในเงื่อนไข
ใช้คำสั่ง xxx IS NOT NULL เช่นต้องการดูสิ่งมีชีิวิตที่ไม่มีเพศ
SELECT *
FROM   human
WHERE sex IS NOT NULL;
การตั้งชื่อเป็นชื่อที่เราต้องการ
หมายถึงเวลา select บางทีคนทั่วไปอาจจะไม่เข้าใจว่าคืออะไร เราจึงมีคำสั่ง AS ช่วย เช่น
SELECT name AS ‘NAME-SURNAME’
FROM   human;
COUNT การนับจำนวน + GROUP BY การจัดกลุ่ม
COUNT ใช้ในการนับจำนวนของตารางต่างๆ จะใช้คู่กับ GROUP BY ได้ดีเพราะจะช่วยในการจัดกลุ่มชุดข้อมูลได้ดีขึ้น
SELECT <อื่นๆ> COUNT(*)
FROM <ชื่อtable>
WHERE <เงื่อนไข>
GROUP BY <จัดกลุ่มโดยใช้อะไร>
เช่นต้องการนับจำนวนคนในแต่ละเพศ
SELECT sex , COUNT(*)
FROM   human
GROUP BY sex;
SET การกำหนดตัวแปร
SET @<ชื่อตัวแปร> = <ค่า>
เช่น  SET @A1 = ‘Natsu Sencho’;
SET @A2 = ‘1999-09-09’;
การใช้คำสั่ง JOIN
การ JOIN คือการนำตารางที่มีความสัมพันธ์ของข้อมูลในแต่ละฟิลมาเชื่อมโยงกัน
การ JOIN มี 2 แบบคือ
1. INNER JOIN
2. OUTER JOIN  |--- LEFT JOIN
|--- RIGHT JOIN
INNER JOIN
คือการ JOIN โดยไม่สนใจค่า NULL จะดูเพียงตัวที่เหมือนกันเท่านั้น
สมมติมีตาราง 2 อันชื่อ Ltable และ ​Rtable นำมา JOIN กันโดยมีข้อมูลที่ซ้ำกันคือ id
-- JOIN โดยใช้ ON
SELECT *
FROM Ltable INNER JOIN Rtable ON Ltable.id = Rtable.id;
-- หรือ JOIN โดยใช้ USING
SELECT *
FROM Ltable INNER JOIN Rtable USING (id);
กรณีพิเศษที่ตัวแปรหรือชื่อ Column ซ้ำกันก็สามาใช้ NATURAL JOIN ได้ อย่างในที่นี้เรารุ้ว่า id นั้นซ้ำกันเราก็ไม่ต้องใส่เงื่อนไขใดๆ แต่ใช้ Natural Join เข้ามาช่วยโดย
SELECT *
FROM Ltable NATURAL JOIN Rtable;
OUTER JOIN
  • LEFT JOIN
คือการ JOIN โดยใช้ตัวทางซ้ายเป็นหลักคือ จะแสดงตัวทางซ้ายทุกตัวและนำข้อมูลขวามาเชื่อม
SELECT *
FROM Ltable LEFT JOIN Rtable ON Ltable.id = Rtable.id;
  • RIGHT JOIN
คือการ JOIN โดยใช้ตัวทางขวาเป็นหลักคือ จะแสดงตัวทางขวาทุกตัวและนำข้อมูลขวามาเชื่อม
SELECT *
FROM Ltable RIGHT JOIN Rtable ON Ltable.id = Rtable.id;
นอกจากวิธีการ JOIN ยังมีวิธีที่เรียกว่า Cartesian Product ซึ่งไม่ได้อทิบายไว้ในทีนี้
ถ้ามีโอกาศจะนั่งทำตัวอย่างให้ดูให้เห็นได้ชัดกว่านี้นะครับ แต่ผมสรุปแบบคร่าวๆ ให้พอดู
รวมคำศัพท์คำสั่งที่เจอเพจนี้
CREATE สร้างdatabase, table
INSERT ใส่ข้อมูล
UPDATE อัพเดตข้อมูล
SELECT ต้องการจะดูอะไรบ้าง
FROM จากที่ไหน
WHERE เงื่อนไขอย่างไร
COUNT(*) นับจำนวนของฟิลข้อมูล
GROUP BY จัดกลุ่มข้อมูล
ORDER BY เรียงลำดับข้อมูลโดย
JOIN เชื่อมตาราง
DISTINCT ตัดตัวซ้ำ
AS ใช้คำใหม่ให้กระทัดรัดขึ้น
SET กำหนดตัวแปร
CURDATE() วันที่ปัจจุบัน
YEAR() ปี
MONTH() เดือน
DAY() วัน
RIGHT() ตัดคำจากทางขวา
LEFT() ตัดคำจากทางซ้าย
* ทั้งหมด

อ้างอิง : เอกสารประกอบการสอนวิชา Databases โดยอาจารย์จิระ 2012 มหาวิทยาลัยบูรพา

วันอังคารที่ 4 มีนาคม พ.ศ. 2557

การเพิ่มหัวหน้าฝ่าย/งาน โปรแกรม P4P สวนปรุง

เพิ่มหัวหน้าฝ่ายงาน กรณีต้องการส่งหัวหน้าฝ่ายหัวหน้างาน อันนี้ต้องตกลงกันว่าจะให้ส่งไปที่ใครครับ สำหรับให้หัวหน้าตรวจสอบข้อมูล p4p ได้ครับ







วันพุธที่ 26 กุมภาพันธ์ พ.ศ. 2557

จำนวนผู้ป่วยที่คง Admit ต่อวัน

วันนี้ได้รับการขอรายงานจากฝ่ายการพยาบาลเรื่อง  ขอจำนวนผู้ป่วยที่ Admit เฉลี่ยต่อวัน  ปีงบประมาณ 2554 - 2556  คิดอยู่นานก็ทำไม่ได้ซักที สุดท้ายต้องพึ่ง ใช้กำลังคนหมู่มากเข้ามาช่วย   มีหลายๆ ท่านเข้ามาแนะนำและให้คำช่วยเหลือคนไทยไม่แล้งน้ำใจจริงๆ  อิๆ

สุดท้ายมีพี่   วรเวทย์ เอี่ยมพร Remote มาแนะนำครับ  น้ำใจช่างประเสริฐแท้  คำสั่งตามนี้ครับ  

ตัวอย่างคำสั่ง  ดึงข้อมูล  จำนวนผู้ป่วยคง Admit ต่อวัน  ดึงรายงาน จาก Hosxp ครับลองเอาไปทดสอบดูครับว่าถูกต้องหรือเปล่าครับ

select a.admdate
,(select count(*) from ipt where regdate=a.admdate) 'admit'
,(select count(*) from ipt where dchdate=a.admdate) 'dch'
,(select count(*) from ipt where regdate<=a.admdate and (dchdate>a.admdate or dchdate is null)) 'Stay'
from (select i.regdate 'admdate'
from ipt i
where i.regdate between '2014-1-1' and '2014-1-31'
group by i.regdate) a


ขอบคุณน้ำใจจากเครือข่ายทุกท่านครับ ที่ให้ความช่วยเหลือ


วันพฤหัสบดีที่ 1 สิงหาคม พ.ศ. 2556

วิธีการส่งออกข้อมูล 43 แฟ้ม hosxp สำหรับรพ.จิตเวชฯ

1.  ตั้งบัญชีหมู่บ้าน 0  ที่บัญชี  1 (เนื่องจากถ้าไม่ตั้งข้อมูลจะไม่แสดง เนื่องจากเวลาโอนจะโอนข้อมูลผู้ป่วยเข้าหมู่บ้าน 0 นอกเขตรับผิดชอบ)




2. ใช้ Tools Super P2P  ของอาจารย์เจมส์ โอน Patient ไปตาราง Person (เคยทดสอบของด่านซ้าย ข้อมูลนำเข้าไม่หมดอาจจะเกิดจากปัญหาเรื่องการมีรหัส CID ซ้ำ)


3. เข้าไปตรวจสอบตรง Person_address ว่ามีข้อมูลหรือไม่  ถ้ามีให้เช็คว่าตรงหรือไม่  ถ้าไม่ตรงให้ลบข้อมูลออกทั้งหมด





4.  ใช้คำสั่ง sql   เพื่อดึงข้อมูลที่อยู่มาจากตาราง patient   แล้วส่งออก




5.  ใช้โปรแกรมนำเข้าข้อมูล ที่ตาราง person_address
ุ6.  ลองส่งออกข้อมูล 43 แฟ้มดูครับ

วันศุกร์ที่ 26 กรกฎาคม พ.ศ. 2556

แก้ icon หน้าจอเพื้ยน

ผมเจอปัญหา ICon หน้าจอเพื้ยนเนื่องจากเครื่องโดนไวรัส Icon จะแสดงเป็นสีขาว  คนหา  วิธีการแก้ ตามนี้ครับ
http://www.sevenforums.com/tutorials/3606-shortcut-arrow-change-remove-restore.html

วันอังคารที่ 25 มิถุนายน พ.ศ. 2556

เพิ่มหัตถการผู้ป่วยในไม่แสดง

มีน้องโทรมาถามผมเรื่องการเพิมหัตถการผู้ป่วยใน  แล้วเวลาค้นหาไม่สามารถค้นหาได้ ไม่เจอหัตถการที่เพิ่ม   ลองทำตามนี้ดูครับ

เข้าไปที่สายฟ้า แล้วเลือก  ipt_oper_code  ตรง active_status ให้ใส่ Y  แล้วกดอัพเดทครับ



วันจันทร์ที่ 27 พฤษภาคม พ.ศ. 2556

การปัญหาสั่ง Remet ไม่ได้ ไม่แสดงรายการยา

ผมได้รับแจ้งเรื่องห้องแพทย์ไม่สามาถสั่ง Remet ยาไม่ได้รายการยาไม่แสดง  ผมจึงได้เข้าไปตรวจสอบพบปัญหาคือ ตามภาพครับ คือรายการยาไม่แสดง  เลยทำให้สั่ง Remet ไม่ได้

การแก้ปัญหาคือ  ไม่ได้ติ๊กเลือกช่อง ยา  ทำให้รายการยาไม่แสดง แล้วก็ไม่สามารถสั่งรายการได้ตาม  ทำตามภาพครับแล้วก็สามารถดูรายการยา แล้วก็ Remet ได้เองครับ  

คลิ๊กเลือกที่ ยา  ที่นี้รายการยาก็จะแสดงแล้วก็สามารถสั่ง Remet ได้ เป็นไงครับง่ายไหมครับ


วันศุกร์ที่ 17 พฤษภาคม พ.ศ. 2556

วันที่ไฟฟ้าดับ...

เวลาประมาณ 10.30 ผมได้รับโทรศัพท์ เรื่องรพ.จะตัดไฟฟ้า เวลา 12.00 - 13.30  เนื่องจากจะมีการติดตั้งเครื่องกำเนิดไฟฟ้าใหม่ (ในใจว่าแม่งมาำทำอะไรตอนนี้) เลยต้องถามไปว่าจะหยุดได้เหรอคนไข้ก็เยอะ  เพราะกลัวไม่สามารถใช้ระบบได้ทำให้บริการผู้ป่วยไม่ได้  ช่างจึงได้แจ้งว่าได้ติดต่อการไฟฟ้าเพื่อทำการตัดไฟฟ้า   จึงได้แจ้งให้ช่างให้ติดต่อประสานงานกับหัวหน้างานผู้ป่วยนอกเอง
      นั่งรอเที่ยง 20 กะว่าจะรอปิดระบบ อ้าวไหงไฟยังไม่ดับหว่า  จึงได้ไปกินข้าว  เวลาประมาณเที่ยง 40 พี่เขามาซื้อกาแฟ นั่งคุยกันว่าไฟเพิ่งตัด
         เริ่มรู้สึกใจคอไม่ดีแล้วมันจะเริ่มใช้งานได้ตอนใหนหว่า คนไข้ก็เยอะ  เหตุการก็เป็นอย่างคาดบ่ายสองระบบยังไม่สามารถใช้งานได้  คนไข้เริ่มโวยวาย หมอเริ่มใจคอไม่ดี
          จนต้องไปเช็คที่ทำงานว่าไปถึงใหนแล้ว ถามอีกนานไหมกว่าจะเสร็จด้วยความเกรงใจ  เพราะเห็นทำงานกันร้อนก็ร้อนเหงื่อแตกกันเต็ม    "อีกไม่น่าเกินครึ่งชั่วโมงครับ" ฮ่าๆๆ  ความซวยมาเยือน คนไข้บางคนตกค้างแต่เมื่อเช้า  
         ได้แต่ประสานงาน กับหมอ ว่าจะเขียนมือแล้วคีย์ทีหลังดีไหม  แต่หวั่นระบบอื่นไม่สามารถใช้งานได้เช่นห้องยาต้องเขียนยาใหม๋  จึงได้ขอให้พยาบาล ให้ทำความเข้าใจกับผู้รับบริการ บ้างก็มีเสียงไม่ค่อยพอใจปนมาเล็กน้อย  ประเภทวัยชราเซ็ง  ฮ่าๆๆ  ผมซึ่งเป็นตัวกลางได้แต่ทำใจครับ  
           จึงได้โอกาสทดสอบเครื่องสำรองไฟเครื่องแม่ข่ายไปในตัวว่าใช้งานได้ดีขนาดใหน ผมใช้ BCN A230N  3KVA  เครื่องแม่ข่ายเป็น IBM X3200 M3  ไม่ได้เปิดจอภาพ  ผมทดสอบแล้วปรากฏว่า  โหลดทำงานจริงประมาณครึ่งชั่วโมงน่าจะใช้งานได้ครับ  เพราะทดสอบเปิดไว้ประมาณเกือบชั่วโมง   คุณภาพกับราคาที่ไม่แพงมากนักก็ถือว่าคุ้มครับ  
          เวลา บ่ายสองกว่าๆ ไฟถึงจะมา  แต่ระบบยังใช้งานไม่ได้เนื่องจาก SERVER ปิด ต้องเปิดเครื่องแม่ข่าย  ปรากฎว่าเครื่องลูกเปิดไวกว่า  จึงไม่ได้รับ IP จากเครื่องแม่ข่ายที่ยังเปิดไม่เสร็จ  จึงได้มีการโทรแจ้งกันวุ่นวายไปหมด  และขอให้แต่ละเครื่อง Restart เครื่องใหม่เพื่อรับ IP ถ้าให้ปิด Network คงปิดกันไม่ได้  
        เมื่อระบบใช้งานได้แล้วจึงต้องเดินไปดูตามหน่วยงานว่าสามารถใช้งานได้หรือยัง  โดยเริ่มห้องแพทย์ก่อนเพราะเป็นหัวใจหลัก คนไข้รอประมาณเกือบสามสิบคน  เช็คทุกระบบยังไม่ทันครบ ได้รับโทรศัพท์มาว่าว่างไหม มาดูเน็ตให้หน่อย User เข้าไม่ได้  (ตกลงพวกพี่ไม่สนใจคนไข้ยังไงครับ  ตูวุ่นวายแทบตาย คนไข้ก็รอเต็มนี่จะเล่นเนต  ตกลงเรามาบริการผู้ป่วยหรือมาเล่นเน็ตครับ ด่าในใจ ฮ่าๆ)
       เมื่อเช็คระบบเสร็จแล้วต้องมาเช็คระบบ Net ต่อ  ฮ่าๆๆสรุปวันนี้  เหนื่อยครับ

         ยังสงสัยอยู่ว่าทำไมไม่ไปทำวันอื่นน้อ ดันมาทำวันนี้เลยซวยเลย ....เครื่องกำเนิดไฟฟ้าซื้อมาก็แพงราคาเป็นล้าน  ต้องมาวุ่นวายเรื่องระบบบริการอีกบ่ไหวเด้อ    วันหน้าอย่าทำแบบนี้อีกเด้อมันเหนื่อย  
          เรื่องนี้สอนให้รู้ว่า "อย่าไว้ใจทาง อย่าวางใจช่าง " ถ้าบอกชั่วโมง บวกเวลาไปได้เลย 1 ชั่วโมง ถ้าบอกเที่ยงก็บ่ายโมงประมาณนั้น    เดี๊ยวจะเป็นเหมือนผมเด้อ
     

วันพุธที่ 13 มีนาคม พ.ศ. 2556

การแก้ ค.ศ. เป็น พ.ศ ใน Hosxp

การแก้คศ.  เป็นพ.ศ.  เมื่อเช้าผมมีปัญหาแจ้งจากการเงินเรื่องแก้ข้อมูล ใบเสร็จรับเงิน จาก ค.ศ. เป็นพ.ศ.  จึงได้ค้นหาใน  Board Hosxp  มีการแก้ปัญหาดังนี้ครับ

1. ไปแก้ที่ Report


2. เลือกเพืิ่ม Variable

3. ใส่ค่าตามนี้ครับ  ตรง Rxdate เปลี่ยนเป็นแหล่งข้อมูลครับ


{ FormatThaiDate(fFormat:string,fDate:Tdatetime):string;}

value := formatthaidate('d mmmm yyyy',dbpipeline['rxdate']);

วันศุกร์ที่ 14 กันยายน พ.ศ. 2555

สารพัดการแปลงไฟล์ ด้วยโปรแกรม format factory


หลายคนคงปวดหัดเรื่่องการแปลงไฟล์ จาก MP4 ให้เป็น MP3  ไฟล์หนังให้เป็น 3g สำหรับมือถือ  อีกสารพัด  ไฟล์ Music Video   มาเป็น MP3  จะทำยังไง  ไปจ้างร้านดีไหม  ผมีโปรแกรมแนะนำครับเป็นโปรแกรมที่ใช้งานง่ายและฟรี   ลองเอาไปใช้กันดูครับ

ขั้นตอนแรกดาวน์โหลดโปรแกรมก่อนครับ   ที่นี่  http://format-factory.en.softonic.com/?ptn=ff  คลิ๊กดาวน์โหลดตรงรูปเขียวๆ ครับ  รอแป๊บหนึ่งก็จะได้โปรแกรมละ

การติดตั้ง ก็ Next อย่างเดียวครับ

การใช้งาน

เปิดโปรแกรม


เลือกประเภทที่จะแปลงก่อนครับว่าจะเป็นไฟล์เป็นอะไร  
แล้วก็เลือกไฟล์ต้นฉบับที่ต้องการแปลง   

ตัวอย่างผมแปลงไฟล์ MP4 ให้เป็น MP3 ครับ


สามารถเลือกแปลงทีได้หลายๆ ไฟล์ครับ  ผมแปลงหนัง DVD มาเป็น CD ธรรมดา 10 เรื่องก็เลือก 10 ไฟล์ครั้งเดียว แต่ต้องดูเครื่องเราด้วยครับว่าแรงขนาดใหน


เมื่อได้แล้วก็กำหนดที่เก็บแล้วก็เลือกไฟล์  และก็เริ่มแปลงเลยครับ  รอซักพักก็เสร็จแล้วครับ


เป็นไงง่ายไหมครับ  ไม่ต้องไปง้อร้านเลย   ลองเอาไปใช้กันดูครับ

อัตราการครองเตียง

พอดีวันนี้พี่จากสำนักคุณภาพได้มาขอรายงานอัตราการครองเตียง  ผมเลยได้ดูรายงานที่จากโปรแกรมที่มีอยู่ให้  แต่จากการคำนวณดูแล้ว  พี่เขาบอกว่าข้อมูลไม่ถูกผมจึงได้ไปค้นหารายงานตัวนี้ใหม่
จึงพบปัญหาจากรายงานตัวเดิมที่มี  เขาคำนวณจากจำนวนเตียงที่ของเราที่มี  ไม่ได้มาจากขนาดของรพ.  ซึ่งผม เพิ่มเตียงไปเกืิอบ 150 เตียง   ทำให้เวลาคำนวณออกมาอัตราครองเตียงจึงน้อยกว่าปกติจึงได้ปรับปรุงแก้ไขตามนี้ครับ

ดาวน์โหลดที่นี่

ผมแก้ตามนี้ครับ



แบบฟอร์มตัวอย่างรายงาน


ต้องแก้ข้อมูลจำนวนเตียงแต่ละ Ward ก่อนครับ เพราะรพ.ผมเป็นขนาด 120 เตียง
คลิ๊กขวา ที่ Variable 7 เลือกดังภาพครับ




แก้จำนวนเตียงแต่ละ Ward ตามภาพครับ
ผมเพิ่ม  +1  เข้าไปเพราะลองคำนวณดูแล้วมันผิดครับ  คือเช่นเดือนมกรา  มันควรจะได้ 31 วัน แต่เวลามันลบกันมันได้ค่ามาแค่ 30  ผมเลยใ่ส่ +1 เข้าไปครับ


แก้จำนวนเตียงทั้งหมด คลิกขาที่ Variable  13

  

แก้จำนวนเตียงตามขนาดของรพ.ครับ


อันนี้เป็นส่วนเพิ่มที่ผมคำนวณ  จำนวนวันนอนเฉลี่ย  โดยเอาค่า  Variable12 / Variable11 
 (จำนวนวันนอน / จำนวนผู้ป่วยจำหน่าย)  ไม่รู้ว่าใช่สูตรนี้หรือเปล่า

วิธีการ คำนวณค่า Variable ครับ

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



วันพฤหัสบดีที่ 6 กันยายน พ.ศ. 2555

10 ปี กับงาน IT จิตเวชเลยฯ

    เมื่อมองย้อนกลับไป  ผมไม่เคยคิดว่าตัวเองจะได้มาทำงานด้าน IT  เนื่องจากตัวเองเป็นเด็กที่เติบโตมาจากชนบทชีวิตค่อนข้างลำบาก   ช่วงชีวิตที่เปลี่ยนผ่าน เคยเห็นทีวีเครื่องแรกของหมู่บ้าน    หนังขายยา  หนังเร่  เคยคิดว่าทีวีทำไมมีคนอยู่ในนั้น  มีคนเล็กๆ อยู่ในนั้นหรือเปล่า  คิดไปก็เป็นเรื่องตลก
   ความฝันของเด็กชนบทโดยทั่วไปก็คือเรียนจบก็หางานทำในกทม.  ไม่เคยคิดเรื่องเป็นข้าราชการ เพราะคิดว่ามันเป็นเรื่องไกลเกินฝัน
  จนมาวันหนึ่งได้มาทำงานที่รพ.จิตเวชฯ  ไม่รู้ว่าเป็นเรื่องฟลุ๊ค หรือเปล่า  เพราะมาสอบทิ้งไว้จนลืมไปแล้ว  พี่เขาถึงเรียกตัวมาทำงาน  ช่วงแรกที่มาทำงานก็เป็นเหมือนเด็กไทยในทั่วไป  คือรู้ในตำราท่องจำ แต่ไม่เคยปฏิบัติ เวลามาทำงานแล้วทำงานไม่ได้เลย  จนท้อ ระบบ


ด้านระบบเครือข่าย

  โชคดีนิดหนึ่งครับที่จิตเวชฯ  ได้มีการวางสายระบบเครือข่ายไว้หมดแล้ว  แต่คอมพิวเตอร์ก็มีไม่กี่สิบเครื่อง (ประมาณ 15 เครื่อง)  แต่  IT จิตเวช เมื่อก่อนเหมือนกับหน่วยงานราชการทั่วไป คือไม่มีใครดูแล อะไรต้องพึ่งพาร้านค้าเป็นหลัก  ทำให้บางครั้งระบบ หลายๆ อย่างก็ไม่ค่อยดีเท่าไหร่   ระบบ Internet  ใช้ IPTV จำกัดปริมาณการดาวน์โหลด  150 Mb. ต่อเดือน  ใช้ได้บ้างไม่ได้บ้าง  ค่าบริการที่แสนแพง  แต่ก็ไม่มีทางเลือก  เนื่องจากเป็นหน่วยงานที่อยู่ในซอกลึก อะไรก็เข้าไม่ถึง
  จนมาช่วงหนึ่งที่เริ่มมีระบบ Internet  ตัวใหม่ขึ้นมา คือ IP STAR   ดีขึ้นมานิดหน่อยที่ ความเพิ่มประิมาณดาวน์โหลด และอัพโหลด อยู่ที่ 750 Mb ทรมานใช้ อยู่ อีกพักก็เพิ่มเป็น 1.5  GB.
   ในช่วงที่ ADSL รุ่งเรื่อง  แต่สอบถามบริษัทอะไรก็ไม่สามารถเดินสายให้ได้เนื่องจากไม่คุ้มค่าใช้จ่าย
แต่ก็มีบริษัทเดียวครับที่กล้ืาลงทุน คือบริษัท CAT  ที่กล้าลงทุนเ ดินสายมากกว่า 4 กิโลเมตร เป็น ADSL เลยทำให้เราสามารถใช้งาน Internet ADSL ได้  ส่วนระบบ อื่นๆ ไม่ต้องพูดถึงครับ เพราะแต่ละบริษัทให้เราออกค่าใช้จ่ายเอง  เฉพาะค่าสายก็ 2-3 แสนแล้ว ส่วนค่าบริการรายเดือนก็เป็นหมื่น  ผู้บริหารคงไม่กล้าลงทุนกับระบบนี้ครับ  เนื่องจากไม่รู้ว่าสิ่งที่ลงทุนไประดับนั้นจะคุ้มค่าใช้จ่ายหรือเปล่า


ด้านซอฟแวร์
   ตอนผมเข้ามาใหม่ๆ รพ. ได้เริ่มนำโปรแกรมระบบเวชระเบียนมาใช้แล้ว  คือ โปรแกรม Ezhosp  ในบริบทของโรงพยาบาล ที่ไม่ได้ใช้งานอะไรมากมายคือใช้เพียงแค่ บันทึกเวชระเบียน  ออกนัด คีย์ยา  เก็บเงินได้
        แต่หลายอย่างต้องมีการเปลี่ยนแปลง  เมื่อหน่วยงานเติบโตมากขึ้นความต้องการของข้อมูลที่มีมากขึ้น  จึงต้องมีการเปลี่ยนแปลงเรื่องระบบ    เนื่องจากเงินทุนด้านการพัฒนาระบบสารสนเทศในแต่ละปีจำนวนจำกัด   เราจึงขอให้ผู้ใหญใจดี  อย่างพี่โด้  จากรพ.สมเด็จพระยุพราชด่านซ้าย มาช่วยเหลือในการขึ้นระบบ Hosxp เมื่อปี 1 กันยายน 2554  และคอยให้ความช่วยเหลือตลอดมา   จนวันนี้ก็ครบรอบ 1 ปีแล้ว  และก็ครบรอบการทำงานของผม 10 ปีเต็มพอดี

ทุกวันนี้ด้านระบบ IT  ของรพ.  ก็เข้าที่เข้าทางมากขึ้น  มีการสนับสนุนที่มากขึ้นเนื่องจากสิ่งที่เราได้ทำมันไ้ด้ก่อให้เกิดผลสำเร็จของงานหลายๆ ด้าน  ทั้งการบริการผู้ป่วย  ความเสี่ยงเรื่องการใช้ยา  ลดภาระของการทำงาน    ไว้วันหลังผมจะสรุปภาพรวมการพัฒนาระบบ Hosxp ของโรงพยาบาลจิตเวชฯ ให้ฟังว่าเป็นยังไง

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

วันนี้เริ่มง่วงๆ เบลอ  เริ่มเขียนวกไปวนมาละ  ตามประสาคนมือใหม่ครับ  เพิ่งให้เขียน

แต่ก็จะพยายามเขียนครับอาจจะไม่ดีพอ  แต่ก็ดีกว่าไม่ได้ทำอะไรเลย จริงไหมครับ


ถ้าวันนั้นผมตอบปฏิเสธว่าไม่มาทำงานที่นี่  ก็ไม่รู้ว่าชีิวิตผมจะเป็นเช่นไรเหมือนกันครับ


วันนี้ผมขอเล่าแค่นี้ก่อนครับ  ...