1 of 53

Primero Interoperability Layer | System Administrator Training

UNICEF Thailand �April 2021

Confidential Open Function Group Version 2.0

2 of 53

  1. Introduction to OpenFn & the Primero Interoperability Solution�(อธิบายภาพรวมของการเชื่อมต่อข้อมูลระหว่างระบบ)
  2. How the Solution Works (อธิบายการทำงานของระบบ Interoperability)
  3. Testing Overview (อธิบายขั้นตอนของการทดสอบระบบ)

----------------------------------------------------

  1. OpenFn Administrator Training (สอนการใช้งานให้กับ Admin ระบบ)
    1. Managing Jobs (การสอนให้กับกลุ่ม admin ของระบบ)
    2. Monitoring Activity History (การดูประวัติของการเชื่อมต่อข้อมูล)
  2. Troubleshooting Basics & Support (การแก้ไขปัญหาเบื้องต้น)

Agenda

Confidential Open Function Group UNICEF Project

3 of 53

Intro to OpenFn & �Primero Interoperability Solution��(ภาพรวมของการเชื่อมต่อข้อมูลระหว่างระบบ)

Confidential Open Function Group UNICEF Project

4 of 53

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

5 of 53

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

6 of 53

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

7 of 53

How the interoperability (“IO”) solution works...��(การทำงานของระบบ Interoperability)

Confidential Open Function Group UNICEF Project

8 of 53

Caseworker user experience...

9 of 53

Primero user creates a new case or clicks SYNC button to get data from HIS... (ผู้ใช้งานระบบสร้างเคสใหม่ หรือ กดปุ่ม SYNC เพื่อดึงข้อมูลจากระบบ HIS)

10 of 53

OpenFn searches for case in HIS

Syncing... (กำลังดึงข้อมูล…..)

...search results synced with Primero �(ข้อมูลที่ได้จากการค้นหาข้อมูลส่งไปที่ Primero)

11 of 53

Primero cases & forms are updated with HIS information... (Primero เคสและฟอร์ม ได้มีการอัพเดทข้อมูลจากระบบ HIS)

‘Last Sync’ timestamp updated

Check for  inserted/updated forms  (ทำการตรวจสอบข้อมูลที่ดึงมาหรือทำการบันทึกข้อมูลส่วนอื่นๆเพิ่ม)

‘Last Sync’ timestamp  updated (ข้อมูลที่มีการเชื่อมล่าสุด โชว์พร้อมกับวันที่มีการดึงข้อมูล)

12 of 53

Now let’s monitor the flow end-to-end...

(Administrators’ user experience)

13 of 53

Primero user creates a new case or clicks SYNC button to get data from HIS...

(ผู้ใช้งานระบบสร้างเคสใหม่ หรือ กดปุ่ม SYNC เพื่อดึงข้อมูลจากระบบ HIS)

14 of 53

OpenFn receives sync request from Primero...

(OpenFn ได้รับคำสั่งขอดึงข้อมูลจาก Primero)

Primero sends sync request to OpenFn... 

(Primero ส่งคำขอข้อมูลไปยัง OpenFn)

15 of 53

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)

16 of 53

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)),

17 of 53

OpenFn logs every transaction in Activity History...

(OpenFn มีการเก็บบันทึกทุกกิจกรรมที่เกิดขึ้นกับระบบไว้ที่ Activity) History)

18 of 53

Primero cases & forms are updated with HIS information...

(เคสและฟอร์มของ Primeroได้รับการอัพเดทข้อมูลจากระบบ HIS)

‘Last Sync’ timestamp updated

Check for inserted/updated forms (ทำการตรวจสอบข้อมูลที่ดึงมาหรือทำการบันทึกข้อมูลส่วนอื่นๆเพิ่ม)

‘Last Sync’ timestamp  updated (ข้อมูลที่มีการเชื่อมล่าสุด โชว์พร้อมกับวันที่มีการดึงข้อมูล)

19 of 53

Testing the solution...�(การทดสอบระบบ)

Confidential Open Function Group UNICEF Project

20 of 53

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 ถึงจะสามารถกดได้ใหม่อีกครั้ง พร้อมกับระบบจะแสดงวันและเวลาที่มีการดึงข้อมูลสำเร็จ)�

21 of 53

Let’s log in...

Confidential Open Function Group UNICEF Project

22 of 53

