Mine

รูปภาพของฉัน
หาดใหญ่, ภาคใต้, Thailand
ชอบเอาใจ แต่ก็เอาแต่ใจ

วันเสาร์ที่ 12 มิถุนายน พ.ศ. 2553

เรามาเขียนรายงานจากฐานข้อมูล 18 แฟ้ม กันดีกว่า ตอนที่2

555 ในที่สุดก็เดือนละ 1 ครั้ง เฮ้ยยยยย... ขออภัยอย่างแรงค่ะ

งั้นเริ่มเลยนะ ความเดิม
"ทำความเข้าใจกันก่อนดีกว่าว่า 18 แฟ้ม คือข้อมูลอะไรบ้าง และ เราจะจัดการข้อมูลให้เป็นชุดเดียวกันได้อย่างไร มีรูปแบบข้อมูลเป็นอย่างไร ก็เชิงการวิเคราะห์อะค่ะ ไม่ยาก แต่ค่อนข้างละเอียดอ่อน"

จากที่เคยกล่าวไว้เรื่องการจัดการชุดข้อมูลเดียวกัน ตอนนี้เราลองหยิบเอกสาร 18 แฟ้ม จาก file Structure2553_1_0_7.pdf(อ้างอิง: http://www.nhso.go.th/op)

เมื่อเราได้เอกสารชุดเดียวกันแล้ว มาตรฐานข้อมูลที่เราจะกล่าวถึงก็จะเป็นข้อมูลชุดเดียวกันแล้วค่ะ งั้นพร้อมแล้วก็มาทำความเข้าใจกันเลยค่ะ เอาแบบคุยกันง่ายๆ ไม่ทางการนะคะ
1. 18 แฟ้ม คือข้อมูลอะไรบ้าง
ให้อ่านรายละเอียดของแฟ้มทั้งหมดดูว่าเข้าใจว่าอย่างไร เหมือนกับที่จะสรุปหรือไม่
ตามความหมายของแต่ละแฟ้มแยกกลุ่มข้อมูลได้ ดังนี้
- ข้อมูลพื้นฐานประชากร หรือข้อมูลทั่วไปของประชากร
PERSON, DEATH, CHRONIC, SURVEIL, WOMAN, HOME
- ข้อมูลหลักประกันสุขภาพ
PERSON, CARD
- ข้อมูลการเข้ารับบริการ
PERSON, SERVICE, DIAG,PROCED,APPOINT,DRUG
- ข้อมูลส่งเสริมป้องกัน
PERSON, SERVICE,EPI,NUTRI, FP, ANC, PP, MCH
2. การจัดการข้อมูล 18 แฟ้ม
2.1 เราได้ข้อมูลมาในรูปแบบใด
ในที่นี้ก็คงจะยึดมาตรฐานจากที่ทางส่วนกลางกำหนดไปเลยนะคะ เป็น Text File รูปแบบอ้างอิงจากเอกสาร Structure2553_1_0_7.pdf
2.2 เราจะจัดเก็บข้อมูลมูลไว้ที่ไหนดี
เมื่อเราทราบว่าข้อมูลที่เรามีในมือนั้นเป็น Text File แล้วเราจะเอาไว้ที่ไหนดี อันนี้แนะนำให้เก็บอยู่ในฐานข้อมูลค่ะ ซึ่งตรงนี้ขอยกตัวอย่างเป็น PostgreSQL แล้วกันค่ะ เป็น Open Source ที่ดีค่ะ สำหรับท่านอื่นๆ จะใช้ฐานข้อมูลอะไรก็ได้นะคะ
2.3 เราได้ข้อมูลมาบ่อยแค่ไหน ซ้ำซ้อนหรือไม่
อันนี้ก็คาดว่า 1 เดือนเราก็คง Query ข้อมูลมา 1 ครั้ง หรือแล้วแต่ว่าจะมีกรณีแก้ไขข้อมูลแล้วนำเข้ามาใหม่หรือไม่ อันนั้นก็ไม่ว่ากันค่ะ บ่อยแค่ไหนไม่ค่อยสำคัญมากนัก แต่ข้อมูลยังไงเราก็ไม่สามารถการันตีได้ว่าจะไม่ซ้ำซ้อนกัน ดังนั้น เราก็ต้องมีขั้นตอนที่จะตรวจสอบความซ้ำซ้อนของข้อมูลให้ได้ และจะจัดการกับข้อมูลเหล่านั้นอย่างไร ให้เหมาะสม
2.4 เราต้องจัดการกับข้อมูลใน CUP ด้วยหรือไม่
ยากเข้าไปอีกขั้น เพราะเราไม่สามารถควบคุมข้อมูลได้ แต่ก็สามารถทำได้ค่ะ ต้องทำความเข้าใจร่วมกันก่อนว่าข้อมูลทั้งหมดจะนำมาวิเคราะห์ร่วมกัน ดังนั้น Key ที่ใช้เป็นตัวบ่งชี้ถึงบุคคล หรือประชากรคนเดียวกันที่สำคัญ คือ เลขบัตรประชาชน แต่เราไม่ได้ วิเคราะห์ข้อมูลที่เป็นคนไทยอย่างเดียว ดังนั้น เราจำเป็นจะต้องมีข้อมูลอื่นร่วมด้วย ที่จริงแล้วเคยได้มีโอกาสเข้าร่วมประชุมค่ะ

ตรงนี้ทางหน่วยงานที่เกี่ยวข้องกับข้อมูลต่างด้าวก็พยาบามที่จะให้สร้างเลข 13 หลักของคนต่างด้าวขึ้นมา ถ้าเกิดขึ้นมาเหมือนกับที่ให้เลข 13 หลักของคนไทยก็น่าจะนำมาใช้ได้ค่ะ แต่ไม่แน่ใจว่าเลขที่ให้ Gen ขึ้นมานั้น หาก นาย ก ชาวพม่า ไปรับบริการ 2 หน่วยบริการจะได้เลขเดียวกันหรือไม่ (อันนี้ก็ค่อยหาทางออกอีกทีนะคะ 555 ด้วยอะไรหลายๆอย่างทำให้ไม่สะดวกค่ะ) สรุปคือว่า เอาคนไทยก่อนนะ เอาไว้ว่างๆจะหาทางให้ละกัน

งั้นเรามาสร้างโครงสร้างรองรับกับข้อมูลกันดีกว่าค่ะ
จากเอกสารที่เรานำมาอ้างอิง อย่างน้อยที่สุดนั้นเราจะต้องมีตารางข้อมูลเท่ากับจำนวนแฟ้มค่ะ แต่ส่วนที่ต้องเพิ่มขึ้นมาเพื่อให้อธิบายรหัสต่างๆของข้อมูล จะต้องดูว่าแต่ละแฟ้มมีรหัสอ้างอิงไปยังข้อมูลอะไรบ้าง ยกตัวอย่างเช่น เราหยิบแฟ้ม PERSON ขึ้นมา เราจะได้ตาราง ดังนี้
1. ตาราง person
    เพื่อเก็บข้อมูลประชากร
2. ตาราง address
    เพื่อเก็บข้อมูลรหัสของ ตำบล อำเภอ จังหวัด ตามมาตรฐานของกรมการปกครอง
3. ตาราง mstatus
    เก็บสถานภาพสมรส
4. ตาราง occupation
    เก็บรหัสอาชีพ
5. ตาราง race
    รหัสเชื้อชาติมาตรฐานตามกรมการปกครอง
6. ตาราง nation
    รหัสสัญชาติมาตรฐานตามกรมการปกครอง
7. ตาราง religion
    รหัศาสนาสมาตรฐาน สำนักนโยบายและยุทธศาสตร์
8. ตาราง education
    รหัสการศึกษามาตรฐาน สำนักนโยบายและยุทธศาสตร์
9. ตาราง fstatus
    สถานะในครอบครัว
10. ตาราง discharge_status
    สถานะสาเหตุการจำหน่าย
11. ตาราง blood_group
    หมู่เลือด
12. ตาราง labor
    รหัสความเป็นคนต่างด้าว
13. ตาราง typearea
     สถานะบุคคล

จะเห็นว่าเพียง 1 แฟ้มทำให้เรามีงานทำเพื่อสร้างตารางถึง 13 ตารางค่ะ แต่เราก็ต้องดูว่ารหัสนี้ใช้กับแฟ้มอื่นด้วยหรือเปล่าถ้าใช้ก็ไม่ต้องสร้างซ้ำซ้อนค่ะ

งั้นมาทำตามขั้นตอนค่ะ
1. สร้างฐานข้อมูล 1 ฐาน
ตัวอย่าง คำสั่ง
createdb -E unicode dataset_18files -U postgres
เท่านี้เราก็ได้ฐานข้อมูลเปล่ามา 1 ฐานชื่อ dataset_18files
สำหรับฐานข้อมูลอื่นๆ ก็สามารถสร้างตามสะดวกค่ะ หรือแม่แต่ PostgreSQL ก็ใช้ Tool สร้างก็ได้นะคะ หากไม่ถนัด Command
2. สร้างตารางที่เรา List เอาไว้
ตัวอย่าง คำสั่ง
CREATE TABLE blood_group (
    stdcode    varchar(255) NOT NULL,
    description    varchar(255) NULL,
    PRIMARY KEY(stdcode,description)
);
จะได้ตารางชื่อ blood_group
ประกอบด้วย 2 Field คือ stdcode,description
โดยมี Key หลักคือ stdcode
* โดยส่วนใหญ่แล้วถ้ากรณีรหัสมาตรฐานก็น่าจะมีอย่างน้อย 2 Field คือ รหัส และ รายละเอียดคำอธิบาย
3. นำข้อมูลรหัสมาตรฐาน เข้าไปยังตารางที่สร้างไว้
หากเป็นข้อมูลรหัสมาตรฐานจะคงที่ไม่มีการเปลี่ยนแปลง กรณีเปลี่ยนแปลง เช่น เมื่อมีการปรับปรุงรหัสข้อมูลใหม่ นั่นหมายถึงการเปลี่ยน Data Dictionary นั่นเอง เราควรจัดการให้เนียนกว่าการมาเปลี่ยนรหัสโดยตรงค่ะ เพราะจะกระทบกับข้อมูลเดิม (ค่อยว่ากันนะคะ ชักยุ่งเหยิง)
ตัวอย่าง คำสั่ง
INSERT INTO blood_group(stdcode, description)
    VALUES('1', 'A');
INSERT INTO blood_group(stdcode, description)
    VALUES('2', 'B');
INSERT INTO blood_group(stdcode, description)
    VALUES('3', 'AB');
INSERT INTO blood_group(stdcode, description)
    VALUES('4', 'O');

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

หากไม่แน่ใจ หรือมีคำถามก็แจ้งกันมาได้ค่ะ ... ช่วยกัน

1 ความคิดเห็น: