Jchay F43 Inspector V.2.3 - Convert F43 2.4 → โครงสร้าง 2.4.1

วัตถุประสงค์: เพิ่มคอลัมน์ตามคู่มือ 2.4.1 โดยรักษาข้อมูลเดิม ไม่ใช่สร้างข้อมูลผู้ป่วยใหม่ ไม่ใช่รับรองผ่าน HDC

วิธีใช้
1. เปิดหน้า แปลงไฟล์เป็น 2.4.1 ที่แถบด้านบน (ไม่ต้องตรวจคุณภาพก่อน)
2. ขั้น 1 เลือก ZIP/โฟลเดอร์ต้นทางและที่เก็บผลแปลงนอกต้นทาง
3. หน้าแปลงมีไฟล์และผลของตัวเอง ไม่ใช้ผลตรวจจากหน้าตรวจคุณภาพ
4. ถามผู้ดูแลปลายทางว่าใช้รหัส 9 ตัวเดิมหรือแบบใหม่ เลือก Mapping CSV ที่ยืนยันแล้ว หรือชุดที่จัดให้ใน dropdown (บางสถานบริการในหนองม่วงไข่)
5. ขั้น 3 กด เตรียมและดูสรุป ตรวจจำนวนที่จะเติมและรหัสขัดแย้ง (ยังไม่สร้างไฟล์)
   ขั้น 4 กด แปลงและบันทึก ZIP อ่านสรุปและยืนยัน รอจนแจ้ง สร้าง ZIP แล้ว
   เปลี่ยนไฟล์/Mapping/ปลายทาง ต้องเตรียมใหม่; ต้นทางหรือ Mapping เปลี่ยนหลังเตรียม โปรแกรมจะระงับการเผยแพร่
6. เปิดโฟลเดอร์ผลแปลงหรือรายงานการแปลง ตรวจผลก่อนนำ ZIP ไปใช้
7. ถ้าพบ missing_mapping กด รายการรหัสที่ขาด ดู mapping-needed.csv ค้นคู่รหัสจาก HCODE/ผู้ดูแลระบบรับ เติมคู่ที่ตรวจยืนยันแล้ว รวมกับคู่รหัสเดิมที่ถูกต้องใน CSV ระบบรหัสเดียวกัน แล้วแปลงจาก 2.4 ต้นฉบับอีกครั้ง

ถ้า HOSPCODE9 ผู้ส่งยังเติมไม่ได้ หน้าแปลงจะยังไม่ให้สร้าง ZIP และแสดงรหัสที่ต้องหา Mapping ก่อน
เลือก CSV ที่ครบแล้วกดเตรียมใหม่ ไม่จำเป็นต้องเลือก CSV เฉพาะเมื่อชุดต้นทางมีคู่รหัส 5/9 ที่ไม่ขัดแย้งครบอยู่แล้ว
รหัสตามบทบาทอื่นที่ยังขาดจะอยู่ในรายงานงานค้าง ต้องทบทวนก่อนส่ง HDC; CLI ยังอนุญาตผลโครงสร้างบางส่วนและคืนสถานะ needs_review
ปุ่ม วิธีใช้ Mapping แสดงแนวทางในโปรแกรมได้ ไม่ต้องต่ออินเทอร์เน็ตเพื่อแปลง

CSV รุ่นใหม่ใน mappings/ (7 สถานบริการ รวม 06442 ไม่ใช่ครบประเทศ/ครบหน่วยส่งต่อ):
- hcode-nmk-legacy9-2026-10-08-v23.csv: รหัส 9 ตัวเดิมแบบตัวเลข
- hcode-nmk-new9-2026-10-08-v23.csv: รหัส 9 ตัวใหม่แบบอักษร+เลข
เลือกอย่างใดอย่างหนึ่งตามระบบรับ ห้ามนำสองชุดมารวมโดยไม่จัดระบบรหัส
แหล่งข้อมูล https://hcode.moph.go.th/ รายคู่ใน hcode-nmk-source-evidence.json
2 รายการเปิดหน้าเว็บตรวจได้ตรง อีก 4 รายการอ้างข้อมูลเว็บไซต์ทางการที่ระบบค้นหาเก็บไว้ ไม่ใช่การดาวน์โหลดทะเบียนล่าสุดครบชุด
VERIFIED=YES ของชุดนี้ยืนยันการตรวจคู่รหัสกับแหล่งที่ระบุ ไม่ได้ยืนยันการรับรหัสของ HDC
หากใช้ Excel แก้ CSV ให้ Import ทั้งสองรหัสเป็น Text เพื่อไม่ให้เลขศูนย์นำหน้าหาย