How to test... (การทดสอบระบบ)

  • Create a new case, or click the SYNC button on an existing case (สร้างเคสใหม่ หรือ กดปุ่ม SYNC กับข้อมูลของเคสที่มีอยู่แล้วในระบบ)�→ See the following slides for detailed instructions� (ขั้นตอนการทดสอบระบบในหน้าถัดไป)

→ OpenFn will assign you sample national_ids to test with�    (OpenFn จะกำหนดเลขที่บัตรประชาชนสำหรับใช้ในการทดสอบครั้งนี้)

  • Check the case for updated or “synced” data�(ตรวจสอบข้อมูล case ที่ได้รับการ updated หลังจากการ sync ข้อมูล)
  • Log your results in this sheet �(บันทึกผลการทดสอบในexcel sheet (แชร์ excel sheet)

Confidential Open Function Group UNICEF Project

23 of 53

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)������

24 of 53

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)�������

25 of 53

Case data for the following might be updated by the HIS sync: (ข้อมูลที่เกี่ยวกับเคสตามที่ระบุด้านล่าง สามารถดึงมาจากระบบ HIS)

  • Case Registration(ลงทะเบียนผู้ป่วย)/Identification information (หมายเลขประจำตัวผู้ป่วย)
  • Education and Career (ข้อมูลการศึกษาและอาชีพของผู้ป่วย)
  • Department Identification (หมายเลขประจำตัวของแผนก)
  • Assessment forms (การประเมิน) (Physical Examination-การตรวจร่างกาย, Health Assessment-การประเมินด้านสุขภาพ, Social Assessment-การประเมินทางสังคม, Unexpected Pregnancy-การตั้งครรภ์ไม่พึงประสงค์, Conclusion- ข้อสรุป)

������

Check for updated information from HIS (ตรวจสอบข้อมูลที่มีการอัพเดทจากระบบ HIS)�

26 of 53

Let’s log in...

Confidential Open Function Group UNICEF Project

27 of 53

  1. Scenarios

Testing the solution...

Confidential Open Function Group UNICEF Project

28 of 53

Administrators training...��(การสอนให้กับกลุ่ม admin ของระบบ)

Confidential Open Function Group UNICEF Project

29 of 53

Let’s log in...��มาเริ่มกันเลย

www.openfn.org/login��To register your OpenFn account:�(สำหรับผู้ที่ยังไม่มี account เพื่อเข้าระบบ ต้องทำการสมัครก่อน)

www.openfn.org/signup

Confidential Open Function Group UNICEF Project

30 of 53

Managing jobs...

Confidential Open Function Group UNICEF Project

การจัดการงานบนระบบ...

31 of 53

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

32 of 53

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

33 of 53

Managing Jobs

  1. Jobs run automatically (admins do not need to edit, only monitor) (กระบวนการทำงานทั้งหมดจะเป็นแบบอัตโนมัติ ผู้ดูแลระบบของทางกระทรวงฯ มีหน้าที่ตรวจสอบสถานะว่ากระบวนการเสร็จสมบูรณ์หรือมีข้อผิดพลาดใดหรือไม่)
  2. Reasons to edit jobs…
    1. Update field mappings (มีการเปลี่ยนแปลงการ mapping ข้อมูล)
    2. If the Primero dropdown list options change (for example, Nationality)(มีการเปลี่ยนแปลง ข้อมูล dropdown ใน Primero เช่น มีการเพิ่มข้อมูล เชื้อชาติ สัญชาติ หรือศาสนา)
  3. If you need to edit a job or update field mappings → contact support@openfn.org for support�กรณีต้องมีการปรับปรุงแก้ไขดังกล่าวให้ติดต่อทีมงาน OpenFN โดยผ่านช่องทางอีเมลล์ที่ support@openfn.org

Confidential Open Function Group UNICEF Project

34 of 53

Monitoring Job Runs &�Activity History...

Confidential Open Function Group Version 2.0

การตรวจสอบกระบวนการทำงาน และประวัติการทำงาน ...

35 of 53

OpenFn logs every transaction in Activity History...

ทุกการทำงานจะถูกเก็บไว้ใน ประวัติการทำงาน...

36 of 53

Confidential Open Function Group Version 2.0

Review run failures to troubleshoot integration errors...

⚠️ Job run failed…?

การดูข้อมูลกระบวนการที่เกิด ข้อผิดพลาด และการแก้ปัญหา...

⚠️ เกิดข้อผิดพลาด…?

37 of 53

Confidential Open Function Group Version 2.0

Click into the run to review the logs...

