Primero Interoperability Layer | System Administrator Training
UNICEF Thailand �April 2021
Confidential Open Function Group Version 2.0
----------------------------------------------------
Agenda
Confidential Open Function Group UNICEF Project
Intro to OpenFn & �Primero Interoperability Solution��(ภาพรวมของการเชื่อมต่อข้อมูลระหว่างระบบ)
Confidential Open Function Group UNICEF Project
Automating data sync with OpenFn...
OpenFn automates the on-demand data sync between the Thailand MOPH Hospital Information System (HIS) and Primero systems, securely sharing children’s medical history with caseworkers .
Confidential Open Function Group UNICEF Project
What is OpenFn?
OpenFn provides the interoperability layer to connect Primero with external systems for secure, automated information exchange.
Confidential Open Function Group Version 2.0
OpenFn is an integration platform.
Systems �Sync
OpenFn provides enterprise grade, scalable, and secure infrastructure to connect technologies and automate key workflows. It is sometimes referred to as a “ETL” or “middleware” platform.
Data Integration
Information Mediator
Workflow Automation
Audit Trail�& Routing
Security & Compliance
Confidential Open Function Group Version 2.0
How the interoperability (“IO”) solution works...��(การทำงานของระบบ Interoperability)
Confidential Open Function Group UNICEF Project
Caseworker user experience...
Primero user creates a new case or clicks SYNC button to get data from HIS... (ผู้ใช้งานระบบสร้างเคสใหม่ หรือ กดปุ่ม SYNC เพื่อดึงข้อมูลจากระบบ HIS)
OpenFn searches for case in HIS
Syncing... (กำลังดึงข้อมูล…..)
�
...search results synced with Primero �(ข้อมูลที่ได้จากการค้นหาข้อมูลส่งไปที่ Primero)
Primero cases & forms are updated with HIS information... (Primero เคสและฟอร์ม ได้มีการอัพเดทข้อมูลจากระบบ HIS)
‘Last Sync’ timestamp updated
Check for inserted/updated forms (ทำการตรวจสอบข้อมูลที่ดึงมาหรือทำการบันทึกข้อมูลส่วนอื่นๆเพิ่ม)
‘Last Sync’ timestamp updated (ข้อมูลที่มีการเชื่อมล่าสุด โชว์พร้อมกับวันที่มีการดึงข้อมูล)
Now let’s monitor the flow end-to-end...
(Administrators’ user experience)
Primero user creates a new case or clicks SYNC button to get data from HIS...
(ผู้ใช้งานระบบสร้างเคสใหม่ หรือ กดปุ่ม SYNC เพื่อดึงข้อมูลจากระบบ HIS)
OpenFn receives sync request from Primero...
(OpenFn ได้รับคำสั่งขอดึงข้อมูลจาก Primero)
Primero sends sync request to OpenFn...
(Primero ส่งคำขอข้อมูลไปยัง OpenFn)
OpenFn searches HIS for case information using national_id...
(OpenFn ทำการหาข้อมูลจากระบบ HIS โดยการใช้ เลขที่บัตรประจำตัวประชาชน 13 หลัก)
Search HIS for child medical history...
(หาข้อมูลสำหรับประวัติทางการแพทย์ของเด็ก)
Sync Primero case with HIS case information found
(ทำการดึงข้อมูลที่พบ จาก HIS)
OpenFn jobs map HIS data to Primero case forms...
(OpenFn จะทำการแมปข้อมูลของระบบ HIS ไปที่แบบฟอร์มของ Primero)
name_first: patient.fname,
date_of_birth: patient.birthday,
age: calculateAge(new Date(patient.birthday)),
OpenFn logs every transaction in Activity History...
(OpenFn มีการเก็บบันทึกทุกกิจกรรมที่เกิดขึ้นกับระบบไว้ที่ Activity) History)
Primero cases & forms are updated with HIS information...
(เคสและฟอร์มของ Primeroได้รับการอัพเดทข้อมูลจากระบบ HIS)
‘Last Sync’ timestamp updated
Check for inserted/updated forms (ทำการตรวจสอบข้อมูลที่ดึงมาหรือทำการบันทึกข้อมูลส่วนอื่นๆเพิ่ม)
‘Last Sync’ timestamp updated (ข้อมูลที่มีการเชื่อมล่าสุด โชว์พร้อมกับวันที่มีการดึงข้อมูล)
Testing the solution...�(การทดสอบระบบ)
Confidential Open Function Group UNICEF Project
Note: Sync with HIS can be triggered… (การดึงข้อมูลจาก HIS ทำได้ 2 วิธี)�1. Automatically after a new case is created (ดึงข้อมูลแบบอัตโนมัติ หลังจากที่มีการบันทึกเคสใหม่)
2. On-demand, if the user clicks the SYNC button (ดึงข้อมูลเมื่อต้องการ, เมื่อผู้ใช้กดปุ่ม SYNC)��
���Once triggered, the SYNC button cannot be clicked again, until a response is received from the HIS system. After a response from HIS is received, and sent back to Primero, the button is re-enabled and the “Last Sync” timestamp is updated. ��(เมื่อกดปุ่ม SYNC แล้วจะไม่สามารถกดปุ่ม SYNC ซ้ำได้อีก จนกว่าระบบ HIS จะได้รับคำขอและส่งข้อมูลกลับมา ปุ่ม SYNC ถึงจะสามารถกดได้ใหม่อีกครั้ง พร้อมกับระบบจะแสดงวันและเวลาที่มีการดึงข้อมูลสำเร็จ)��
�
Let’s log in...
Confidential Open Function Group UNICEF Project
How to test... (การทดสอบระบบ)
→ OpenFn will assign you sample national_ids to test with� (OpenFn จะกำหนดเลขที่บัตรประชาชนสำหรับใช้ในการทดสอบครั้งนี้)
Confidential Open Function Group UNICEF Project
Create a new case… (สร้างเคสใหม่)��1. Create a new case. At minimum, enter the National Id and provide Consent. �(สร้างเคสใหม่ โดยใส่ข้อมูลเลขที่บัตรประจำตัวประชาชน และให้ความยินยอมการเปิดเผยข้อมูล)��2. Save the case. Automatically, the “sync” will be triggered. �(กดปุ่ม save, ระบบจะส่งคำขอไปดึงข้อมูลจาก HIS โดยอัตโนมัติ) �Once triggered, the SYNC button cannot be clicked again, until a response is received from the HIS system. (ระหว่างนี้ปุ่ม SYNC จะไม่สามารถกดได้อีกจนกระทั่งระบบ HIS จะได้รับคำขอและส่งข้อมูลกลับมา)���3. Wait for the sync to complete (~5 seconds)… and look for updated Last Sync timestamp. �(รอจนระบบดึงข้อมูลเสร็จสิ้นประมาณ 5 วินาที ทราบได้จากที่ระบบแสดงวันและเวลาที่ได้ดึงข้อมูลครั้งล่าสุด)�- Click Check Status to refresh the case record (กดปุ่ม “Check status” เพื่อให้ระบบดึงข้อมูลมาแสดง)
- Or refresh the page after a couple of seconds (หรือ กด F5 เพื่อทำการดึงข้อมูลใหม่ทั้งหน้าจอ)��
4. Review the case to check for updated case information & forms. �(ตรวจสอบข้อมูลที่ถูกดึงมาจากระบบ HIS)������
To request a “sync” on-demand (ส่งคำขอดึงข้อมูลเมื่อผู้ใช้ต้องการ)��1. Click the SYNC button on an existing case. A “sync” request will be triggered. �(กดปุ่ม SYNC สำหรับข้อมูลของเคสที่มีอยู่แล้วในระบบ, คำขอจะถูกส่งไปที่ระบบ HIS)�Once triggered, the SYNC button cannot be clicked again, until a response is received from the HIS system. (ระหว่างนี้ปุ่ม SYNC จะไม่สามารถกดได้อีกจนกระทั่งระบบ HIS จะได้รับคำขอและส่งข้อมูลกลับมา))���2. Wait for the sync to complete (~5 seconds)… and look for updated Last Sync timestamp.�(รอจนระบบดึงข้อมูลเสร็จสิ้นประมาณ 5 วินาที ทราบได้จากที่ระบบแสดงวันและเวลาที่ได้ดึงข้อมูลครั้งล่าสุด)�- Click Check Status to refresh the case record (กดปุ่ม “Check status” เพื่อให้ระบบดึงข้อมูลมาแสดง)
- Or refresh the page after a couple of seconds (หรือ กด F5 เพื่อทำการดึงข้อมูลใหม่ทั้งหน้าจอ)�
�3. Review the case to check for updated case information & forms. (ตรวจสอบข้อมูลที่ถูกดึงมาจากระบบ HIS)�������
Case data for the following might be updated by the HIS sync: (ข้อมูลที่เกี่ยวกับเคสตามที่ระบุด้านล่าง สามารถดึงมาจากระบบ HIS)
������
Check for updated information from HIS (ตรวจสอบข้อมูลที่มีการอัพเดทจากระบบ HIS)�
Let’s log in...
Confidential Open Function Group UNICEF Project
Testing the solution...
Confidential Open Function Group UNICEF Project
Administrators training...��(การสอนให้กับกลุ่ม admin ของระบบ)
Confidential Open Function Group UNICEF Project
Let’s log in...��มาเริ่มกันเลย
www.openfn.org/login���To register your OpenFn account:�(สำหรับผู้ที่ยังไม่มี account เพื่อเข้าระบบ ต้องทำการสมัครก่อน)
Confidential Open Function Group UNICEF Project
Managing jobs...
Confidential Open Function Group UNICEF Project
การจัดการงานบนระบบ...
OpenFn searches HIS for case information using national_id...
Search HIS for child medical history...
Sync Primero case with HIS case information found
การดึงข้อมูลจาก HIS จะอ้างอิงจากหมายเลขบัตรประจำตัวประชาชน (national_id) เป็นหลัก
ค้นหาประวัติการเข้ารับบริการจากฐานข้อมูล HIS
นำข้อมูลที่ได้จากฐานข้อมูล HIS ไปใช้ยังระบบ Primero
OpenFn jobs map HIS data to Primero case forms...
name_first: patient.fname,
date_of_birth: patient.birthday,
age: calculateAge(new Date(patient.birthday)),
กระบวนการ mapping ข้อมูลที่ได้จากระบบ HIS กับฟิล์ดข้อมูลบนระบบ Primero
Managing Jobs�
Confidential Open Function Group UNICEF Project
Monitoring Job Runs &�Activity History...
Confidential Open Function Group Version 2.0
การตรวจสอบกระบวนการทำงาน และประวัติการทำงาน ...
OpenFn logs every transaction in Activity History...
ทุกการทำงานจะถูกเก็บไว้ใน ประวัติการทำงาน...
Confidential Open Function Group Version 2.0
Review run failures to troubleshoot integration errors...
⚠️ Job run failed…?
การดูข้อมูลกระบวนการที่เกิด ข้อผิดพลาด และการแก้ปัญหา...
⚠️ เกิดข้อผิดพลาด…?
Confidential Open Function Group Version 2.0
Click into the run to review the logs...
Exit codes...�0. Success�1. Error (Sync error)�2-5. above (contact OpenFn support)
การดูข้อมูลที่เกิดความผิดพลาด...
ดูที่ Exit codes...�0. สำเร็จ �1. ผิดพลาด�2-5. หรือมากกว่า ให้ติดต่อ OpenFN
Confidential Open Function Group Version 2.0
Read the logs to understand the error...
HTTP Status Code: 400s → client errors
The request contains bad syntax and cannot be fulfilled, record conflict, authentication error, etc.
HTTP Status Code
ดูรายละเอียดข้อผิดพลาด...
สถานะ HTTP
Confidential Open Function Group Version 2.0
Read the logs to understand the error...
HTTP Status Code: 500s → server errors
The server failed to fill OpenFn’s request. Need to contact destination system administrator (Primero) to determine the reason.
ดูรายละเอียดข้อผิดพลาด...
Confidential Open Function Group Version 2.0
Turn on notifications to receive email alerts...
การตั้งค่าอีเมลล์เพื่อให้แจ้งผลลัพธ์ของกระบวนการทำงาน
Managing Credentials
If the system login details change, you may need to update or create a new “Credential” in OpenFn.
Confidential Open Function Group Version 2.0
การจัดการข้อมูลแสดงตัว
กรณีที่ถ้ามีการเปลี่ยนแปลงข้อมูลของการล้อคอินบนระบบ Primero ผู้ดูแลระบบจะต้องทำการแก้ไขปรับปรุงข้อมูล (หรือสร้างใหม่) บนระบบ OpenFN เช่นกัน
Confidential Open Function Group Version 2.0
View all available Credentials ...
Note that every Credential has an “Owner”.
การเข้าดูข้อมูลแสดงตัว (Credentials) ...
Confidential Open Function Group Version 2.0
Link jobs to Credentials to define the systems synced ...
Every Job is linked to 1 credential �
Note: You will have different credentials for different environments (production, staging, etc.)
(ระบบต่างกันควรจะใช้ credential ต่างกัน)
การทำการผูกงานเข้ากับ credential เพื่อการเชื่อมต่อระหว่างระบบ...
งานแต่ละงานจะถูกผูกไว้กับ 1 credential เสมอ�
If authentication details change...
(ถ้ามีการเปลี่ยนแปลง credential เข้าของ credentialนั้นจะต้องทำการอัพเดทในระบบ OpenFN ด้วย)�
*We recommend you determine which administrator(s) will be the credential owners. ��(แนะนำให้ทางกระทรวงฯวางแผนว่าใครจะเป็นผู้ดูแล credential)
Confidential Open Function Group UNICEF Project
Managing Users
Administrators can add/remove users to the OpenFn project to support with integration monitoring.
Only designated IT administrators should have access. This is not an end-user application.
Confidential Open Function Group Version 2.0
การจัดการบัญชีรายชื่อผู้ใช้งาน
ผู้ดูแลระบมีสิทธิในการเพิ่มหรือลบรายชื่อผู้ใช้งานบนระบบ OpenFN จุดประสงค์หลักในการมีสิทธินี้คือเพื่อให้สิทธิในการตรวจสอบสถานะการเชื่อมต่อข้อมูล
สิทธินี้ไม่ควรให้แก่ผู้ใช้งานทั่วไป
Admin users can add/remove other OpenFn users….
Monitor Activity History to view the status of job runs...
ผู้ดูแลระบบจะสามารถเพิ่มหรือลบรายชื่อบนระบบ OpenFN ได้….
Troubleshooting Basics & �Support
Confidential Open Function Group UNICEF Project
การแก้ปัญหาเบื้องต้นและการให้ความช่วยเหลือ
Confidential Open Function Group Version 2.0
Monitor Activity History to view the status of job runs...
ตรวจสอบสถานการณ์ทำงานจาก Activity History ...
When you receive an error email…��เมื่อได้รับอีเมลล์แจ้งว่าเกิดข้อผิดพลาด...��
�1. เปิดอีเมลล์นั้น�2. ดูว่ามีปัญหาใด�3. ตรวจสอบและปฏิบัติการ�
Confidential Open Function Group UNICEF Project
3. Run this job now ▷
Run the job again to re-try the sync...
Click “play” next to �job `1. Get Patient Data from HIS`�to re-try the sync…��This will re-try jobs 1 & 2.
ทำการแก้ไขปัญหาเบื้องต้นโดยการสั่งเริ่มกระบวนการใหม่...
กดที่เครื่องหมาย “play” ข้าง ๆ
`1. Get Patient Data from HIS` เพื่อทำการดึงข้อมูลอีกครั้ง
หมายเหตุ: การดึงข้อมูลจะทำขั้นตอนการดึงข้อมูล 1 และ 2 อีกครั้ง
Does the run fail again in ‘Activity History’?
กรณีพบว่ากระบวนการดึงข้อมูลยังเกิดข้อผิดพลาดอยู่�
Confidential Open Function Group UNICEF Project
Support Contacts�บุคคลติดต่อ กรณีต้องการความช่วยเหลือ
UNICEF: �TO FINALIZE��MOPH: �TO FINALIZE�
Confidential Open Function Group UNICEF Project
Questions? Forget something? �
Github: github.com/OpenFn/primero-thailand�
Confidential Open Function Group UNICEF Project