Mapping CSV เป็น UTF-8 มีหัวคอลัมน์:
HOSPCODE,HOSPCODE9,CODE_SYSTEM,SOURCE,VERSION,VERIFIED
HOSPCODE เป็นข้อความ 5 ตัวเลข รักษาเลขศูนย์นำหน้า
HOSPCODE9 เป็นข้อความเลข 9 ตัว หรือ A-Z พิมพ์ใหญ่ 2 ตัวตามด้วยเลข 7 ตัว
CODE_SYSTEM ระบุระบบรหัสของทะเบียนที่ปลายทางใช้ ไม่ปะปนคนละ scheme
SOURCE ระบุแหล่งทะเบียน/เอกสารที่ตรวจจริง VERSION ระบุรุ่น/วันที่ทะเบียน VERIFIED=YES
กดแม่แบบ CSV เพื่อสร้างไฟล์ว่าง ไม่มีการใส่รหัสสมมุติให้ใช้จริง
แม่แบบต้องใช้ชื่อไฟล์ใหม่และบันทึกนอกชุดข้อมูลต้นทาง ไม่เขียนทับทะเบียนเดิม
CSV ต้องไม่มีหัวคอลัมน์ซ้ำหรือว่าง จำนวนช่องต้องตรงทุกแถว และ quote ต้องครบ
ช่องแหล่งที่มา/ระบบรหัส/รุ่นต้องมีข้อความจริง ไม่รับค่าว่างหรือ null
โปรแกรมตรวจรูปแบบและความไม่ขัดแย้ง แต่ไม่ได้ยืนยันทะเบียนแทนเจ้าหน้าที่
หาก CSV กับคู่รหัสในข้อมูลมีหลายรหัส 9 ต่อรหัส 5 เดียวกัน จะไม่เลือกเติมให้เอง

สิ่งที่แปลง
- เพิ่มทุกช่องที่ยังขาดตาม supplemental reference pack ของแฟ้มนั้น รวม 79 ช่องใน 52 ตารางเมื่อแปลงครบชุด
- จับคู่ตามบทบาท ไม่ใช้รหัสผู้ส่งเติมทุกช่อง เช่น REFERINHOSP9 ใช้ REFERINHOSP
- POSTNATAL.BHOSP9 ใช้ PPPLACE ตามความหมายในคู่มือหน้า PDF 99
- SERVICE.HOSP9_SUB ไม่มี SUB ในฐานอ้างอิงเดิม จึงไม่เดารหัสจาก CARD หรือ MAIN
- เติมช่อง C9 ที่เพิ่มใหม่และช่อง C9 เดิมที่ว่างหรือมีแต่ช่องว่าง จากคู่รหัสที่ไม่ขัดแย้งเท่านั้น
- ค่าช่องเดิมที่มีค่าแล้วคงเดิม แม้ผิดรูปหรือขัดแย้ง ต้องตรวจ/แก้ต้นทาง ไม่ทับเงียบ ๆ
- ไม่เติมข้อมูลคลินิก/ประชากร/วันที่ ไม่เปลี่ยน D_UPDATE ไม่ดำเนิน payload DATA_CORRECT
- คงจำนวนแถว ลำดับแถว ค่าที่ไม่ว่าง เลขศูนย์นำหน้า encoding และตัวจบบรรทัด; ตรวจเทียบทุกช่องก่อนเผยแพร่
- original_cells_preserved ใน audit เป็น false เมื่อมีการเติมช่องเดิมที่ว่าง ซึ่งเป็นพฤติกรรมที่อนุญาต ไม่ใช่แก้ต้นฉบับ
- original_nonempty_cells_preserved และ source_files_unchanged ระบุการรักษาค่าที่มีอยู่/ไฟล์ต้นทาง
- แฟ้มอื่นที่ไม่ใช่ TXT คง byte เดิม แฟ้ม TXT ที่ไม่รู้จัก/คอลัมน์นอกอ้างอิง/แถวผิดรูป/แฟ้มชื่อซ้ำระงับการแปลง ไม่ทิ้งข้อมูล