Exit codes...0. Success1. Error (Sync error)2-5. above (contact OpenFn support)

การดูข้อมูลที่เกิดความผิดพลาด...

ดูที่ Exit codes...0. สำเร็จ 1. ผิดพลาด2-5. หรือมากกว่า ให้ติดต่อ OpenFN

38 of 53

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

39 of 53

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.

ดูรายละเอียดข้อผิดพลาด...

40 of 53

Confidential Open Function Group Version 2.0

Turn on notifications to receive email alerts...

การตั้งค่าอีเมลล์เพื่อให้แจ้งผลลัพธ์ของกระบวนการทำงาน

41 of 53

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 เช่นกัน

42 of 53

Confidential Open Function Group Version 2.0

View all available Credentials ...

Note that every Credential has an “Owner”.

  • Only Owners can view/ edit credential details (สิทธิจำกัดอยู่ที่เจ้าของเท่านั้น)
  • Owners are responsible for updating credentials (จะต้องมีการอัพเดทเสมอ)
  • After updating Credentials, link to the relevant job (ต้องตรวจงานที่เกี่ยวข้องหลังจากอัพเดทแล้วเสมอ)

การเข้าดูข้อมูลแสดงตัว (Credentials) ...

43 of 53

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 เสมอ

44 of 53

If authentication details change...

  • Credential Owner* will need to update the login details in the OpenFn credential record

(ถ้ามีการเปลี่ยนแปลง credential เข้าของ credentialนั้นจะต้องทำการอัพเดทในระบบ OpenFN ด้วย)�

*We recommend you determine which administrator(s) will be the credential owners. ��(แนะนำให้ทางกระทรวงฯวางแผนว่าใครจะเป็นผู้ดูแล credential)

Confidential Open Function Group UNICEF Project

45 of 53

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 จุดประสงค์หลักในการมีสิทธินี้คือเพื่อให้สิทธิในการตรวจสอบสถานะการเชื่อมต่อข้อมูล

สิทธินี้ไม่ควรให้แก่ผู้ใช้งานทั่วไป

46 of 53

Admin users can add/remove other OpenFn users….

Monitor Activity History to view the status of job runs...

ผู้ดูแลระบบจะสามารถเพิ่มหรือลบรายชื่อบนระบบ OpenFN ได้….

47 of 53

Troubleshooting Basics & �Support

Confidential Open Function Group UNICEF Project

การแก้ปัญหาเบื้องต้นและการให้ความช่วยเหลือ

48 of 53

Confidential Open Function Group Version 2.0

Monitor Activity History to view the status of job runs...

ตรวจสอบสถานการณ์ทำงานจาก Activity History ...

49 of 53

When you receive an error email��เมื่อได้รับอีเมลล์แจ้งว่าเกิดข้อผิดพลาด...�

  1. Open the email…
  2. Read the error message
  3. Inspect & Take Action

�1. เปิดอีเมลล์นั้น�2. ดูว่ามีปัญหาใด�3. ตรวจสอบและปฏิบัติการ�

Confidential Open Function Group UNICEF Project

50 of 53

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 อีกครั้ง

51 of 53

Does the run fail again in ‘Activity History’?

กรณีพบว่ากระบวนการดึงข้อมูลยังเกิดข้อผิดพลาดอยู่�

  1. Review the error message to troubleshoot
  2. Email support@openfn.org for help
  3. Copy the system administrators���1. ตรวจสอบข้อมูลความผิดพลาด�2. ส่งอีเมลล์แจ้งทีมงาน OpenFN ที่ support@openfn.org�3. โดยให้ CC ผู้ดูแลระบบท่านอื่น ๆ ไว้ด้วย

Confidential Open Function Group UNICEF Project

52 of 53

Support Contacts�บุคคลติดต่อ กรณีต้องการความช่วยเหลือ

UNICEF: TO FINALIZE��MOPH: TO FINALIZE

Confidential Open Function Group UNICEF Project

53 of 53

Questions? Forget something? �

Github: github.com/OpenFn/primero-thailand

  1. Technical documentation (คู่มือด้านเทคนิค)
  2. Videos (วีดีโอ)
  3. Admin Guide (คู่มือผู้ดูแลระบบ)
  4. Data Sharing Protocols (กระบวนการในการแลกเปลี่ยนข้อมูล)
  5. Mappings (การจับคู่ข้อมูล)
  6. Support contacts (บุคคลติดต่อกรณีต้องการความช่วยเหลือ)

Confidential Open Function Group UNICEF Project