ไฟล์ผลลัพธ์ในโฟลเดอร์ conversion-... แต่ละครั้งไม่เขียนทับครั้งก่อน
- ชื่อต้นฉบับ_2.4.1.zip: เช่น F43_06445_2569.zip → F43_06445_2569_2.4.1.zip; โฟลเดอร์ใช้ชื่อโฟลเดอร์เดิม รวมเฉพาะสมาชิกข้อมูลต้นทางที่แปลงแล้ว ไม่มีรายงาน audit แทรกใน ZIP
- conversion-report.html: สรุปแต่ละแฟ้ม ช่องเติม/ว่าง พร้อมลิงก์ผลตรวจ 2.4.1 รายแถว
- mapping-gaps.csv: ช่องรหัสใหม่หรือช่องเดิมที่ว่างซึ่งเติมไม่ได้ แยกรหัส/บทบาท/เหตุผล/จำนวน
- mapping-needed.csv: รวมรหัสสถานบริการ 5 ตัวที่ต้องจับคู่เพิ่ม ไม่มีข้อมูลผู้ป่วย ตั้ง VERIFIED=NO จนกว่าจะเติมและตรวจครบ ไม่ใช้ไฟล์เปล่านี้เป็นทะเบียนที่ยืนยันแล้ว
- conversion-audit.json: hash ต้นทาง/ปลายทาง mapping ที่มา ความขัดแย้งและการเทียบรักษาข้อมูล
- validation/inspection-...: HTML/CSV/JSON ผลตรวจ ZIP ใหม่ด้วยกฎ 2.4.1

สถานะ ready_in_checked_scope หมายถึงมีแถวข้อมูลและไม่พบ error หรือ warning ในกฎที่รองรับ ไม่มีช่องบังคับใหม่ว่าง/รหัส mapping ขัดกัน ไม่ใช่พร้อมส่ง HDC ที่รับรองแล้ว
สถานะ needs_review หมายถึงสร้างโครงสร้างใหม่แล้ว แต่ต้องทบทวนข้อผิดพลาด/คำเตือน/รหัสที่ขาด หรือมีแต่หัวตารางไม่มีแถวข้อมูลให้ตรวจ
หน้าผลแปลงระบุจำนวน error, warning, แถวที่ตรวจ และขอบเขตแฟ้มที่มีในชุด (ไม่ใช่ยืนยันครบทั้ง 52 แฟ้มเสมอ)
ช่องไม่บังคับที่ไม่มีข้อมูลจริงอาจว่างได้ ไม่ต้องเดาเพื่อให้ทุกช่องเต็ม
รหัสที่พบในชุดข้อมูลมี provenance แบบ observed input pair ไม่ใช่การรับรองทะเบียนจากภายนอก

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

เริ่มชุดใหม่ในหน้าแปลงกด เริ่มชุดใหม่ ล้างเฉพาะหน้าแปลงและ Mapping ไม่กระทบหน้าตรวจคุณภาพ
ปุ่ม เคลียร์ข้อมูล ในหน้าตรวจคุณภาพล้างเฉพาะงานตรวจ ไม่ลบต้นฉบับหรือไฟล์ผลที่บันทึกไว้
ชุดที่เคยแปลงแล้วมี HOSPCODE9 ว่าง สามารถเลือกเป็นต้นทางเพื่อเติมช่องว่างได้ เช่น 06443 → GA0006443 เมื่อใช้ Mapping รหัสใหม่ที่จัดให้
