Welcome to MIS developer doc’s documentation!

Introduction

'logo-cnm'

As a malaria program moves towards the elimination phase there is a need to react promptly to every malaria positive case and not wait for information to flow through a routine system. The new malaria information was designed for real-time reporting to address this need and support the move towards malaria elimination in Cambodia. The new system was designed by Malaria National Program (CNM) staff and the system is being implemented in 21 provinces since November 2017, covering 3170 villages that have Village Malaria Workers (VMW) and 816 health centers in Cambodia. All malaria cases reported from Village Malaria Workers and Health Center staff lead to automatic alerts to appropriate district officer (based on the location of the village and health center) to take action in real-time. The technology has been designed to engage the whole malaria control program team from the senior staff of the National Center for Parasitology, Entomology and Malaria Control (CNM) at the central level to the voluntary workers living in the endemic villages around the country. This level of coordination and efficiency is required during the final stages of malaria elimination. For a system to be useful it must be designed in close collab with the users. It must be responsive to the constantly changing requirements of a country in the end stages of malaria elimination where new ideas and initiatives are being delivered frequently. This is why we argue that development in-country is the most appropriate way.

MIS (Malaria Information System) is an web base application was originally developed by CNM.

Who is for MIS

  • Web base application (Recommended Google Chrome)

User

Devices

CNM, PHD, CSO, OD

Computer, Tablet, Smart Phone (Using browser)

  • Adroid Application

User

Devices

HF staffs

Tablet (Minimum screen size 10 inch)

VMW

Smart Phone

Technology usage

Development Tools

  • Visual Studio 2015

  • Microsoft SQL Server Managment Studio

  • PHP Tools for Visual Studio (crack)

  • Microsoft Drivers for PHP for SQL Server

Server Requirement

  • PHP version 7.2+

  • Microsoft SQL Server

  • Microsoft windows server 2012

Server site programming languages

  • PHP programming language (v7.2)

PHP Framework

Managing Databases

We use 2 databases

  • DB_MIS2 for real data

  • DB_MIS2_LOCK for locking data in previous years

Project Structure

MIS prject is follow MVC structure.

Model view (KnockoutJS - MVVM)

To bind data with UI we use KnockoutJS MVVM structure. All ViewModels file is in \media\ViewModel directory.

Third Party

Some task is run by .exe file

Notification (case)

  • Multi thread message purpose we use \media\Message\MIS Notification.exe

  • Other library: Firebase cloud message.

  • Git repository https://gitlab.com/rattana/mis-notification.git

Export Tool (on home page)

'Export tool on home page'
  • To speed up export data to excel we use \media\ExportExcel\MISExcel.exe

  • Git repository https://gitlab.com/mis-projects/mis-excel.git

Daily task (cron job)

  • Daily task cron job execute C:\MIS\Task Scheduler\MIS Daily Task.exe for dashboard data and pivot data. This cron job run by windows task scheduler every day.

  • Git repository: https://gitlab.com/mis-projects/mis-task-scheduler.git

Monthly task (cron job)

  • Monthly task cron job execute C:\MIS\Task Scheduler\MIS Monthly Task.exe for log HF and VMW. This cron job run by windows task scheduler every month.

  • Git repository: https://gitlab.com/mis-projects/mis-task-scheduler.git

DB Backup (cron job)

  • DB Backup task cron job execute C:\MIS\Task Scheduler\MIS DB Backup.exe to run backup data. This cron job run by windows task scheduler every day. Backed upd data will store on google drive

  • Git repository: https://gitlab.com/mis-projects/mis-db-backup.git

Cron Job

  • To run cron job on windows server we need wget.exe.

  • Click here to Download

Setup cron job

  1. Install wget.exe

  2. Go to Task Scheduler

  3. Righ click on task area then click on Create New Task

  4. Click on Actions

  5. Click on New…

  6. Click on Browse…> go to wget.exe (directory that installed wget.exe) > click on Open

  7. In textbox Add arguments (optional): fill in URL of task, e.g: /cron/notifyVMWFU/Day3

List of cron job

VMW follow up patient notification (Pv radical cure)

  • Purpose: Send message notification to VMW’s smart phone about date of follow up.

  • Type: run everyday.

  • URL /cron/notifyVMWFU/parameter

  • parameter (string) – Day3 / Day7 / Day14.

HC follow up patient notification (Pv radical cure)

  • Purpose: Send message notification to HC’s tablet about follow up.

  • Type: run everyday.

  • URL /cron/notifyHFFU/parameter

  • parameter (string) – Day3 / Day7 / Day14.

Foci reminder notification

  • Purpose: send message notification to VMW, HC, OD, PHD, CSO.

  • Type: run everyday.

  • URL /cron/remindFoci

Note

if malaria case that not yet do foci investigation in during 5 days, system will produce notification.

Reactive case reminder notification

  • Purpose: send message notification to HC and VMW.

  • Type: run everyday.

  • URL /cron/remindReactive

Note

if malaria case that not yet do reactive case in during 3 days, system will produce notification.

Hight risk village reminder notification

  • Purpose: send message notification to HC, OD, PHP, CSO.

  • Type: run every.

  • URL /cron/remindHighRiskVillage

Note

  • Retrieve positive last 12 months.

  • Retrieve positive last month.

  • Calculate STD, AVG.

  • If Positive last month > STD + AVG => High risk.

Stock out notification

  • Purpose: send message notification to OD, PHP, CSO

  • Type: run everyday.

  • URL /cron/notifyNonStock

Module

Use case diagram

Use case malaria & ITN data

Use case for malaria & ITN data

Use case for malaria & ITN data

Detail diagram

Detail diagram

Detail diagram

Malaria & ITN Data

VMW

Insert/Update/Delete VMW case

  • System: Enter data of malaria case that report by VMW

  • Primary Actor: OD staff, PHD staff.

  • Scenario: When VMW does not report malaria data by smart phone then OD staff will be responsible for entering data.

Table diagram

+----------------+        +---------------------+
|                |        |                     |
|tblVMWActivity  |--------|tblVMWActivityCases  |
|                |        |                     |
+----------------+        +---------------------+
        |
        |
        |
+-----------------+
|                 |
|tblCensusVillage |
|                 |
+-----------------+
  • Controller: CaseReport.php ( , ,vmwDeleteReport)

    • vmw() : view vwm page

    • vmwGetPreData() get ODs, HFs, Treatments list.

    • vmwGetReport() get VMWs’ villages and reported months list when you select HF.

    • vmwGetCase() get vmw case report when you click on report month of any village.

    • vmwUpdateCase() insert/update/delete case.

    if(Rec_ID > 0)
      then update()
    else if ( Rec_ID < 0 )
      then delete()
    else insert()
    
  • View: vmwcase_view.php

  • ViewModel: VMWCase.js

root
|
|__application
|  |
|  |__controller
|  |  |
|  |  |__CaseReport.php
|  |
|  |__views
|     |
|     |__vmwcase_view.php
|
|__media
   |
   |__ViewModel
      |
      |__VMWCase.js

HC

Insert/Update/Delete HC case

  • System: Tool for entering malaria case that report by health center/ referal hospital.

  • Actor: OD staff

  • Scenario: When HC/RH staff cannot report its case then OD staff will be responsible for entering data.

Table diagram

+---------------+        +------------------+
|               |        |                  |
|tblHFActivity  |--------|tblHFActivityCases|
|               |        |                  |
+---------------+        +------------------+
        |
        |
        |
+---------------+
|               |
|tblHFCodes     |
|               |
+---------------+
  • Controller: CaseReport.php

    • hf() : view hf page

    • hfGetPreData() Treatments list.

    • hfGetReport() get HF and reported months list when you select OD.

    • hfGetCase() get HF case report when you click on report month of any HF.

    • hfUpdateCase() insert/update/delete case.

    if( Rec_ID > 0 )
      then update()
    else if ( Rec_ID < 0 )
      then delete()
    else insert()
    
  • View: hfcase_view.php

  • ViewModel: HFCase.js

root
|
|__application
|  |
|  |__controller
|  |  |
|  |  |__CaseReport.php
|  |
|  |__views
|     |
|     |__hfcase_view.php
|
|__media
   |
   |__ViewModel
      |
      |__HFCase.js

MMP

Insert/Update/Delete MMP case

  • System: Tool for MMP to enter malaria case.

  • Actor: MMP staff.

  • Scenario: MMP staff login and go to MMP tool then enter data.

Table diagram

+---------------+        +------------------+
|               |        |                  |
| tblMLActivity |--------|tblMLActivityCases|
|               |        |                  |
+---------------+        +------------------+
        |
        |
        |
+---------------+
|               |
|   tblMLCodes  |
|               |
+---------------+
  • Controller: CaseReport.php

    • ml() : view MMP page

    • mlGetPreData() get region, province and treatments list.

    • mlGetReport() get group and reported months list when you select province.

    • mlGetCase() get case report when you click on report month of any group.

    • mlUpdateCase() insert/update/delete case.

    if ( Rec_ID > 0 )
      then update()
    else if ( Rec_ID < 0 )
      then delete()
    else insert()
    
  • View: mlcase_view.php

  • ViewModel: MLCase.js

root
|
|__application
|  |
|  |__controller
|  |  |
|  |  |__CaseReport.php
|  |
|  |__views
|     |
|     |__mlcase_view.php
|
|__media
   |
   |__ViewModel
      |
      |__MLCase.js

Police

Insert/Update/Delete Police case

Table diagram

+---------------+        +------------------+
|               |        |                  |
|tblPLActivity  |--------|tblPLActivityCases|
|               |        |                  |
+---------------+        +------------------+
        |
        |
        |
+---------------+
|               |
|tblPLCodes     |
|               |
+---------------+
  • Controller: CaseReport.php

    • pl() : view police page

    • plGetPreData() get province, troop, treatment list.

    • plGetReport() get post, district, month report list.

    • plGetCase() get case report when you click on report month.

    • plUpdateCase() insert/update/delete case.

    if ( Rec_ID > 0 )
      then update()
    else if ( Rec_ID < 0 )
      then delete()
    else insert()
    
  • View: plcase_view.php

  • ViewModel: PLCase.js

root
|
|__application
|  |
|  |__controller
|  |  |
|  |  |__CaseReport.php
|  |
|  |__views
|     |
|     |__plcase_view.php
|
|__media
   |
   |__ViewModel
      |
      |__PLCase.js

Bed net

Insert/Update/Delete bed net

Tablet diagram

+-----------------+     +---------------+     +---------------+
|                 |     |               |     |               |
| tblCensusVillage|-----| tblMalBedNet  |-----| tblHFCodes    |
|                 |     |               |     |               |
+-----------------+     +---------------+     +---------------+
  • Controller: CaseReport.php

    • bednet() : view bed net page.

    • bednetGetReport() get groups and month report list.

    • bednetGetCase() get bed net report when you click on report month.

    • bednetUpdateCase() insert/update/delete bed net.

    if ( Rec_ID > 0 )
      then update()
    else if ( Rec_ID < 0 )
      then delete()
    else insert()
    
    • bednetDeleteReport() delete report.

  • View: bednet_view.php

  • ViewModel: Bednet.js

root
|
|__application
|  |
|  |__controller
|  |  |
|  |  |__CaseReport.php
|  |
|  |__views
|     |
|     |__bednet_view.php
|
|__media
   |
   |__ViewModel
      |
      |__Bednet.js

MMP bed net

Insert/Update/Delete MMP bed net

Tablet diagram

+-------------+    +-------------+
|             |    |             |
| tblMLBednet |----| tblMLCodes  |
|             |    |             |
+-------------+    +-------------+
  • Controller: CaseReport.php

    • bednetML() : view MMP bed net page.

    • mlGetPreData() get region, province and treatments list.

    • bednetMLGetReport() get groups and month report list.

    • bednetMLGetCase() get bed net report when you click on report month.

    • bednetMLUpdateCase() insert/update bed net.

    if ( Rec_ID == -1 )
      then insert()
    else update()
    
    • bednetMLDeleteReport() delete report.

  • View: mlbednet_view.php

  • ViewModel: MLBednet.js

root
|
|__application
|  |
|  |__controller
|  |  |
|  |  |__CaseReport.php
|  |
|  |__views
|     |
|     |__mlbednet_view.php
|
|__media
   |
   |__ViewModel
      |
      |__MLBednet.js

Police bed net

Insert/Update/Delete police bed net report

Tablet diagram

+-------------+         +------------------+
|             |         |                  |
| tblPLBednet | --------|tblPLTroopCodes   |
|             |         |                  |
+-------------+         +------------------+
  • Controller: CaseReport.php

    • bednetPL() : view police bed net page.

    • plGetPreData() get province list.

    • bednetPLGetReport() get troop and month report list.

    • bednetPLGetCase() get bed net report when you click on report month.

    • bednetPLUpdateCase() insert/update bed net.

    if ( Rec_ID == -1 )
      then insert()
    else update()
    
    • bednetPLDeleteReport() delete report.

  • View: plbednet_view.php

  • ViewModel: PLBednet.js

root
|
|__application
|  |
|  |__controller
|  |  |
|  |  |__CaseReport.php
|  |
|  |__views
|     |
|     |__plbednet_view.php
|
|__media
   |
   |__ViewModel
      |
      |__PLBednet.js

Bed net other

Insert/Update/Delete other bed net report

Tablet diagram

+-------------------+
|                   |
| tblMalBednetOther |
|                   |
+-------------------+
  • Controller: CaseReport.php

    • bednetother() : view police bed net page.

    • bednetOtherGetReport() get troop and month report list.

    • bednetOtherUpdateReport() insert/update/delete bed net.

if ( Rec_ID > 0 )
  then update()
else if ( Rec_ID < 0 )
  then delete()
else insert()
  • View: bednetother_view.php

  • ViewModel: BednetOther.js

root
|
|__application
|  |
|  |__controller
|  |  |
|  |  |__CaseReport.php
|  |
|  |__views
|     |
|     |__bednetother_view.php
|
|__media
   |
   |__ViewModel
      |
      |__BednetOther.js

Questionaire

tblQuestion11 , tblQuestion12, tblQuestion21, tblQuestion13, tblQuestion22

Annex 1: Village Selection

Table

+---------------+
|               |
| tblQuestion11 |
|               |
+---------------+
  • Controller: Question.php

    • index(Q11) view page.

    • getData(tblQuestion11) retrieve data.

  • Controller: Direct.php

    • insert()

    • update()

  • View: question11_view.php

  • ViewModel: Question11.js

Annex 2: Hotspot Identification

Table

+---------------+
|               |
| tblQuestion12 |
|               |
+---------------+
  • Controller: Question.php

    • index(Q12) view page.

    • getData(tblQuestion12) retrieve data.

  • Controller: Direct.php

    • insert()

    • update()

  • View: question12_view.php

  • ViewModel: Question12.js

Annex 4: MMW Recruitment

Table

+---------------+
|               |
| tblQuestion21 |
|               |
+---------------+
  • Controller: Question.php

    • index(Q21) view page.

    • getData(tblQuestion21) retrieve data.

  • Controller: Direct.php

    • insert()

    • update()

  • View: question21_view.php

  • ViewModel: Question21.js

Annex 5, 6: Site Visit Active Screening

Table

+---------------+
|               |
| tblQuestion13 |
|               |
+---------------+
  • Controller: Question.php

    • index(Q13) view page.

    • getData(tblQuestion13) retrieve data.

  • Controller: Direct.php

    • insert()

    • update()

  • View: question13_view.php

  • ViewModel: Question13.js

Annex 7: Forest Pack

Table

+---------------+
|               |
| tblQuestion22 |
|               |
+---------------+
  • Controller: Question.php

    • index(Q22) view page.

    • getData(tblQuestion22) retrieve data.

  • Controller: Direct.php

    • insert()

    • update()

  • View: question22_view.php

  • ViewModel: Question22.js

Foci investigation

Table v1

+-----------------------+     +-------------------+
|                       |     |                   |
| tblFociInvestiation   |-----| tblCensusVillage  |
|                       |     |                   |
+-----------------------+     +-------------------+

Table v2

+-----------------------+     +-------------------+
|                       |     |                   |
| tblFociInvestiation2  |-----| tblCensusVillage  |
|                       |     |                   |
+-----------------------+     +-------------------+
List of foci
  • Controller: Foci.php

    • index() view page

    • getData() we use store procedure SP_Get_FociList

    • getDetail()

  • View: foci_view.php

  • ViewModel: Foci.js

Detail of foci v1
  • Controller: Foci.php

    • open(village_code) to open form of foci v1.

    • save1() to save data of foci v1.

    if ( Rec_ID == null )
      then insert()
    else update()
    
    • getPatient()

  • View: foci1_view.php

  • ViewModel: Foci1.js

Detail of foci v2
  • Controller: Foci.php

    • open(village_code) to open form of foci v2.

    • save2() to save data of foci v2.

    if ( Rec_ID == null )
      then insert()
    else update()
    
    • getClassify()

  • View: foci1_view.php

  • ViewModel: Foci1.js

Follow up

VMW follow up
  • System: Followup tool for enter VMW followup data.

  • Primary actor: OD staff.

  • Scenario: When VMW report malaria case with Pv or Mix specie then system will create patient code and write to database and create VMW notification log. when patient go to health center to get Pv radical cure then Hc staff update case by adding G6PD result and number of primaquine then system will create follow up form for that patient. In case Hc does not enter data then OD staff will be responsible for entering data.

Table

+----------------+
|                |
| tblVMWFollowup |
|                |
+----------------+
  • Controller: VMWFollowup.php

    • getData() get list of VMW follow up

    • getDetail() get detail of VMW follow up

    • delete() delete follow up.

    • save() insert/update

    if ( empty (Rec_ID) )
      then insert()
    else update()
    
  • View: vmwfollowup_view.php

  • ViewModel: VMWFollowup.js

HC follow up
  • System: Followup tool for enter HF followup data.

  • Primary actor: OD staff.

  • Scenario: When HC report malaria case with Pv or Mix specie then system will write to database and generate patient code. If patient come from Village that has VMW system will create VMW Notificatino, otherwise system will create HC notification. If that patient get Pv radical cure service then Hc update case by enter result of G6PD and number of primaquine then system will create follow up form. in case Hc staff does not enter followup data in time then OD staff will be responsible for entering data.

Table

+---------------+
|               |
| tblHCFollowup |
|               |
+---------------+
  • Controller: HCFollowup.php

    • getData() get list of follow up

    • getDetail() get detail of follow up

    • delete() delete follow up.

    • save() insert/update

    if ( empty (Rec_ID) )
      then insert()
    else update()
    
  • View: hcfollowup_view.php

  • ViewModel: HCFollowup.js

HIS data upload

Table diagram

+-----------------+     +-----------------+     +-----------------+     +-----------------+
|                 |     |                 |     |                 |     |                 |
| tblHisDipstick  |     |    tblHisSlide  |     |   tblHisTreat   |     |    tblHisVMW    |
|                 |     |                 |     |                 |     |                 |
+-----------------+     +-----------------+     +-----------------+     +-----------------+
  • Controller: HIS.php

    • getData() get list of his report

    • getDetail() show detail of report by month

    • getReport() show report of HIS and MIS

    • upload() upload excel file of HIS

    • delete() delete report

  • View his_view.php

  • ViewModel: HIS.js

Border malaria case upload

Table

+----------------+
|                |
| tblBorderCases |
|                |
+----------------+
  • Controller: BorderImport.php

  • View: borderimport_view.php

  • ViewModel: BorderImport.js

VMW QA

  • System: VMW QA tool for OD/PHD monitor VMW.

  • Actor: OD , PHD

  • Scenario: When HC/OD/PHP use tablet to enter data, then OD/PHD can use this tool to view questionaire, supervision schedule, Monitor, Report, Dashboard.

Table diagram

+---------------------+     +---------------------------+     +-------------------------+
|                     |     |                           |     |                         |
| tblVMWQuestionnaire |-----| tblVMWQuestionnaireDetail |-----| tblVMWQuestionnaireItem |
|                     |     |                           |     |                         |
+---------------------+     +---------------------------+     +-------------------------+
  • Controller: VMWQA.php

  • View: vmwqa_view.php

  • ViewModel: VMWQA.js

Lastmile

  • System: Last mile

  • Actor: OD/PHD

  • Scenario: When VMW cannot enter data, then OD staff will be responsible for entering data.

Table diagram

+----------------------+     +----------------------------+     +----------------+
|                      |     |                            |     |                |
| tblLastmileHouseHold |----<| tblLastmileHouseHoldMember |----<| tblLastmileTDA |
|                      |     |                            |     |                |
+----------------------+     +----------------------------+     +----------------+
                                |                   |
                                |                   |
                        +----------------+    +----------------+
                        |                |    |                |
                        | tblLastmileIPT |    | tblLastmileAFS |
                        |                |    |                |
                        +----------------+    +----------------+
  • Controller: Lastmile.php

  • View: lastmile_view.php

  • ViewModel: Lastmile.js

Note

TDA1 and TDA2 must be 28 days apart.

Must complete TDA1/TDA2 before do IPT.

IPT and TDA1 must be 14 days apart.

IPT and TDA2 must be 28 days apart.

Check list

Check list HC

Table diagram

+----------------+      +----------------------+
|                |      |                      |
| tblChecklistHC |-----<| tblChecklistHCDetail |
|                |      |                      |
+----------------+      +----------------------+
  • Controller: Checklist.php

  • View: checklist_hc_view.php

  • ViewModel: Checklist_HC.js

Check list OD

Table diagram

+----------------+      +----------------------+
|                |      |                      |
| tblChecklistOD |-----<| tblChecklistODDetail |
|                |      |                      |
+----------------+      +----------------------+
  • Controller: Checklist.php

  • View: checklist_od_view.php

  • ViewModel: Checklist_OD.js

Check list EPI

Table diagram

+-----------------+      +-----------------------+
|                 |      |                       |
| tblChecklistEPI |-----<| tblChecklistEPIDetail |
|                 |      |                       |
+-----------------+      +-----------------------+
  • Controller: Checklist.php

  • View: checklist_epi_view.php

  • ViewModel: Checklist_EPI.js

Stock

Stock request

Table diagram

+------------+      +------------+
|            |      |            |
| tblStockV2 |-----<| tblHFCodes |
|            |      |            |
+------------+      +------------+
  • Controller: Stock.php

    • request() view UI of stock request.

    • getRequest() get stock request data.

    • getDetail() get detail stock item of hc.

    • offer() confirm stock offer.

  • View: stockrequest_view.php

  • ViewModel: StockRequest.js

Stock Data

Stock HC
+------------+      +------------+
|            |      |            |
| tblStockV2 |-----<| tblHFCodes |
|            |      |            |
+------------+      +------------+
  • Controller: Stock.php

    • report() view UI of stock data.

    • getReportHF() get month of report.

    • getReportDetailHF() get detail sotck item data.

    • exportExcel() export to excel.

    • saveStockHF() Insert/Update stock data.

    if (Rec_ID == 0)
      Insert()
    else Update()
    
  • View: stockreport_view.php

  • ViewModel: StockReport.js

Stock OD
+------------+      +------------+
|            |      |            |
| tblStockOD |-----<|    tblOD   |
|            |      |            |
+------------+      +------------+
  • Controller: Stock.php

    • report() view UI of stock data.

    • getReportOD() get month of report.

    • getReportDetailOD() get detail sotck item data.

    • exportExcel() export to excel.

    • saveStockOD() Insert/Update stock data.

    if (Rec_ID == 0)
      Insert()
    else Update()
    
  • View: stockreport_view.php

  • ViewModel: StockReport.js

Stock CNM

Table diagram

+-------------+
|             |
| tblStockCNM |
|             |
+-------------+
  • Controller: Stock.php

    • report() view UI of stock data.

    • getReportCNM() get month of report.

    • getReportDetailCNM() get detail sotck item data.

    • exportExcel() export to excel.

    • saveStockCNM() Insert/Update stock data.

    if (Rec_ID == 0)
      Insert()
    else Update()
    
  • View: stockreportcnm_view.php

  • ViewModel: StockReportCNM.js

Stock item

  • System: tool for admin to set up stock item (which item is for OD/HC)

  • Actor: Admin

  • Scenario: Admin use this tool to Insert/update/Setup stock item.

Table diagram

+--------------+
|              |
| tblStockItem |
|              |
+--------------+
  • Controller: Stock.php

    • item() view UI of stock data.

    • getItem() get month of report.

    • saveItem() Insert/Update stock data.

    if (Id == 0)
      Insert()
    else Update()
    
  • View: stockitem_view.php

  • ViewModel: StockItem.js

Report

Dashboard

  • Controller: Dashboard.php

  • Main View: dashboard_v2_view.php

  • Sub view:

    • dashboard_overview_view.php

    • dashboard_border_view.php

    • dashboard_intensification_view.php

    • dashboard_ipmappopup_view.php

    • dashbarod_map_view.php

    • dashboard_outbreak_view.php

    • dashbaord_overview_view.php

    • dashboard_pfmap_view.php

    • dashboard_stock_view.php

    • dashboard_surveillance_view.php

    • dashboard_table_view.php

  • Main ViewModel: Dashboard.js

  • Sub ViewModel:

    • Dashboard_Border.js

    • Dashboard_Intensification.js

    • Dashboard_Map.js

    • Dashboard_Outbreak.js

    • Dashboard_PFMap.js

    • Dashboard_Overview.js

    • Dashboard_Stock.js

Note

We use store procedure to retrieve data

To improve performance, first load data will read from file. all files is in root\media\Dashboard\Preload Data directory

Overview
Insecticide Treated Net (ITN)
  • Store procedure: SP_Dashboard_OverviewNet

National Surveillance data (55 ODs)
  • Store procedure: SP_Dashboard_OverviewCase2

Top 10 Villages having most cases by species
  • Store procedure: SP_Dashboard_ChartTop30Vill

Top 10 HFs having most cases by species
  • Store procedure: SP_Dashboard_ChartTop30HF

Treated malaria cases from HF and VMW by month
  • Store procedure: SP_Dashboard_OverviewChart

Severe malaria cases and deaths from HF by month
  • Store procedure: SP_Dashboard_OverviewChart

Malaria test results (HF, VMW) by species
  • Store procedure: SP_Dashboard_OverviewChart

Number of malaria-reported case and death by year
  • Store procedure: SP_Dashboard_ChartCaseDeathSpecie

Percentage of malaria cases by species and year
  • Store procedure: SP_Dashboard_ChartCaseDeathSpecie

Percentage of malaria cases by sex and age group
  • Store procedure: SP_Dashboard_ChartSexAge

Malaria Cases by Species, Provinces and Year
  • Store procedure: SP_Dashboard_ChartSpecieProvince

Malaria Incidence and Mortality Rate by Year and Provinces
  • Store procedure: SP_Dashboard_ChartIncidentMortality

Surveillance
  • Store procedure: SP_Dashboard_SurveillanceData2

Stock
Current Stock HF Info by OD

Count number of HF by status by OD (out of stock, low stock, Proper stock, congested stock)

  • Store procedure: SP_Dashboard_Stock

Current Stock HF info by Province

Count number of HF by status by province (out of stock, low stock, Proper stock, congested stock)

  • Store procedure: SP_Dashboard_Stock

Malaria commodity map

Map of HF by status (out of stock, low stock, Proper stock, congested stock)

  • Store procedure: SP_Dashboard_StockMap

Current stock HF Item by OD

Count balance of HF’s item by OD.

  • Store procedure: SP_Dashboard_Stock

Current stock HF Item by province

Count balance of HF’s item by province.

  • Store procedure: SP_Dashboard_Stock

Top 30 HFs malaria commodity having most case

Count RDT, ASMQ, PQ of HFs that having most case.

  • Store procedure: SP_Dashboard_StockTop30HF

Discrepancy between malaria cases and commodity
  • Store procedure: SP_Dashboard_StockDiscrepancy

Border
Malaria cases by commune along the border
  • Store procedure: SP_Dashboard_BorderMap

Map
Annual foci classification and monitoring
  • Store procedure: SP_Dashboard_MapFoci

Note

if duration of foci less than or equal to 12 months then it is Active Focus

if duration of foci between 13 months and 36 months then it is Residual Focus

if duration of foci more than 36 months this it is Cleared

Malaria cases by OD
  • Store procedure: SP_Dashboard_ChartTop10OD

Malaria hotspot by village
Malaria hotspot by village for last 36 months
  • Store procedure: SP_Dashboard_MapTop30Vill

Note

  • step 1: total positive case by village.

  • step 2: top 30 villages by total positive cases by each month.

  • step 3: top 30 villages that most frequent from second step.

Malaria aber percentage by OD
  • Store procedure: SP_Dashboard_MapAber

Note

Aber = total test * 100 / total population

Malaria Incidence by OD
  • Store procedure: SP_Dashboard_MapODInc

Note

Incidence = total positive * 1000 / total population

Malaria API Map by Village
  • Store procedure: SP_Dashboard_APIByVillageMap

Note

  • API = total postive * 1000 / total population

  • if village without population number then total population = 500

  • Annex village doesn’t include.

Table
Monthly malaria cases by species reported by provinces (55 ods)
  • Store procedure: SP_Dashboard_TableSpecieProvinceMonth

Monthly severe malaria cases reported by provinces (55 ods)
  • Store procedure: SP_Dashboard_TableSevereMonth

Number / percentage of malaria cases by age groups and sex by year (55 ods)
  • Store procedure: SP_Dashboard_TableAgeSex

Number of malaria species by age groups and sex (55 ods)
  • Store procedure: SP_Dashboard_TableAgeSexSpecie

Number of malaria severe cases by age groups and sex (55 ods)
  • Store procedure: SP_Dashboard_TableAgeSexSevere

CNM Outbreak detection tool
  • Store procedure: SP_Dashboard_OutbreakDetection

PF Map
Map
  • Store procedure: SP_Dashboard_PFMap

Number of places that have pf and mix cases
  • Store procedure: SP_Dashboard_PFMapCount

Reports

  • Controller: Report.php

  • Model View: Report.js

  • View: report_view.php

    Report are able filter by province, OD, Health center, Village, Year, Quarter, Month, Month from and Month to

VMW
VMW Report Completeness
  • Store procedure: SP_V1_VMWReportCompleteness

    show percentage of data that insert by VMW by month.

VMW Report timeline
  • Store procedure: SP_V1_VMWReportTimeline

VMW Data accuracy
  • Store procedure: SP_V1_VMWDataAccuracy

VMW Report Received
  • Store procedure: SP_V1_VMWReportReceived

show number of report that report by VMW compare with number VMW.

VMW Data (summary)
  • Store procedure: SP_V1_VMWDataSummary

Data of VMW sum by level of Province, OD, HF.

Note

  • Passive = 1 it means outreach

VMW Data (By village)
  • Store procedure: SP_V1_VMWDataByVillage

Data of VMW sum by level of Province, OD, HF, VMW village

VMW Data by month

Data of VMW by Month

  • Store procedure: SP_V1_VMWDataByMonth

Filter by:

  • Pf + Pv + Mix

  • Pf + Mix

  • Pf

  • Pv

  • Mix

Health Facility
HF Report Completeness

Percentage of report by month

  • Store procedure: SP_V1_HFReportCompleteness

HF Report timeline
  • Store procedure: SP_V1_HFReportTimeline

HF Report Accuracy
  • Store procedure: SP_V1_HFDataAccuracy

HF Report Received
  • Store procedure: SP_V1_HFReportReceived

HF Data (Summary)

Data of HF sum by level of Province, OD, HF

  • Store procedure: SP_V1_HFDataSummary

HF Data (By Village)

Data of HF sum by level of Province, OD, HF, Village

  • Store procedure: SP_V1_HFDataByVillage

HF Data by Month
  • Store procedure: SP_V1_HFDataByMonth

Filter by:

  • Pf + Pv + Mix

  • Pf + Mix

  • Pf

  • Pv

  • Mix

HF + VMW
Top 10 ODs having most cases

Data of Top 10 ODs having most cases for current and last year

  • Store procedure: SP_V1_HFVMWTop10OD

Top 30 HFs Having Most Cases

Data of top 30 HFs having most cases for current and last year.

  • Store procedure: SP_V1_HFVMWTop30HF

HFs having most cases (chart)
  • Store procedure: SP_V1_HFVMWTop30HFChart

Parameter filter

  • Top 10

  • Top 20

  • Top 30

Villages Having Most Cases (chart)
  • Store procedure: SP_V1_HFVMWTop30VillChart

Parameter filter

  • Top 10

  • Top 20

  • Top 30

HF + VMW Data (summary)

Data of HF and VMW level by Province, OD, HF

  • Store procedure: SP_V1_HFVMWDataSummary

Pv Radical Cure and Follow up
  • Store procedure: SP_V1_HFVMWPvFollowup

High Risk Villages
  • Store procedure: SP_V1_HighRiskVillage

Bed Net
Bed Net by Province
Parameter filter:
  • All (value: all)

  • Mobile + Continue (value: mc)

  • Store procedure: SP_V1_BedNetReport

    • Parameter of store procedure: bednetType, bednetDuration, level

    • Level: pv

Bed Net by OD
Parameter filter:
  • By Filter (value: 1)

  • Last 3 Years (value: 3)

  • Store procedure: SP_V1_BedNetReport

    • Parameter of store procedure: bednetType, bednetDuration, level

    • Level: od

Bed Net by HC
  • Store procedure: SP_V1_BedNetReport

    • Parameter of store procedure: bednetType, bednetDuration, level

    • Level: hc

Bed Net by Village
  • Store procedure: SP_V1_BedNetReport

    • Parameter of store procedure: bednetType, bednetDuration, level

    • Level: vl

Percentage of Pop at-risk covered by LLIN mass campaigns
  • Store procedure: SP_V1_PercentPopLLIN

Population Data Completeness
  • Store procedure: SP_V1_PopCompleteness

investigation
Investigation and ReACD
  • Parameter filter:

    • HF + VMW (value: all)

    • HF (value: hf)

    • VMW (value: vmw)

    • By Report Date (value: 0)

    • By Diagnosis Date (value: 1)

  • Store procedure: SP_V1_Investigation

M&E Elimination
  • Store procedure: SP_V1_MnEElimination

Radical Cure HSD
  • Store procedure: SP_V1_RadicalCureHSD

Stock
OD Stock Completeness
  • Store procedure: SP_V1_StockODCompleteness

HF Stock Completeness
  • Store procedure: SP_V1_StockHFCompleteness

HF Stock-out (ACT)

Data of number of HF that has stock out ACT.

  • Store procedure: SP_V1_HFStockOut

    • Parameter of store procedure: category , ACT

HF Stock-out (RDT)

Data of number of HF that has stock out RDT.

  • Store procedure: SP_V1_HFStockOut

    • Parameter of store procedure: category, RDT

OD Stock Data

List of stock data with all items

  • Store procedure: SP_V1_StockOD

HF Stock Data

List of stock data with all items

  • Store procedure: SP_V1_StockHC

Stock Forecasting
Primaquine Distribution List (7.5 mg)
  • Store procedure: SP_V1_Primaquine

    • Pf with age between 5 and 14 years then #Pf x 1

    • Pf with age greater than 14 years then #Pf x 2

    • Pv and Mix with G6PD (U/g Hb) > 6 & Hb(g/dL) > 9 and Age between 5 and 10 years then 14

    • Pv and Mix with G6PD (U/g Hb) > 6 & Hb(g/dL) > 9 and Age between 11 and 14 years then 28

    • Pv and Mix with G6PD (U/g Hb) > 6 & Hb(g/dL) > 9 and Age between 15 and 49 years then 42

    • Pv and Mix with G6PD (U/g Hb) > 6 & Hb(g/dL) > 9 and Age greater than 49 years then 56

    • HC Buffer (Calculation = Need x Min Stock HC (1))

    • OD Buffer (Calculation = Need x Min Stock OD (3))

    • Central (Calculation = Need x Min Stock CMS (6))

G6PD Distribution
  • Store procedure: SP_V1_G6PD

    • Needs (Calculation = #case_HF (PV+Mix) + #case_VMW (PV+Mix) * refered )

    • HC Buffer (Calculation = Need x Min stock HC (1))

    • OD Buffer (Calculation = Need x Min stock OD (3))

    • Central (Calculation = Need x Min stock CMS (6))

RDT Forecasting
  • Store procedure: SP_V1_StockForecasting

    • Parameter store procedure: type = rdt

    • Aber (Calculation = # Test / # Population)

    • Need (Calculation = RDT x (1+GrowthRate))

    • HC Buffer (Calculation = Average monthly RDT needs for past 12 months x 1)

    • OD Buffer (Calculation = Average monthly RDT needs for past 12 months x 3)

    • Central Buffer (Calculation = Average monthly RDT needs for past 12 months x 6)

    • None-Endemic HC (Calculation = # None-Endemic Province * 25)

    • New VMW (Calculation = # New VMW * 100)

ASMQ Forecasting
  • Store procedure: SP_V1_StockForecasting

    • Parameter store procedure: type = asmq

    • Need (Calculation = Positive rate x # Expected No. of Test - # Pregnant Woman < 3 months + # Severe case)

    • HC Buffer (Calculation = Average monthly ASMQ needs for past 12 months x 1)

    • OD Buffer (Calculation = Average monthly ASMQ needs for past 12 months x 3)

    • Central Buffer (Calculation = Average monthly ASMQ needs for past 12 months x 6)

Intensification Plan
Intensification Plan
  • Store procedure: SP_V1_IntensificationPlan

  • Parameter filter:

    • IP1 (value: 1)

    • IP2 (value: 2)

Admin Tools
Dashboard Log by Role
  • Store procedure: SP_V1_DashboardLogByRole

Dashboard Log by User
  • Store procedure: SP_V1_DashboardLogByUser

System Log by Role
  • Store procedure: SP_V1_SystemLogByRole

System Log by User
  • Store procedure: SP_V1_SystemLogByUser

HF Refered Error
  • Store procedure: SP_V1_HFErrorCheck

VMW Referred Error
  • Store procedure: SP_V1_VMWErrorCheck

Other
For supervision checklist
  • Store procedure: SP_V1_SupervisionChecklist

Lastmile
  • Store procedure: SP_V1_LastMile

Report M&E

Parameter filter: - Year - Month from - Month to - Grant

Annual cases whole country
  • Store procedure: SP_V2_AnnualCaseCountry

Note

Annual cases whole country = MIS Data + HIS Data

Annual cases endemic ODs
  • Store procedure: SP_V2_AnnualCaseOD

Note

Case in endemic 55 ODs

CI & FI
  • Store procedure: SP_V2_CIFI

Whole country cases HF
  • Store procedure: SP_V2_CaseFromHF

Note

Whol country cases HF = MIS data HF + HIS data HF

Malaria Cases VMW
  • Store procedure: SP_V2_CaseFromVMW

HF Completeness
  • Store procedure: SP_V2_HFCompleteness

VMW Completeness
  • Store procedure: SP_V2_VMWCompleteness

Nets distribution (Mass Campaign)
  • Store procedure: SP_V2_NetStatic

Nets distribution (Mobile)
  • Store procedure: SP_V2_NetMobile

Nets distribution (Continue)
  • Store procedure: SP_V2_NetContinue

Other nets distribution
  • Store procedure: SP_V2_NetOther

Public Health Facility Without Stock-out
  • Store procedure: SP_V2_HaveStock

Report Director

  • Controller: ReportDirector.php

    • index() : view director report page.

    • getReport() to retrieve data.

    • export() to export data into excel file.

    Note

    We use MISExcel.exe for exporting data into excel file. MISExcel.exe was developed by Csharp programing language.

  • View: reportdirector_view.php

  • ViewModel: ReportDirector.js

  • Store procedure: - SP_ReportDirector1 - SP_ReportDirector2 - SP_ReportDirector3 - SP_ReportDirector4 - SP_ReportDirector5

root
|
|__application
|  |
|  |__controller
|  |  |
|  |  |__ReportDirector.php
|  |
|  |__views
|     |
|     |__reportdirector_view.php
|
|__media
   |
   |__ViewModel
      |
      |__ReportDirector.js

Pivot

  • Controller: PivotChart.php

    • index() view pivot page

    • getData() get data by reading json file that located in C:/MIS/Pivot Data directory

    • exportExport() export data into excel file.

      Note

      We use MISExcel.exe for exporting data into excel file. MISExcel.exe was developed by Csharp programing language.

  • View: pivotchart_view.php

  • ViewModel: PivotChart.js

root
|
|__application
|  |
|  |__controller
|  |  |
|  |  |__PivotChart.php
|  |
|  |__views
|     |
|     |__pivotchart_view.php
|
|__media
   |
   |__ViewModel
      |
      |__PivotChart.js

Investigation Map

  • Controller: InvestigationMap.php

    • index() view pivot page

    • getData() get data by reading from store procedure SP_InvMap_HCData

  • View: investigationmap_view.php

  • ViewModel: InvestigationMap.js

root
|
|__application
|  |
|  |__controller
|  |  |
|  |  |__InvestigationMap.php
|  |
|  |__views
|     |
|     |__investigationmap_view.php
|
|__media
   |
   |__ViewModel
      |
      |__InvestigationMap.js

Bulletin

  • Controller: Bulletin.php

    • index() view bulletin page

    • getList() get list of bulletin that created.

    • getOldData() get detail of data that created.

    • getNewData() get pre data that will create.

    • save() to save data

  • View: bulletin_view.php

  • ViewModel: Bulletin.js

  • Database Table: tblBulletin

root
|
|__application
|  |
|  |__controller
|  |  |
|  |  |__Bulletin.php
|  |
|  |__views
|     |
|     |__bulletin_view.php
|
|__media
   |
   |__ViewModel
      |
      |__Bullentin.js

Pv Radical Cure Map

  • Controller: PvRadicalCureMap.php

    • index() view Pv Radical Cure Map page

    • getData() get data to generate map by using store procedure SP_PvMap.

    • getDetail() get detail of data by using store procedure SP_PvMap_Detail.

  • View: pvradicalcuremap_view.php

  • ViewModel: PvRadicalCureMap.js

root
|
|__application
|  |
|  |__controller
|  |  |
|  |  |__PvRadicalCureMap.php
|  |
|  |__views
|     |
|     |__pvradicalcuremap_view.php
|
|__media
   |
   |__ViewModel
      |
      |__PvRadicalCureMap.js

Master Data Management

System Menu

  • Controller: Home.php

    • sysmenu($code_prov = '', $systable = 'choose') : View page system menu.

    • getSystemTable() : get system menu tab. (Drug Outlets, Health Facilities, Village, Population, House Hold, Province, OD, District, Commune, HF Log, VMW Log, Bed Net Target, Police Troop, Police Post, Environment Office, Environment Community)

  • View:

    • nav_bednettarget.php

    • nav_choose.php

    • nav_commune.php

    • nav_district.php

    • nav_drugoutlets.php

    • nav_envcommunity.php

    • nav_envoffice.php

    • nav_group.php

    • nav_healthfacility.php

    • nav_hflog.php

    • nav_hhold.php

    • nav_od.php

    • nav_plpost.php

    • nav_pltroop.php

    • nav_population.php

    • nav_province.php

    • nav_regional.php

    • nav_village.php

    • nav_vmwlog.php

  • ViewModal:

    • Nav_BedNetTarget.js

    • Nav_Commune.js

    • Nav_District.js

    • Nav_Drugoutlets.js

    • Nav_EnvCommunity.js

    • Nav_EnvOffice.js

    • Nav_Group.js

    • Nav_Healthfacility.js

    • Nav_HFLog.js

    • Nav_HHold.js

    • Nav_OD.js

    • Nav_PLPost.js

    • Nav_PLTroop.js

    • Nav_Population.js

    • Nav_Province.js

    • Nav_Regional.js

    • Nav_Village.js

    • Nav_VMWLog.js

User

Table diagram

+----------+        +----------+        +--------------------+     +----------------+
|          |        |          |        |                    |     |                |
|MIS_User  |>|------| MIS_Role |------|<| MIS_RolePermission |---|<| MIS_Permission |
|          |        |          |        |                    |     |                |
+----------+        +----------+        +--------------------+     +----------------+
                                                                            V
                                                                            |
                                                                  +--------------------+
                                                                  |                    |
                                                                  |MIS_PermissionGroup |
                                                                  |                    |
                                                                  +--------------------+
  • Controller: User.php

  • View: user_view.php

  • ViewModel: User.js

root
|
|__application
|  |
|  |__controller
|  |  |
|  |  |__User.php
|  |
|  |__views
|     |
|     |__user_view.php
|
|__media
   |
   |__ViewModel
      |
      |__User.js

Device

HF Device

Table diagram

+--------------+
|              |
| tblHFDevice  |
|              |
+--------------+
  • Controller:

    • hfGetRequest(): to get list of request device form hf.

    • hfDeviceList(): to get list of HF device that registered.

  • View: device_view.php

  • ViewModel: Device.js

VMW Device

Table diagram

+--------------+
|              |
| tblVMWDevice |
|              |
+--------------+
  • Controller:

    • vmwGetRequest(): to get list of request device form VMW.

    • vmwDeviceList(): to get list of VMW device that registered.

  • View: device_view.php

  • ViewModel: Device.js

CMI Device

Table diagram

+------------------+
|                  |
| tblDeviceMalInfo |
|                  |
+------------------+
  • Controller:

    • getCMIDevices(): to get list of CMI device that registered.

  • View: device_view.php

  • ViewModel: Device.js

Place Permission

To enable Feature on Tablet and smart phone application.

  • Controller: PlacePermission.php

  • View: placepermission_view.php

  • ViewModel: PlacePermission.js

Note

Population

Note

  • Before the year of 2022

    • Province level up: Fixed value + Pop by province (tblPopByProvince)

    • OD level down: Pop by village with formula growth rate (V_PopByVillages)

  • From the year of 2022

    • OD level up: Pop by OD from HIS (tblPopByHIS)

    • HC level down: Pop by Village with real data (V_PopByVillages not use formula growth rate)

API v4

Users

HF Authentication

POST /api4/Users/mobile_auth

User login

Parse as json:

{
  "place_code": "010206",
  "Imei": "869501020203870"
}

Response as json:

{
  "Name_Prov_K": "Banteay mean chey",
  "Name_OD_K": "Poi Pet",
  "Is_Enable_VMW_Report": 1,
  "Is_Enable_Investigation_Report": 1,
  "Is_Enable_Reactive_Report": 1,
  "Is_Enable_SMS_Alert": 1,
  "Is_Enable_Stock": 1,
  "Is_Radical_Cure": 1,
  "Is_Radical_Cure_HSD": 1,
  "Name_Facility_K": "Kob",
  "Code_Facility_T": "010206",
  "IsReminder": null,
  "BedNetView": 1,
  "BedNetEdit": 1,
  "BedNetDelete": 1,
  "HCCaseDelete": 1,
  "HCCaseEdit": 1,
  "VMWCaseDelete": 1,
  "VMWCaseEdit": 1,
  "PopView": 1,
  "PopEdit": 1,
  "User_Role": "HC",
  "Phone": "0974930445"
}

VMW Authentication

POST /api4/Users/mobile_auth

User login

Parse as json:

{
  "place_code": "1406010100",
  "Imei": "863338030163372"
}

Response as json:

{
  "Name_Prov_K": "Preyveng",
  "Name_Dist_K": "Peamchor",
  "Name_Comm_K": "Angkor Ang",
  "Name_Vill_K": "Angkor Ang (M)",
  "Code_Vill_T": "1406010100",
  "Name_Facility_K": "Angkor Ang",
  "Is_Radical_Cure": 1,
  "Is_Radical_Cure_HSD": 1,
  "IsLastmile": 0,
  "IsReminder": 1,
  "User_Role": "VMW",
  "Phone": null
}

Note

place_code if length of place_code is 6 digits, it is HF code

place_code if length of place_code is 10 digits, it is Village code

Logout

POST /api4/Users/logout

Logout from device

Parse as json:

{
  "code": "123456"
}

Response as json (correct code):

{
  "logout": true
}

Response as json (incorrect code):

{
  "logout": false
}

Location

POST /api4/Users/location

Log location of device

Parse as json:

{
  "Lat": "123456",
  "Lon": "223454354",
  "Imei": "123456789",
  "HC_Code": "010206"
}

Log device information

POST /api4/Users/phone_info

Log information of device

Parse as json:

{
  "Model_Name": "Samsung",
  "Phone_Number": "223454354",
  "Imei": "123456789",
  "HC_Code": "010206"
}

Restrict user login

POST /api4/Users/restrict_login

Validation user code login and feed back

Parse as json:

{
  "Imei": "123456789",
  "HC_Code": "010206",
  "Logged": 1,
  "Malaria_Version": "3.0.1"
}

User permission

POST /api4/Users/permission

Check app permission

Parse as json:

{
  "Imei": "123456789",
  "HC_Code": "010206"
}

Response as json:

{
  "entry_expired_form": 1,
  "entry_expired_stock": 1,
  "send_phone": 1
}

HF Activity case

Insert

POST /api4/Reports/hf_activity_cases

Insert new case

Parse as json:

{
  "HF_Activity_Cases": [
    {
        "Month": "07",
        "Year": "2021",
        "DateCase": "2021-07-01",
        "NameK": "Test Patient",
        "PatientPhone": "010123456789",
        "Code_Vill_t": "1406010100",
        "Sex": "F",
        "Age": 25,
        "Weight": 99,
        "Temperature": 40,
        "Diagnosistext": "Simple",
        "Microscopy": false,
        "RDT": true,
        "Diagnosis": "N",
        "NumberTests": 1,
        "UUID": "799440634c87b27f",
        "User_Code_Fa_T": "140612"
    },
    {
        "Month": "07",
        "Year": "2021",
        "DateCase": "2021-07-01",
        "NameK": "Test Patient",
        "PatientPhone": "010123456789",
        "Code_Vill_t": "1406010100",
        "Sex": "M",
        "Age": 25,
        "Weight": 99,
        "Temperature": 40,
        "PregnantMTHS": "",
        "Diagnosistext": "Simple",
        "Microscopy": false,
        "RDT": true,
        "Diagnosis": "F",
        "Treatment": "ASMQ",
        "Refered": true,
        "ReferedReason": "",
        "ReferedOtherReason": "",
        "Dead": false,
        "Relapse": 0,
        "L1": 1,
        "LC": 0,
        "LC_Code": "1004050523",
        "IMP": 0,
        "IMP_Text": "Thai",
        "G6PDHb": 15,
        "G6PDdL": 15,
        "IsACT": "Yes",
        "IsConsult": "Yes",
        "IsPrimaquine": "Yes",
        "Primaquine15": 0,
        "Primaquine75": 15,
        "NumberTests": 1,
        "UUID": "799440634c87b27f",
        "User_Code_Fa_T": "140612"
    }
  ]
}
Response JSON Object
  • ReferedReason (string) – Blank/Severe/Other.

  • ReferedOtherReason (string) – Available when ReferedReason value is Other.

Update

POST /api4/Reports/update_hf_activity_case

Update case

Parse as json:

{
  "HFCase": {
    "Rec_ID": 1101492,
    "Dead": false,
    "Diagnosistext": "Simple",
    "Microscopy": false,
    "RDT": true,
    "ServiceText": "",
    "Temperature": 39,
    "Weight": 56,
    "Age": 22,
    "Code_Vill_t": "1406010100",
    "DateCase": "2021-06-04",
    "Diagnosis": "V",
    "G6PDHb": "16",
    "G6PDdL": "16",
    "IMP_Text": "",
    "IsPrimaquine": "1",
    "LC_Code": "",
    "Month": "06",
    "NameK": "test1",
    "OtherTreatment": "",
    "PatientPhone": "1234567",
    "PregnantMTHS": "N",
    "Primaquine75": 46,
    "ReferedOtherReason": "",
    "ReferedReason": "",
    "Relapse": 1,
    "Sex": "M",
    "Treatment": "ASMQ",
    "UUID": "172eb328d808e45f",
    "User_Code_Fa_T": "140612",
    "Year": "2021"
  }
}

Delete

POST /api4/Reports/delete_hf_activity_case

Delete case

Query Parameters
  • year (int) – year of report, e.g: 2020,2021,…

  • month (string) – month of report, e.g: 01, 02, …, 12

  • hc_code (string) – code of health facility

  • rec_id (int) – primary key of row

List

POST /api4/Reports/hc_data

Retrieve case data

Query Parameters
  • year (int) – year of report, e.g: 2020,2021,…

  • month (string) – month of report, e.g: 01, 02, …, 12

  • hc_code (string) – code of health facility

Response as json:

[
  {
    "Year": "2021",
    "Month": "12",
    "DateCase": "2021-12-09 00:00:00.000",
    "Code_Prov_T": "15",
    "Code_Dist_T": "1504",
    "Code_Comm_T": "150406",
    "Code_Vill_t": "1504060300",
    "PassProvince": null,
    "PassDistrict": null,
    "PassCommune": null,
    "PassAddress": null,
    "NameK": "Vannra",
    "Age": 29,
    "AgeType": "Y",
    "Sex": "M",
    "PregnantMTHS": "N",
    "DiagnosisText": "Simple",
    "ServiceText": "",
    "Microscopy": 1,
    "RDT": 0,
    "Diagnosis": "F",
    "Treatment": "Other",
    "OtherTreatment": "Moru stady",
    "Refered": 0,
    "ReferedReason": "",
    "ReferedOtherReason": "",
    "Dead": 0,
    "ID": "150301",
    "UUID": "02b9a6cd50ddd32b",
    "NumberTests": 1,
    "Rec_ID": 1180704,
    "Is_Mobile_Entry": 1,
    "Weight": 62,
    "Temperature": "38",
    "PatientCode": "",
    "PatientPhone": "066408991",
    "G6PD": null,
    "PQTreatment": "",
    "IsConsult": null,
    "IsACT": null,
    "IsPrimaquine": "0",
    "Primaquine15": null,
    "Primaquine75": null,
    "PrimaquineDate": null,
    "G6PDdL": null,
    "G6PDHb": null,
    "Relapse": 0,
    "L1": 0,
    "LC": 1,
    "IMP": null,
    "LC_Province": null,
    "LC_District": null,
    "LC_Commune": null,
    "LC_Code": "Pursat",
    "IMP_Text": null,
    "Fingerprint": null
  },
  {
    "Year": "2021",
    "Month": "12",
    "DateCase": "2021-12-10 00:00:00.000",
    "Code_Prov_T": null,
    "Code_Dist_T": null,
    "Code_Comm_T": null,
    "Code_Vill_t": "",
    "PassProvince": null,
    "PassDistrict": null,
    "PassCommune": null,
    "PassAddress": null,
    "NameK": "",
    "Age": 64,
    "AgeType": "Y",
    "Sex": "F",
    "PregnantMTHS": "N",
    "DiagnosisText": "Simple",
    "ServiceText": null,
    "Microscopy": 0,
    "RDT": 1,
    "Diagnosis": "N",
    "Treatment": null,
    "OtherTreatment": null,
    "Refered": 0,
    "ReferedReason": null,
    "ReferedOtherReason": null,
    "Dead": 0,
    "ID": "150301",
    "UUID": "02b9a6cd50ddd32b",
    "NumberTests": 1,
    "Rec_ID": 1180984,
    "Is_Mobile_Entry": 1,
    "Weight": 0,
    "Temperature": "37",
    "PatientCode": null,
    "PatientPhone": "",
    "G6PD": null,
    "PQTreatment": null,
    "IsConsult": null,
    "IsACT": null,
    "IsPrimaquine": null,
    "Primaquine15": null,
    "Primaquine75": null,
    "PrimaquineDate": null,
    "G6PDdL": null,
    "G6PDHb": null,
    "Relapse": null,
    "L1": null,
    "LC": null,
    "IMP": null,
    "LC_Province": null,
    "LC_District": null,
    "LC_Commune": null,
    "LC_Code": null,
    "IMP_Text": null,
    "Fingerprint": null
  }
]

VMW Activity case

Insert

POST /api4/Reports/vmw_activity_cases

Insert new case

Parse as json:

{
  "VMW_Activity_Cases": [
    {
        "Month": "07",
        "Year": "2021",
        "Age": 88,
        "Sex": "M",
        "Diagnosis": "N",
        "NumberTests": 1,
        "HC_Code": "",
        "UUID": "799440634c87b27f",
        "User_Code_Fa_T": "1406010100"
    },
    {
        "Month": "07",
        "Year": "2021",
        "DateCase": "2021-07-01",
        "NameK": "test",
        "PatientPhone": "3333333333",
        "Sex": "M",
        "Age": 25,
        "PregnantMTHS": "",
        "Weight": 25.5,
        "Temperature": 39.5,
        "Mobile": "N",
        "Diagnosis": "F",
        "Treatment": "ASMQ",
        "TreatmentPill": 10,
        "OtherTreatment": "ASMQ",
        "DOT1": 1,
        "ReferedReason": "PV",
        "ReferedOtherReason": "",
        "Relapse": 0,
        "L1": 0,
        "LC": 1,
        "LC_Code": "1004050523",
        "IMP": 1,
        "IMP_Text": "Thai",
        "G6PDHb": 15,
        "G6PDdL": 15,
        "IsACT": "Yes",
        "IsConsult": "Yes",
        "IsPrimaquine": "Yes",
        "Primaquine15": 0,
        "Primaquine75": 15,
        "NumberTests": 1,
        "Remark": "",
        "UUID": "799440634c87b27f",
        "User_Code_Fa_T": "1406010100",
        "HC_Code": ""
    }
  ]
}
Response JSON Object
  • ReferedReason (string) – Blank/Severe/Other.

  • ReferedOtherReason (string) – Available when ReferedReason value is Other.

Update

POST /api4/Reports/update_vmw_activity_case

Update case

Parse as json:

{
  "VMWCase": {
    "Rec_ID": 2563751,
    "Month": "02",
    "Year": "2020",
    "DateCase": "2020-02-01",
    "NameK": "test",
    "PatientPhone": "0123456789",
    "Sex": "M",
    "Age": 25,
    "PregnantMTHS": "",
    "Weight": 25.5,
    "Temperature": 39.5,
    "Mobile": "N",
    "Diagnosis": "F",
    "Treatment": "ASMQ",
    "TreatmentPill": 10,
    "OtherTreatment": "ASMQ",
    "DOT1": 1,
    "ReferedReason": "PV",
    "ReferedOtherReason": "",
    "Relapse": 0,
    "L1": 0,
    "LC": 1,
    "LC_Code": "1004050523",
    "IMP": 1,
    "IMP_Text": "Thai",
    "G6PDHb": 15,
    "G6PDdL": 15,
    "IsACT": "Yes",
    "IsConsult": "Yes",
    "IsPrimaquine": "Yes",
    "Primaquine15": 0,
    "Primaquine75": 15,
    "NumberTests": 1,
    "Remark": "",
    "User_Code_Fa_T": "1406010100",
    "UUID": "799440634c87b27f",
    "PatientCode": "AA0743"
  }
}

Delete

POST /api4/Reports/delete_vmw_activity_case

Delete case

Query Parameters
  • year (int) – year of report, e.g: 2020,2021,…

  • month (string) – month of report, e.g: 01, 02, …, 12

  • village_code (string) – code of village

  • rec_id (int) – primary key of row

List

POST /api4/Reports/search_patient

Retrieve case data

Query Parameters
  • year (int) – year of report, e.g: 2020,2021,…

  • month (string) – month of report, e.g: 01, 02, …, 12

  • hc_code (string) – code of health facility

Response as json:

[
  {
    "Code_Vill_T": "1406010100",
    "Year": "2021",
    "Month": "06",
    "DateCase": "2021-06-18 00:00:00.000",
    "NameK": "ឌិណា",
    "Age": 36,
    "AgeType": "Y",
    "Sex": "M",
    "PregnantMTHS": "N",
    "Weight": 60,
    "Temperature": 39,
    "Mobile": "N",
    "Diagnosis": "V",
    "Treatment": "ASMQ",
    "ReferedReason": "PV Radical Cure",
    "ReferedOtherReason": null,
    "OtherTreatment": "",
    "DOT1": 0,
    "Dot3days": 0,
    "Refered": 1,
    "Dead": 0,
    "Remark": null,
    "ID": "1406010100",
    "UUID": "172eb328d808e45f",
    "NumberTests": 1,
    "Rec_ID": 2636965,
    "Is_Mobile_Entry": 1,
    "Passive": 0,
    "PatientCode": "AA2957",
    "PatientPhone": "1234688",
    "PQTreatment": null,
    "G6PD": null,
    "IsConsult": null,
    "IsACT": null,
    "IsPrimaquine": "1",
    "Primaquine15": null,
    "Primaquine75": 42,
    "PrimaquineDate": "2021-06-18",
    "G6PDdL": "15.00",
    "G6PDHb": "14.00",
    "Relapse": 0,
    "L1": 1,
    "LC": null,
    "IMP": null,
    "LC_Province": null,
    "LC_District": null,
    "LC_Commune": null,
    "LC_Code": null,
    "Primaquine": null,
    "ASMQ": 1,
    "IMP_Text": null,
    "Fingerprint": null
  }
]

Reactive case

List

GET /api4/ReactiveCase/list

Retrieve list data

Query Parameters
  • year (int) – year of report, e.g: 2020,2021,…

  • month (string) – month of report, e.g: 01, 02, …, 12

  • HC_Code (string) – code of health facility

Response as json:

{
    "code": 200,
    "message": "success",
    "data": [
        {
            "Passive_Case_Id": "2648747_VMW",
            "Case_Type": "VMW",
            "ID": "1406010100",
            "Name_K": "សុខា",
            "Diagnosis": "V",
            "Year": "2021",
            "Month": "06",
            "Code_Vill_t": "1406010100",
            "Age": 22,
            "Gender": "M",
            "PatientPhone": "0789456123",
            "Is_Reactive": 2,
            "HCCode": "140612"
        },
        {
            "Passive_Case_Id": "2636965_VMW",
            "Case_Type": "VMW",
            "ID": "1406010100",
            "Name_K": "ឌិណា",
            "Diagnosis": "V",
            "Year": "2021",
            "Month": "06",
            "Code_Vill_t": "1406010100",
            "Age": 36,
            "Gender": "M",
            "PatientPhone": "1234688",
            "Is_Reactive": 4,
            "HCCode": "140612"
        }
    ]
}

Detail

GET /api4/ReactiveCase/detail

Retrieve detail information

Query Parameters
  • Passive_Case_Id (string) – Passive case ID, e.g: 1092112_HC, 1092112_VMW (Rec_ID + _HC / Rec_ID + _VMW)

Response as json:

{
    "code": 200,
    "message": "success",
    "data": [
        {
            "Rec_ID": 1553,
            "Passive_Case_Id": "1092112_HC",
            "DateCase": "2021-05-28",
            "PatientCode": null,
            "PatientName": "a 01",
            "PatientIDCard": "07893444",
            "PatientPhone": "153886",
            "PatientAge": 36,
            "PatientSex": "M",
            "Lat": 11.5946862,
            "Long": 104.8611213,
            "Code_Vill_T": "1406010100",
            "ForestSleep": "Other",
            "ForestSleepOther": "yyh",
            "Workplace": null,
            "WorkplaceOther": null,
            "Shelter": "House",
            "Bednet": "No",
            "InvestigationDate": "2021-05-28",
            "Investigator": "tghh",
            "InvestigatorJob": "test",
            "InvestigatorPhone": "480666",
            "Classify": "LC",
            "HouseNumber": 1,
            "Member": "02",
            "Age": 25,
            "Sex": "M",
            "Missing": "Absent",
            "Diagnosis": "N",
            "Treatment": null,
            "TreatmentOther": null,
            "Fever": 1,
            "Forest": 0,
            "Travel": 0,
            "History": 0,
            "Relative": 0,
            "InitTime": "2021-05-28 13:35:52.583",
            "Code_Prov_T": "14",
            "Code_OD_T": "1406",
            "Code_Facility_T": "140612"
        },
        {
            "Rec_ID": 1554,
            "Passive_Case_Id": "1092112_HC",
            "DateCase": "2021-05-28",
            "PatientCode": null,
            "PatientName": "a 01",
            "PatientIDCard": "07893444",
            "PatientPhone": "153886",
            "PatientAge": 36,
            "PatientSex": "M",
            "Lat": 11.5946862,
            "Long": 104.8611213,
            "Code_Vill_T": "1406010100",
            "ForestSleep": "Other",
            "ForestSleepOther": "yyh",
            "Workplace": null,
            "WorkplaceOther": null,
            "Shelter": "House",
            "Bednet": "No",
            "InvestigationDate": "2021-05-28",
            "Investigator": "tghh",
            "InvestigatorJob": "test",
            "InvestigatorPhone": "480666",
            "Classify": "LC",
            "HouseNumber": 102,
            "Member": "03",
            "Age": 55,
            "Sex": "F",
            "Missing": "Reject",
            "Diagnosis": "F",
            "Treatment": "ASMQ",
            "TreatmentOther": null,
            "Fever": 0,
            "Forest": 1,
            "Travel": 1,
            "History": 1,
            "Relative": 1,
            "InitTime": "2021-05-28 13:35:52.587",
            "Code_Prov_T": "14",
            "Code_OD_T": "1406",
            "Code_Facility_T": "140612"
        }
    ]
}

Update

POST /api4/ReactiveCase/update

Insert/Update data

Parse as json:

{
    "Reactive_Activity_Cases": [
        {
            "Age": 25,
            "Bednet": "No",
            "Classify": "LC",
            "Code_Vill_T": "1406010100",
            "DateCase": "2021-05-28",
            "Diagnosis": "N",
            "Fever": 1,
            "Forest": 0,
            "ForestSleep": "Other",
            "ForestSleepOther": "yyh",
            "History": 0,
            "HouseNumber": "01",
            "Id": "",
            "InvestigationDate": "2021-05-28",
            "Investigation_Case_Id": "",
            "Investigator": "tghh",
            "InvestigatorJob": "test",
            "InvestigatorPhone": "480666",
            "Is_Mobile_Entry": 0,
            "Lat": 11.5946862,
            "Long": 104.8611213,
            "Member": "02",
            "Missing": "Absent",
            "Passive_Case_Id": "1092112_HC",
            "PatientAge": 36,
            "PatientIDCard": "07893444",
            "PatientName": "a 01",
            "PatientPhone": "153886",
            "PatientSex": "M",
            "Relative": 0,
            "Sex": "M",
            "Shelter": "House",
            "Travel": 0,
            "UUID": "799440634c87b27f",
            "User_Code_Fa_T": "140612",
            "User_Id": "140612"
        },
        {
            "Age": 55,
            "Bednet": "No",
            "Classify": "LC",
            "Code_Vill_T": "1406010100",
            "DateCase": "2021-05-28",
            "Diagnosis": "F",
            "Fever": 0,
            "Forest": 1,
            "ForestSleep": "Other",
            "ForestSleepOther": "yyh",
            "History": 1,
            "HouseNumber": "0102",
            "Id": "",
            "InvestigationDate": "2021-05-28",
            "Investigation_Case_Id": "",
            "Investigator": "tghh",
            "InvestigatorJob": "test",
            "InvestigatorPhone": "480666",
            "Is_Mobile_Entry": 0,
            "Lat": 11.5946862,
            "Long": 104.8611213,
            "Member": "03",
            "Missing": "Reject",
            "Passive_Case_Id": "1092112_HC",
            "PatientAge": 36,
            "PatientIDCard": "07893444",
            "PatientName": "a 01",
            "PatientPhone": "153886",
            "PatientSex": "M",
            "Relative": 1,
            "Sex": "F",
            "Shelter": "House",
            "Travel": 1,
            "Treatment": "ASMQ",
            "UUID": "799440634c87b27f",
            "User_Code_Fa_T": "140612",
            "User_Id": "140612"
        }
    ]
}

Note

if Id = “” it will insert new data

if Id != “” it will update data

Stock data

Stock close

POST /api4/ReactiveCase/update

Insert/Update data

Parse as json:

{
  "HC_Code": 123456,
  "Year": 2021,
  "Month": "01",
  "Data": [
              {
                  "Adjustment": "0",
                  "Balance": "0",
                  "Estimate": "0",
                  "ItemId": 34,
                  "Note": "",
                  "StockIn": "0",
                  "StockOut": "0",
                  "StockStart": "0",
                  "Expire": "2021-12-12"
              },
              {
                  "Adjustment": "0",
                  "Balance": "0",
                  "Estimate": "0",
                  "ItemId": 38,
                  "Note": "",
                  "StockIn": "0",
                  "StockOut": "0",
                  "StockStart": "0",
                  "Expire": "2021-12-12"
              },
              {
                  "Adjustment": "0",
                  "Balance": "0",
                  "Estimate": "0",
                  "ItemId": 39,
                  "Note": "",
                  "StockIn": "0",
                  "StockOut": "0",
                  "StockStart": "0",
                  "Expire": "2021-12-12"
              },
              {
                  "Adjustment": "0",
                  "Balance": "0",
                  "Estimate": "0",
                  "ItemId": 40,
                  "Note": "",
                  "StockIn": "0",
                  "StockOut": "0",
                  "StockStart": "0",
                  "Expire": "2021-12-12"
              },
              {
                  "Adjustment": "0",
                  "Balance": "0",
                  "Estimate": "0",
                  "ItemId": 41,
                  "Note": "",
                  "StockIn": "0",
                  "StockOut": "0",
                  "StockStart": "0",
                  "Expire": "2021-12-12"
              },
              {
                  "Adjustment": "0",
                  "Balance": "0",
                  "Estimate": "0",
                  "ItemId": 28,
                  "Note": "",
                  "StockIn": "0",
                  "StockOut": "0",
                  "StockStart": "0",
                  "Expire": "2021-12-12"
              },
              {
                  "Adjustment": "0",
                  "Balance": "0",
                  "Estimate": "0",
                  "ItemId": 25,
                  "Note": "",
                  "StockIn": "0",
                  "StockOut": "0",
                  "StockStart": "0",
                  "Expire": "2021-12-12"
              },
              {
                  "Adjustment": "0",
                  "Balance": "10",
                  "Estimate": "-7",
                  "ItemId": 26,
                  "Note": "",
                  "StockIn": "0",
                  "StockOut": "0",
                  "StockStart": "10",
                  "Expire": "2021-12-12"
              },
              {
                  "Adjustment": "0",
                  "Balance": "727",
                  "Estimate": "-624.833",
                  "ItemId": 27,
                  "Note": "",
                  "StockIn": "500",
                  "StockOut": "52",
                  "StockStart": "279",
                  "Expire": "2021-12-12"
              },
              {
                  "Adjustment": "0",
                  "Balance": "1803",
                  "Estimate": "-1,144.167",
                  "ItemId": 29,
                  "Note": "",
                  "StockIn": "1300",
                  "StockOut": "61",
                  "StockStart": "564",
                  "Expire": "2021-12-12"
              },
              {
                  "Adjustment": "0",
                  "Balance": "1343",
                  "Estimate": "-1,246.167",
                  "ItemId": 32,
                  "Note": "",
                  "StockIn": "1000",
                  "StockOut": "120",
                  "StockStart": "463",
                  "Expire": "2021-12-12"
              },
              {
                  "Adjustment": "0",
                  "Balance": "0",
                  "Estimate": "0",
                  "ItemId": 30,
                  "Note": "",
                  "StockIn": "0",
                  "StockOut": "0",
                  "StockStart": "0",
                  "Expire": "2021-12-12"
              },
              {
                  "Adjustment": "0",
                  "Balance": "172",
                  "Estimate": "-126.667",
                  "ItemId": 13,
                  "Note": "",
                  "StockIn": "200",
                  "StockOut": "43",
                  "StockStart": "15",
                  "Expire": "2021-12-12"
              },
              {
                  "Adjustment": "0",
                  "Balance": "58",
                  "Estimate": "-51",
                  "ItemId": 33,
                  "Note": "",
                  "StockIn": "0",
                  "StockOut": "0",
                  "StockStart": "58",
                  "Expire": "2021-12-12"
              },
              {
                  "Adjustment": "0",
                  "Balance": "0",
                  "Estimate": "0",
                  "ItemId": 17,
                  "Note": "",
                  "StockIn": "0",
                  "StockOut": "0",
                  "StockStart": "0",
                  "Expire": "2021-12-12"
              },
              {
                  "Adjustment": "0",
                  "Balance": "0",
                  "Estimate": "0",
                  "ItemId": 18,
                  "Note": "",
                  "StockIn": "0",
                  "StockOut": "0",
                  "StockStart": "0",
                  "Expire": ""
              }
          ]
}

Report

Case report

POST /api4/reports/report_by_hc

Get case data

Parse as json:

{
  "HF_Request": {
    "end_date": "2021-12-30",
    "hc_code": "140612",
    "start_date": "2021-12-08",
    "type": "ALL"
  }
}

Response as json:

[
    {
        "Negative": 0,
        "Positive": 1,
        "PF": 0,
        "PV": 1,
        "MIX": 0,
        "Incidence": ".15"
    }
]

Stock report

POST /api4/reports/stock

Get case data

Parse as json:

{
  "Date_From": "2021-12-30",
  "Date_To": "2021-12-30",
  "HC_Code": "140612"
}

Response as json:

[
  {
    "Negative": 0,
    "Positive": 0,
    "PF": 0,
    "PV": 0,
    "MIX": 0,
    "Incidence": ".00"
  }
]

Population

Form and data

POST /api4/Population/pop_village

show form with data

Parse as json:

{
  "hc_code": "150301",
  "year": 2021
}

Response as json:

[
  {
    "Code_Vill_T": "1504020100",
    "Name_Vill_K": "Leach",
    "Distance": 9,
    "Pop": 1307,
    "MobilePop": 0,
    "HHold": 324
  },
  {
    "Code_Vill_T": "1504020200",
    "Name_Vill_K": "Pich Ban",
    "Distance": 0,
    "Pop": 1511,
    "MobilePop": 0,
    "HHold": 385
  }
]

Insert/Update Population

POST /api4/Population/update_pop_village

Insert / update population

Parse as json:

{
  "PopVillage": [
    {
        "Code_Vill_T": "1406010200",
        "Distance": 4.6,
        "HHold": 0,
        "MobilePop": 0,
        "Pop": "0",
        "Year": "2021"
    },
    {
        "Code_Vill_T": "1406010300",
        "Distance": 6,
        "HHold": 0,
        "MobilePop": 0,
        "Pop": "0",
        "Year": "2021"
    },
    {
        "Code_Vill_T": "1406010400",
        "Distance": 0,
        "HHold": 0,
        "MobilePop": 0,
        "Pop": "0",
        "Year": "2021"
    },
    {
        "Code_Vill_T": "1406010100",
        "Distance": 0,
        "HHold": 0,
        "MobilePop": 0,
        "Pop": "0",
        "Year": "2021"
    }
  ]
}

Bednet

Bednet form

POST /api4/BedNet/form

Insert / update population

Parse as json:

{
  "hc_code": "140612",
  "month": 12,
  "year": 2021
}

Response as json:

[
  {
    "Code_Comm_T": "140601",
    "Name_Comm_K": "Angkor Ang",
    "Code_Vill_T": "1406010200",
    "Name_Vill_K": "Praek Treng",
    "VillCode": "1406010200",
    "LLIN": 1,
    "LLIHN": 1,
    "Campaign": 1,
    "Continued": 0,
    "Mobile": 0
  }
]

Bednet Insert/Update

POST /api4/BedNet/update

Insert / update population

Parse as json:

{
  "month": 12,
  "year": 2021,
  "hc_code": "010210",
  "data": [
    {
        "Year": "2021",
        "Month": "12",
        "ID": "010210",
        "VillCode": "0109061001",
        "LLIN": 256,
        "LLIHN": 256,
        "Campaign": 0,
        "Continued": 0,
        "Mobile": 1
    },
    {
        "Year": "2019",
        "Month": "01",
        "ID": "010210",
        "VillCode": "0109061000",
        "LLIN": 256,
        "LLIHN": 256,
        "Campaign": 0,
        "Continued": 0,
        "Mobile": 1
    }
  ]
}

Dashboard

Malaria status

POST /api4/Reports/vill_surveillance

Retrieve data

Parse as json:

{
  "hc_code": "150301",
  "year": 2021,
  "mt": "01",
  "mf": "12"
}

Response as json:

[
  {
    "Code": "1504020100",
    "Name_Vill_K": "Leach",
    "TotalTestLastYear": 5,
    "TotalTestThisYear": 2,
    "TotalCaseLastYear": 5,
    "TotalCaseThisYear": 2,
    "PfLastYear": 3,
    "PfThisYear": 0,
    "PvLastYear": 2,
    "PvThisYear": 2,
    "MixLastYear": 0,
    "MixThisYear": 0,
    "PositiveRateLastYear": "100",
    "PositiveRateThisYear": "100"
  },
  {
    "Code": "1504020200",
    "Name_Vill_K": "Pich ban",
    "TotalTestLastYear": 9,
    "TotalTestThisYear": 6,
    "TotalCaseLastYear": 9,
    "TotalCaseThisYear": 6,
    "PfLastYear": 2,
    "PfThisYear": 1,
    "PvLastYear": 7,
    "PvThisYear": 5,
    "MixLastYear": 0,
    "MixThisYear": 0,
    "PositiveRateLastYear": "100",
    "PositiveRateThisYear": "100"
  }
]

API of villages (chart)

POST /api4/Reports/vill_surveillance

Retrieve data

Parse as json:

{
  "hc_code": "150301",
  "year": 2021,
  "mt": "01",
  "mf": "12"
}

Response as json:

[
 {
     "Code_Vill_T": "0209050100",
     "Name_Vill_K": "Srae Onduong 1",
     "VillLat": 12.570106,
     "VillLong": 102.738759,
     "HFLat": 12.645585,
     "HFLong": 102.76089,
     "Pop": 498,
     "Positive": 0,
     "HFPositive": 0,
     "VMWPositive": 0,
     "API": ".000000000000"
 },
 {
     "Code_Vill_T": "0209050200",
     "Name_Vill_K": "Chhork Roka",
     "VillLat": 12.57063,
     "VillLong": 102.740888,
     "HFLat": 12.645585,
     "HFLong": 102.76089,
     "Pop": 1768,
     "Positive": 0,
     "HFPositive": 0,
     "VMWPositive": 0,
     "API": ".000000000000"
 }
]

Cases (chart)

POST /api4/Chart/cases

Retrieve data

Parse as json:

{
  "hc_code": "150301",
  "year": 2021,
  "mt": "01",
  "mf": "12"
}

Response as json:

[
  {
      "Month": "01",
      "pf": 10,
      "pv": 138,
      "mix": 2,
      "TotalCases": 150
  },
  {
      "Month": "02",
      "pf": 13,
      "pv": 96,
      "mix": 1,
      "TotalCases": 110
  },
  {
      "Month": "03",
      "pf": 5,
      "pv": 84,
      "mix": 0,
      "TotalCases": 89
  },
  {
      "Month": "04",
      "pf": 4,
      "pv": 85,
      "mix": 0,
      "TotalCases": 89
  },
  {
      "Month": "05",
      "pf": 1,
      "pv": 78,
      "mix": 0,
      "TotalCases": 79
  },
  {
      "Month": "06",
      "pf": 7,
      "pv": 77,
      "mix": 4,
      "TotalCases": 88
  },
  {
      "Month": "07",
      "pf": 11,
      "pv": 90,
      "mix": 0,
      "TotalCases": 101
  },
  {
      "Month": "08",
      "pf": 1,
      "pv": 69,
      "mix": 2,
      "TotalCases": 72
  },
  {
      "Month": "09",
      "pf": 0,
      "pv": 43,
      "mix": 0,
      "TotalCases": 43
  },
  {
      "Month": "10",
      "pf": 4,
      "pv": 54,
      "mix": 0,
      "TotalCases": 58
  },
  {
      "Month": "11",
      "pf": 1,
      "pv": 46,
      "mix": 0,
      "TotalCases": 47
  },
  {
      "Month": "12",
      "pf": 2,
      "pv": 32,
      "mix": 0,
      "TotalCases": 34
  }
]

Top 10 villages (chart)

POST /api4/Chart/piechart

Retrieve data

Parse as json:

{
  "hc_code": "150301",
  "year": 2021,
  "mt": "01",
  "mf": "12"
}

Response as json:

[
  {
      "Code_Vill_T": "0209050301",
      "Name_Vill_K": "Outa toeng",
      "Positive": 4,
      "TotalCases": 15,
      "API": "26.666666666600"
  },
  {
      "Code_Vill_T": "0209050601",
      "Name_Vill_K": "Prolean",
      "Positive": 4,
      "TotalCases": 15,
      "API": "26.666666666600"
  },
  {
      "Code_Vill_T": "0209050400",
      "Name_Vill_K": "Kantout",
      "Positive": 3,
      "TotalCases": 15,
      "API": "20.000000000000"
  }
]

Pv Radical cure

HF patient follow up list

GET /api4/HFFollowup/list

Retrieve list data

Query Parameters
  • year (int) – year of report, e.g: 2020,2021,…

  • month (string) – month of report, e.g: 01, 02, …, 12

  • hc_code (string) – code of health facility

Response as json:

{
  "code": 200,
  "message": "success",
  "data": [
    {
        "Code_Vill_T": "1406010400",
        "Name_Vill_K": "veal ro bong",
        "PatientCode": "AA4397",
        "NameK": "sa",
        "Sex": "M",
        "Age": 55,
        "PatientPhone": null,
        "HaveVMW": 0,
        "Case_ID": "1139092",
        "Type": "HC",
        "Day3": 0,
        "Day3Date": "2021-09-02",
        "Day7": 1,
        "Day7Date": "2021-09-06",
        "Day14": 1,
        "Day14Date": "2021-09-13"
    },
    {
        "Code_Vill_T": "1406010400",
        "Name_Vill_K": "veal ro bong",
        "PatientCode": "AA4414",
        "NameK": "soda",
        "Sex": "M",
        "Age": 66,
        "PatientPhone": null,
        "HaveVMW": 0,
        "Case_ID": "1140082",
        "Type": "HC",
        "Day3": 0,
        "Day3Date": "2021-09-03",
        "Day7": 1,
        "Day7Date": "2021-09-07",
        "Day14": 1,
        "Day14Date": "2021-09-14"
    }
  ]
}

HF follow up detail

GET /api4/HFFollowup/detail

Retrieve detail data

Query Parameters
  • patient_code (string) – patient code, e.g: AA1234

  • day (string) – day of follow up, e.g: Day3, Day7, Day14

  • case_id (string) – Rec_ID of case get from tblHFActivityCases

Response as json:

{
  "code": 200,
  "message": "success",
  "data": {
      "Rec_ID": 313,
      "Case_ID": "1139092",
      "Code_Vill_T": null,
      "PatientCode": "AA4397",
      "Day": "Day3",
      "Date": "2021-09-02",
      "Call": "Yes",
      "Refered": "Yes",
      "Code": "1, 4, 5",
      "TabletRemain": null,
      "IsMobileEntry": 1,
      "InitTime": "2021-09-02 13:43:15.240",
      "InitUser": null,
      "ModiTime": null,
      "ModiUser": null
  }
}
Response JSON Object
  • Case_ID (string) – Rec_ID of case get from tblHFActivityCases.

  • PatientCode (string) – Patient code of case get from tblHFActivityCases.

  • Day (string) – Day of follow up, e.g: Day3, Day7, Day14

  • Call (string) – Yes/No, if follow up patient by phone call the value is Yes, otherwise is no

  • Refered (string) – Yes/No, if refer patient to HC/RH the value is Yes, otherwise is no

  • Code (int) – 0/1/2/3/4/5

  • TabletRemain (int) – number of tablet that remain (medicine)

HF follow up Insert/Update

POST /api4/HFFollowup/update

update/insert follow up

Parse as json:

{
  "followup": {
      "Code_Vill_T": "1406010100",
      "Case_ID" : "HC_123",
      "PatientCode": "AA1338",
      "Day": "Day3",
      "Date": "2020-12-12",
      "Call": "Yes",
      "Refered": "No",
      "Code": "1,2"
  }
}

VMW Follow up List

GET /api4/VMWFollowup/list

Retrieve list data

Query Parameters
  • year (int) – year of report, e.g: 2020,2021,…

  • month (string) – month of report, e.g: 01, 02, …, 12

  • code_village (string) – code of vmw village

Response as json:

{
  "code": 200,
  "message": "success",
  "data": [
    {
      "Year": "2021",
      "Month": "09",
      "Code_Vill_T": "1406010100",
      "Name_Vill_K": "Angkor Ang (M)",
      "PatientCode": "AA4618",
      "NameK": "rey",
      "Sex": "M",
      "Age": 55,
      "DateCase": "2021-09-17",
      "Day3": 0,
      "Day3Date": "2021-09-23",
      "Day7": 0,
      "Day7Date": "2021-09-27",
      "Day14": 0,
      "Day14Date": "2021-10-04",
      "Case_ID": "HC_1143002"
    },
    {
      "Year": "2021",
      "Month": "09",
      "Code_Vill_T": "1406010100",
      "Name_Vill_K": "Angkor Ang (M)",
      "PatientCode": "AA4620",
      "NameK": "rin",
      "Sex": "M",
      "Age": 50,
      "DateCase": "2021-09-17",
      "Day3": 0,
      "Day3Date": "2021-09-20",
      "Day7": 0,
      "Day7Date": "2021-09-24",
      "Day14": 0,
      "Day14Date": "2021-10-01",
      "Case_ID": "HC_1143004"
    }
  ]
}

VMW follow up detail

GET /api4/VMWFollowup/detail

Retrieve detail data

Query Parameters
  • patient_code (string) – patient code, e.g: AA1234

  • day (string) – day of follow up, e.g: Day3, Day7, Day14

  • case_id (string) – Rec_ID of case get from tblVMWActivityCases/tblHFActivityCases, e.g: VMW_123456/HC_123456

Response as json:

{
  "code": 200,
  "message": "success",
  "data": {
    "Code_Vill_T": "1406010100",
    "Rec_ID": 650,
    "Case_ID": "VMW_123",
    "PatientCode": "AA0001",
    "Day": "Day7",
    "Date": "2019-01-15",
    "Method": "Direct",
    "Feeling": "Better",
    "ASMQ": "Yes",
    "Primaquine": "Yes",
    "NoPrimaquineReason": "Yes",
    "NoPrimaquineOtherReason": "",
    "PrimaquineRemain": 10,
    "CardNoted": "Yes",
    "NotNotedReason": "Forget, NotSick",
    "Symptom": "Yes",
    "SevereFever": "Yes",
    "VeryChills": "Yes",
    "SoreThroat": "Yes",
    "VeryPale": "Yes",
    "VeryWeak": "Yes",
    "SevereVomiting": "Yes",
    "OtherSymptom": "",
    "OverPrimaquine": "Yes",
    "PatientManagement": "DoNothing",
    "IsMobileEntry": null,
    "InitTime": null,
    "InitUser": null,
    "ModiTime": null,
    "ModiUser": null
  }
}
Response JSON Object
  • Case_ID (string) – Rec_ID of case get from tblVMWActivityCases/tblHFActivityCases, e.g: VMW_123456/HC_123456.

  • PatientCode (string) – Patient code of case get from tblVMWActivityCases/tblHFActivityCases.

  • Day (string) – Day of follow up, e.g: Day3, Day7, Day14

  • Method (string) – Direct/By Phone.

  • Symptom (string) – Yes/No.

  • VeryPale (string) – Yes/No.

  • VeryWeak (string) – Yes/No.

  • SevereVomiting (string) – Yes/No.

  • OtherSymptom (string) – any string.

  • ASMQ (string) – Yes/No.

  • Primaquine (string) – Yes/No.

  • NoPrimaquineReason (string) – Forget, NotSick, SideEffect, Travel, NotTrust, LostMedicine

  • NoPrimaquineOtherReason (string) – Any string

  • PrimaquineRemain (int) – Integer value

  • CardNoted (string) – Yes/No.

  • NotNotedReason (string) – Any string

  • OverPrimaquine (string) – Yes/No.

  • PatientManagement (string) – DoNothing, CallHC, ReferToHC, ReferToRH

VMW follow up Insert/Update

POST /api4/VMWFollowup/update

update/insert follow up

Parse as json:

{
  "followup":{
    "Code_Vill_T" : "1406010100",
    "Case_ID": "VMW_123",
    "PatientCode": "AA0001",
    "Day": "Day7",
    "Date": "2019-01-15",
    "Method": "Direct",
    "Feeling": "Better",
    "ASMQ": "Yes",
    "Primaquine": "Yes",
    "NoPrimaquineReason": "Yes",
    "NoPrimaquineOtherReason":"",
    "PrimaquineRemain": "10",
    "CardNoted": "Yes",
    "NotNotedReason":"Forget, NotSick",
    "Symptom": "Yes",
    "SevereFever": "Yes",
    "VeryChills": "Yes",
    "SoreThroat": "Yes",
    "VeryPale": "Yes",
    "VeryWeak": "Yes",
    "SevereVomiting": "Yes",
    "OtherSymptom": "headach",
    "OverPrimaquine": "Yes",
    "PatientManagement": "DoNothing"
  }
}

Medication

HF Medication

GET /api4/Medication/hf

Get medication list for HF device

Response as json:

[
  {
      "Id": 8,
      "Value": "ASMQ",
      "Name": "អា + អឹម"
  },
  {
      "Id": 47,
      "Value": "ASMQ + PQ",
      "Name": "អា+អឹម និង ព្រីម៉ាគីន"
  },
  {
      "Id": 50,
      "Value": "ASMQ + PQ (1 Dose)",
      "Name": "ASMQ + PQ (1ដូស)"
  },
  {
      "Id": 51,
      "Value": "ASMQ + PQ (14 Days)",
      "Name": "ASMQ + PQ (14ថ្ងៃ)"
  },
  {
      "Id": 38,
      "Value": "Other",
      "Name": "ផ្សេងៗ"
  },
  {
      "Id": 48,
      "Value": "Primaquine",
      "Name": "Primaquine ព្រីម៉ាគីន"
  }
]

VMW Medication

GET /api4/Medication/vmw

Get medication list for VMW device

Response as json:

[
  {
      "Id": 8,
      "Value": "ASMQ",
      "Name": "អា + អឹម"
  },
  {
      "Id": 47,
      "Value": "ASMQ + PQ",
      "Name": "អា+អឹម និង ព្រីម៉ាគីន"
  },
  {
      "Id": 13,
      "Value": "No Stock",
      "Name": "No Stock មិនមានថ្នាំក្នុងស្តុក"
  },
  {
      "Id": 39,
      "Value": "None",
      "Name": "None មិនបានឲ្យថ្នាំ"
  },
  {
      "Id": 38,
      "Value": "Other",
      "Name": "ផ្សេងៗ"
  }
]

Register token

POST /api4/Notification/update_token

update/insert follow up

Parse as json:

{
  "Imei": "123456789",
  "CodePlace": "123456",
  "Token": "1234567890"
}
Response JSON Object
  • CodePlace (string) – 6 digits code for health facility, 10 digits code for village

Place

Check place is modify

GET /api4/Places/isModify

To check if place is modified in system.

Note

if return empty it mean nothing change.

if return any json data it mean place has been changed. and the json data that return is new data of place.

Get Province

GET /api4/Places/provinces

Get province list.

Response as json:

{
    "meta": {
        "total_page": 1
    },
    "data": [
        {
            "Code_Prov_T": "01",
            "Name_Prov_E": "Banteay Meanchey",
            "Name_Prov_K": "បន្ទាយមានជ័យ"
        },
        {
            "Code_Prov_T": "02",
            "Name_Prov_E": "Battambang",
            "Name_Prov_K": "បាត់ដំបង"
        },
        {
            "Code_Prov_T": "03",
            "Name_Prov_E": "Kampong Cham",
            "Name_Prov_K": "កំពង់ចាម"
        },
        {
            "Code_Prov_T": "04",
            "Name_Prov_E": "Kampong Chhnang",
            "Name_Prov_K": "កំពង់ឆ្នាំង"
        },
        {
            "Code_Prov_T": "05",
            "Name_Prov_E": "Kampong Speu",
            "Name_Prov_K": "កំពង់ស្ពឺ"
        },
        {
            "Code_Prov_T": "06",
            "Name_Prov_E": "Kampong Thom",
            "Name_Prov_K": "កំពង់ធំ"
        },
        {
            "Code_Prov_T": "07",
            "Name_Prov_E": "Kampot",
            "Name_Prov_K": "កំពត"
        },
        {
            "Code_Prov_T": "08",
            "Name_Prov_E": "Kandal",
            "Name_Prov_K": "កណ្តាល"
        },
        {
            "Code_Prov_T": "09",
            "Name_Prov_E": "Koh Kong",
            "Name_Prov_K": "កោះកុង"
        },
        {
            "Code_Prov_T": "10",
            "Name_Prov_E": "Kratie",
            "Name_Prov_K": "ក្រចេះ"
        },
        {
            "Code_Prov_T": "11",
            "Name_Prov_E": "Mondul Kiri",
            "Name_Prov_K": "មណ្ឌលគីរី"
        },
        {
            "Code_Prov_T": "12",
            "Name_Prov_E": "Phnom Penh",
            "Name_Prov_K": "ភ្នំពេញ"
        },
        {
            "Code_Prov_T": "13",
            "Name_Prov_E": "Preah Vihear",
            "Name_Prov_K": "ព្រះវិហារ"
        },
        {
            "Code_Prov_T": "14",
            "Name_Prov_E": "Prey Veng",
            "Name_Prov_K": "ព្រៃវែង"
        },
        {
            "Code_Prov_T": "15",
            "Name_Prov_E": "Pursat",
            "Name_Prov_K": "ពោធិ៍សាត់"
        },
        {
            "Code_Prov_T": "16",
            "Name_Prov_E": "Ratanakiri",
            "Name_Prov_K": "រតនៈគីរី"
        },
        {
            "Code_Prov_T": "17",
            "Name_Prov_E": "Siemreap",
            "Name_Prov_K": "សៀមរាប"
        },
        {
            "Code_Prov_T": "18",
            "Name_Prov_E": "Preah Sihanouk",
            "Name_Prov_K": "ព្រះសីហនុ"
        },
        {
            "Code_Prov_T": "19",
            "Name_Prov_E": "Stung Treng",
            "Name_Prov_K": "ស្ទឹងត្រែង"
        },
        {
            "Code_Prov_T": "20",
            "Name_Prov_E": "Svay Rieng",
            "Name_Prov_K": "ស្វាយរៀង"
        },
        {
            "Code_Prov_T": "21",
            "Name_Prov_E": "Takeo",
            "Name_Prov_K": "តាកែវ"
        },
        {
            "Code_Prov_T": "22",
            "Name_Prov_E": "Oddar Meanchey",
            "Name_Prov_K": "ឧត្តរមានជ័យ"
        },
        {
            "Code_Prov_T": "23",
            "Name_Prov_E": "Kep",
            "Name_Prov_K": "កែប"
        },
        {
            "Code_Prov_T": "24",
            "Name_Prov_E": "Pailin",
            "Name_Prov_K": "ប៉ៃលិន"
        },
        {
            "Code_Prov_T": "25",
            "Name_Prov_E": "Tbong Khmum",
            "Name_Prov_K": "ត្បូងឃ្មុំ"
        },
        {
            "Code_Prov_T": "30",
            "Name_Prov_E": "National Hospitals",
            "Name_Prov_K": "មន្ទីរពេទ្យជាតិ"
        }
    ]
}

Get district

GET /api4/Places/districts

Get district list.

Query Parameters
  • page (int) – Page number.

Response as json:

{
  "meta": {
      "total_page": 7
  },
  "data": [
    {
        "Code_Dist_T": "0102",
        "Name_Dist_E": "Mongkol Borei",
        "Name_Dist_K": "មង្គល់បុរី"
    },
    {
        "Code_Dist_T": "0103",
        "Name_Dist_E": "Phnum Srok",
        "Name_Dist_K": "ភ្នំស្រុក"
    },
    {
        "Code_Dist_T": "0104",
        "Name_Dist_E": "Preah Netr Preah",
        "Name_Dist_K": "ព្រះនេត្រព្រះ"
    }
  ]
}

Get district

GET /api4/Places/communes

Get communes list.

Query Parameters
  • page (int) – Page number.

Response as json:

{
  "meta": {
      "total_page": 55
  },
  "data": [
    {
        "Code_Comm_T": "010201",
        "Name_Comm_E": "Banteay Neang",
        "Name_Comm_K": "បន្ទាយនាង"
    },
    {
        "Code_Comm_T": "010202",
        "Name_Comm_E": "Bat Trang",
        "Name_Comm_K": "បាត់ទ្រាំង"
    },
    {
        "Code_Comm_T": "010203",
        "Name_Comm_E": "ទ្រឹស្ដីបទ",
        "Name_Comm_K": "ចំណោម"
    }
  ]
}

API v5

Stock

Form

POST /api5/Stocks/stock_form

Form of stock data

Query Parameters
  • Year (int) – year of report, e.g: 2020,2021,…

  • Month (string) – month of report, e.g: 01, 02, …, 12

  • HC_Code (string) – code of health facility

Response as json:

{
    "code": 200,
    "message": "success",
    "data": {
        "total_case": {
            "Pf": 0,
            "Pv": 0,
            "Mix": 0,
            "Positive": 0,
            "Test": 255
        },
        "hc_case": {
            "Pf": 0,
            "Pv": 0,
            "Mix": 0,
            "Positive": 0,
            "Test": 155
        },
        "vmw_case": {
            "Pf": 0,
            "Pv": 0,
            "Mix": 0,
            "Positive": 0,
            "Test": 100
        },
        "items": [
            {
                "ItemId": 42,
                "Code": "ND0087",
                "Description": "G6PD quantitative control kit (Kit/10 pairs)",
                "Strength": "",
                "Unit": "Pair",
                "StockStart": 0,
                "StockIn": 0,
                "Total": 0,
                "StockOut": 0,
                "Adjustment": 0,
                "AdjustmentDetail": [],
                "Balance": 0,
                "Estimate": "0",
                "AMC": ".000000",
                "Expire": "",
                "ExpireDetail": [],
                "Note": "",
                "Request": "",
                "Offer": "",
                "Receive": "",
                "Status": "",
                "Comment": "",
                "CommentDate": "",
                "isChecked": 0,
                "Rec_ID": 294863,
                "isNew": 0,
                "MOS": "NA"
            },
            {
                "ItemId": 43,
                "Code": "ND0084",
                "Description": "G6PD quantitative test device (Kit/ 25 tests)",
                "Strength": "",
                "Unit": "Test",
                "StockStart": 0,
                "StockIn": 0,
                "Total": 0,
                "StockOut": 0,
                "Adjustment": 0,
                "AdjustmentDetail": [],
                "Balance": 0,
                "Estimate": "0",
                "AMC": ".000000",
                "Expire": "",
                "ExpireDetail": [],
                "Note": "",
                "Request": "",
                "Offer": "",
                "Receive": "",
                "Status": "",
                "Comment": "",
                "CommentDate": "",
                "isChecked": 0,
                "Rec_ID": 294864,
                "isNew": 0,
                "MOS": "NA"
            },
            {
                "ItemId": 44,
                "Code": "ND0082",
                "Description": "Rapid Diagnostic Test (Kit/10 tests)",
                "Strength": "",
                "Unit": "Test",
                "StockStart": 0,
                "StockIn": "",
                "Total": "",
                "StockOut": "",
                "Adjustment": "",
                "AdjustmentDetail": [],
                "Balance": 0,
                "Estimate": "NA",
                "AMC": ".000000",
                "Expire": "",
                "ExpireDetail": [],
                "Note": "",
                "Request": "",
                "Offer": "",
                "Receive": "",
                "Status": "",
                "Comment": "",
                "CommentDate": "",
                "isChecked": 0,
                "Rec_ID": "",
                "isNew": 0,
                "MOS": "NA"
            },
            {
                "ItemId": 34,
                "Code": "ND0150",
                "Description": "Quinine sulfate",
                "Strength": "300mg",
                "Unit": "Tablet",
                "StockStart": 0,
                "StockIn": 0,
                "Total": 0,
                "StockOut": 0,
                "Adjustment": 0,
                "AdjustmentDetail": [],
                "Balance": 0,
                "Estimate": "0",
                "AMC": ".000000",
                "Expire": "",
                "ExpireDetail": [],
                "Note": "",
                "Request": "",
                "Offer": "",
                "Receive": "",
                "Status": "",
                "Comment": "",
                "CommentDate": "",
                "isChecked": 0,
                "Rec_ID": 294862,
                "isNew": 0,
                "MOS": "NA"
            },
            {
                "ItemId": 28,
                "Code": "ND0069",
                "Description": "Artesunate + Mefloquine",
                "Strength": "100mg + 200mg",
                "Unit": "Box / 3 Tablets",
                "StockStart": 0,
                "StockIn": 0,
                "Total": 0,
                "StockOut": 0,
                "Adjustment": 0,
                "AdjustmentDetail": [],
                "Balance": 0,
                "Estimate": "0",
                "AMC": ".000000",
                "Expire": "",
                "ExpireDetail": [],
                "Note": "",
                "Request": "",
                "Offer": "",
                "Receive": "",
                "Status": "",
                "Comment": "",
                "CommentDate": "",
                "isChecked": 0,
                "Rec_ID": 294865,
                "isNew": 0,
                "MOS": "NA"
            },
            {
                "ItemId": 25,
                "Code": "ND0065",
                "Description": "Artesunate + Mefloquine",
                "Strength": "25mg + 50mg",
                "Unit": "Box / 6 Tablets",
                "StockStart": 0,
                "StockIn": 0,
                "Total": 0,
                "StockOut": 0,
                "Adjustment": 0,
                "AdjustmentDetail": [],
                "Balance": 0,
                "Estimate": "0",
                "AMC": ".000000",
                "Expire": "",
                "ExpireDetail": [],
                "Note": "",
                "Request": "",
                "Offer": "",
                "Receive": "",
                "Status": "",
                "Comment": "",
                "CommentDate": "",
                "isChecked": 0,
                "Rec_ID": 294866,
                "isNew": 0,
                "MOS": "NA"
            },
            {
                "ItemId": 26,
                "Code": "ND0066",
                "Description": "Artesunate + Mefloquine",
                "Strength": "25mg + 50mg",
                "Unit": "Box / 3 Tablets",
                "StockStart": 0,
                "StockIn": 0,
                "Total": 0,
                "StockOut": 0,
                "Adjustment": 0,
                "AdjustmentDetail": [],
                "Balance": 0,
                "Estimate": "0",
                "AMC": ".000000",
                "Expire": "",
                "ExpireDetail": [],
                "Note": "",
                "Request": "",
                "Offer": "",
                "Receive": "",
                "Status": "",
                "Comment": "",
                "CommentDate": "",
                "isChecked": 0,
                "Rec_ID": 294867,
                "isNew": 0,
                "MOS": "NA"
            },
            {
                "ItemId": 27,
                "Code": "ND0067",
                "Description": "Artesunate + Mefloquine",
                "Strength": "100mg + 200mg",
                "Unit": "Box / 6 Tablets",
                "StockStart": 24,
                "StockIn": 20,
                "Total": 44,
                "StockOut": 24,
                "Adjustment": 0,
                "AdjustmentDetail": [],
                "Balance": 20,
                "Estimate": "-20",
                "AMC": "2.000000",
                "Expire": "2021-11-30",
                "ExpireDetail": [
                    {
                        "Date": "2021-11-30",
                        "Qty": 20
                    }
                ],
                "Note": "",
                "Request": "",
                "Offer": "",
                "Receive": "",
                "Status": "",
                "Comment": "",
                "CommentDate": "",
                "isChecked": 0,
                "Rec_ID": 294868,
                "isNew": 0,
                "MOS": 10
            },
            {
                "ItemId": 32,
                "Code": "ND0132",
                "Description": "Primaquine 7.5mg",
                "Strength": "7.5mg",
                "Unit": "Tablet",
                "StockStart": 30,
                "StockIn": 0,
                "Total": 30,
                "StockOut": 0,
                "Adjustment": 0,
                "AdjustmentDetail": [],
                "Balance": 30,
                "Estimate": "-26",
                "AMC": "2.000000",
                "Expire": "2021-09-30",
                "ExpireDetail": [
                    {
                        "Date": "2021-09-30",
                        "Qty": 30
                    }
                ],
                "Note": "",
                "Request": "",
                "Offer": "",
                "Receive": "",
                "Status": "",
                "Comment": "",
                "CommentDate": "",
                "isChecked": 0,
                "Rec_ID": 294870,
                "isNew": 0,
                "MOS": 15
            },
            {
                "ItemId": 13,
                "Code": "ND0080",
                "Description": "Rapid Dignostic Test (RDT)",
                "Strength": "",
                "Unit": "Kit / 25 Tests",
                "StockStart": 6,
                "StockIn": 3,
                "Total": 9,
                "StockOut": 6,
                "Adjustment": 0,
                "AdjustmentDetail": [],
                "Balance": 3,
                "Estimate": "7",
                "AMC": "6.333333",
                "Expire": "2022-07-02",
                "ExpireDetail": [
                    {
                        "Date": "2022-07-02",
                        "Qty": 3
                    }
                ],
                "Note": "",
                "Request": 20,
                "Offer": "",
                "Receive": "",
                "Status": "Requested",
                "Comment": "",
                "CommentDate": "",
                "isChecked": 0,
                "Rec_ID": 294872,
                "isNew": 0,
                "MOS": 0.5
            },
            {
                "ItemId": 17,
                "Code": "ND0225",
                "Description": "LLIN",
                "Strength": "",
                "Unit": "Piece",
                "StockStart": 0,
                "StockIn": 0,
                "Total": 0,
                "StockOut": 0,
                "Adjustment": 0,
                "AdjustmentDetail": [],
                "Balance": 0,
                "Estimate": "0",
                "AMC": ".000000",
                "Expire": "",
                "ExpireDetail": [],
                "Note": "",
                "Request": "",
                "Offer": "",
                "Receive": "",
                "Status": "",
                "Comment": "",
                "CommentDate": "",
                "isChecked": 0,
                "Rec_ID": 294874,
                "isNew": 0,
                "MOS": "NA"
            },
            {
                "ItemId": 18,
                "Code": "ND0227",
                "Description": "LLIHN",
                "Strength": "",
                "Unit": "Piece",
                "StockStart": 0,
                "StockIn": 0,
                "Total": 0,
                "StockOut": 0,
                "Adjustment": 0,
                "AdjustmentDetail": [],
                "Balance": 0,
                "Estimate": "0",
                "AMC": ".000000",
                "Expire": "",
                "ExpireDetail": [],
                "Note": "",
                "Request": "",
                "Offer": "",
                "Receive": "",
                "Status": "",
                "Comment": "",
                "CommentDate": "",
                "isChecked": 0,
                "Rec_ID": 294875,
                "isNew": 0,
                "MOS": "NA"
            }
        ]
    }
}

Message

Message List

GET /api5/message/list

List of messages

Query Parameters
  • code_place (string) – code of health facility / village code / name of CNM

Response as json:

{
    "code": 200,
    "message": "success",
    "data": [
        {
            "Rec_ID": 1,
            "Code_Place": "010201",
            "Text": "Hello CNM I need some money",
            "Parent_ID": null,
            "IsRead": 0,
            "InitTime": "2022-02-04 00:00:00.000"
        },
        {
            "Rec_ID": 3,
            "Code_Place": "CNM",
            "Text": "Yes",
            "Parent_ID": 1,
            "IsRead": 0,
            "InitTime": "2022-02-06 00:00:00.000"
        },
        {
            "Rec_ID": 4,
            "Code_Place": "010201",
            "Text": "I need 1 million dollar",
            "Parent_ID": 1,
            "IsRead": 1,
            "InitTime": "2022-02-06 00:00:00.000"
        },
        {
            "Rec_ID": 5,
            "Code_Place": "CNM",
            "Text": "OK I will give you",
            "Parent_ID": 1,
            "IsRead": 1,
            "InitTime": "2022-02-06 00:00:00.000"
        }
    ]
}

Send message

POST /api5/message/list

Send message

Parse as json:

{
    "message": {
        "Code_Place": "010201",
        "Text": "Hello",
        "Parent_ID": 1
    }
}
Object
  • Code_Place (int) – code of health facility / village code / name of CNM.

Update status

POST /api5/message/update_status

Update read status

Parse as json:

{
    "Rec_ID": 1,
    "IsRead": 1
}
Object
  • Rec_ID (int) – Rec_ID of message.

  • IsRead (bit) – 0/1, if not yet read the value is 0 other wise is 1.

API v1 of CMI

Users

Authentication

POST /api-malaria-info/v1/Users/auth

User login

Parse as json:

{
  "user_name": "phdtest",
  "password": 123
}
Object
  • user_name (string) – user name get from MIS User.

  • password (string) – password get from MIS User.

Response as json:

{
  "Us": "PHDTest",
  "Role": "PHD",
  "Code_Prov": "14",
  "Code_OD": "",
  "Code_RG": "",
  "Activate": 1,
  "IsNotification": 1
}

Register token

POST /api-malaria-info/v1/Users/update_token

Insert/Update token

Parse as json:

{
  "Imei": "351910103270828901",
  "Username" : "bunthy",
  "Token": "gerate token from device"
}

Device logging

POST /api-malaria-info/v1/Users/log

To log device

Parse as json:

{
  "Imei" : "999",
  "UserName" : "odtest",
  "PhoneModel" : "Iphone 12",
  "OS" : "IOS14",
  "AppVersion" : "1.0",
  "Frequency" : "5",
  "HasUserAccount" : "1",
  "Lat" : "11111",
  "Long" : "22222",
  "City" : "Phnom penh",
  "StartDate" : "2020-10-10",
  "LastOnline" : "2020-10-10"
}

Summary

Daily case

GET /api-malaria-info/v1/Surveillance/case_daily

To get today case information

Response as json:

{
  "code": 200,
  "message": "success",
  "data": [
      {
          "PF": 0,
          "PV": 0,
          "Mix": 0,
          "Total": 0
      }
  ]
}

Weekly case

GET /api-malaria-info/v1/Surveillance/case_weekly

To get weekly case information

Response as json:

{
  "code": 200,
  "message": "success",
  "data": [
      {
          "PF": 0,
          "PV": 8,
          "Mix": 0,
          "Total": 8
      }
  ]
}

Monthly case

GET /api-malaria-info/v1/Surveillance/case_monthly

To get monthly case information

Response as json:

{
  "code": 200,
  "message": "success",
  "data": [
      {
          "PFThisYear": 1,
          "PFLastYear": 59,
          "PFChange": "-.983050847457",
          "PVThisYear": 40,
          "PVLastYear": 475,
          "PVChange": "-.915789473684",
          "MixThisYear": 0,
          "MixLastYear": 0,
          "MixChange": ".000000000000"
      }
  ]
}

This year case

GET /api-malaria-info/v1/Surveillance/case_this_year

To get this year case information

Response as json:

{
  "code": 200,
  "message": "success",
  "data": [
      {
          "PF": 1,
          "PV": 53,
          "Mix": 0,
          "Total": 54
      }
  ]
}

Pv Radical cure (chart)

GET /api-malaria-info/v1/Surveillance/pv_radicalcure

To get Pv radical cure info

Query Parameters
  • year (int) – year.

  • month_from (string) – month begin.

  • month_to (string) – month to.

Response as json:

{
  "code": 200,
  "message": "success",
  "data": [
      {
          "Pv": 56,
          "G6PDTest": 32,
          "G6PDNormal": 18,
          "Primaquine": 13
      }
  ]
}

HF report timely

GET /api-malaria-info/v1/Surveillance/hf_report_timely

To get report timely of health facility

Query Parameters
  • year (int) – year, e.g: 2021, 2022, …

  • month (string) – month, e.g: 01, …,12.

Response as json:

{
  "code": 200,
  "message": "success",
  "data": [
      {
          "Type": "Timely",
          "Month": "09",
          "Value": "36"
      },
      {
          "Type": "Received",
          "Month": "09",
          "Value": "815"
      }
  ]
}

VMW report timely

GET /api-malaria-info/v1/Surveillance/vmw_report_timely

To get report timely of VMW

Query Parameters
  • year (int) – year, e.g: 2021, 2022, …

  • month (string) – month, e.g: 01, …,12.

Response as json:

{
  "code": 200,
  "message": "success",
  "data": [
      {
          "Type": "Timely",
          "Month": "06",
          "Value": 42
      },
      {
          "Type": "Received",
          "Month": "06",
          "Value": 3311
      }
  ]
}

Annual Foci classification

GET /api-malaria-info/v1/Surveillance/foci

To get annual foci classification and mornitoring

Response as json:

{
  "code": 200,
  "message": "success",
  "data": [
    {
        "Name_Prov_E": "Kampong Chhnang",
        "Name_Prov_K": "កំពង់ឆ្នាំង",
        "Code_Prov_T": "04",
        "Name_OD_E": "Kampong Chhnang",
        "Name_OD_K": "កំពង់ឆ្នាំង",
        "Code_OD_T": "0401",
        "Name_Facility_E": "Kbal Tuek",
        "Name_Facility_K": "ក្បាលទឹក",
        "Code_Facility_T": "040116",
        "Name_Vill_E": "Doung Sla",
        "Name_Vill_K": "ដូងស្លា",
        "Code_Vill_T": "0408040200",
        "Lat": 11.961394,
        "Long": 104.303273,
        "Year1": "orange",
        "Year2": "",
        "Year3": "",
        "Year4": "",
        "Status": "Active"
    },
    {
        "Name_Prov_E": "Kampong Chhnang",
        "Name_Prov_K": "កំពង់ឆ្នាំង",
        "Code_Prov_T": "04",
        "Name_OD_E": "Kampong Tralach",
        "Name_OD_K": "កំពង់ត្រឡាច",
        "Code_OD_T": "0402",
        "Name_Facility_E": "Kampong Tralach Leu",
        "Name_Facility_K": "កំពង់ត្រឡាចលើ",
        "Code_Facility_T": "040202",
        "Name_Vill_E": "Samretthi Chey",
        "Name_Vill_K": "សំរិទ្ធិជ័យ",
        "Code_Vill_T": "0405040400",
        "Lat": 11.910326,
        "Long": 104.778443,
        "Year1": "orange",
        "Year2": "green",
        "Year3": "",
        "Year4": "",
        "Status": "Residual"
    }
  ]
}

Health worker

GET /api-malaria-info/v1/HF/hf_worker

To get number of health facility, village, VMW, MMW, OD, province that is malaria target

Response as json:

{
  "code": 200,
  "message": "success",
  "data": [
      {
          "PopAtRisk": 9714485
      },
      {
          "Village": 10739
      },
      {
          "MMW": 269
      },
      {
          "VMW": 2560
      },
      {
          "HC": 874
      },
      {
          "OD": 55
      },
      {
          "Province": 21
      }
  ]
}

Dashboard

Number of malaria test and case (Bar chart)

GET /api-malaria-info/v1/Surveillance/malaria

To get number of test, Pv, Pf, Mix of each month in selected year

Query Parameters
  • Year (int) – year of report, e.g: 2020,2021,…

  • province (string) – code of province.

  • od (string) – code of OD.

Response as json:

{
  "code": 200,
  "message": "success",
  "data": [
    {
        "Month": "01",
        "PF": 11,
        "PV": 49,
        "MIX": 1,
        "Positive": 61,
        "Test": 797
    },
    {
        "Month": "02",
        "PF": 16,
        "PV": 48,
        "MIX": 1,
        "Positive": 65,
        "Test": 1131
    },
    {
        "Month": "03",
        "PF": 16,
        "PV": 25,
        "MIX": 1,
        "Positive": 42,
        "Test": 1347
    },
    {
        "Month": "04",
        "PF": 17,
        "PV": 25,
        "MIX": 0,
        "Positive": 42,
        "Test": 1450
    },
    {
        "Month": "05",
        "PF": 26,
        "PV": 18,
        "MIX": 0,
        "Positive": 44,
        "Test": 1095
    },
    {
        "Month": "06",
        "PF": 77,
        "PV": 36,
        "MIX": 0,
        "Positive": 113,
        "Test": 1565
    },
    {
        "Month": "07",
        "PF": 37,
        "PV": 50,
        "MIX": 1,
        "Positive": 88,
        "Test": 2274
    },
    {
        "Month": "08",
        "PF": 33,
        "PV": 41,
        "MIX": 0,
        "Positive": 74,
        "Test": 2152
    },
    {
        "Month": "09",
        "PF": 7,
        "PV": 35,
        "MIX": 0,
        "Positive": 42,
        "Test": 1352
    },
    {
        "Month": "10",
        "PF": 10,
        "PV": 37,
        "MIX": 0,
        "Positive": 47,
        "Test": 1215
    },
    {
        "Month": "11",
        "PF": 8,
        "PV": 27,
        "MIX": 0,
        "Positive": 35,
        "Test": 1143
    },
    {
        "Month": "12",
        "PF": 5,
        "PV": 18,
        "MIX": 0,
        "Positive": 23,
        "Test": 1221
    }
  ]
}

Top 10 villages with Pf and Mix (Pie chart)

GET /api-malaria-info/v1/Surveillance/pf_mix

To get top 10 villages with Pf and Mix.

Query Parameters
  • Year (int) – year of report, e.g: 2020,2021,…

  • province (string) – code of province.

  • od (string) – code of OD.

  • month_from (string) – begin month.

  • month_to (string) – end of month.

Response as json:

{
  "code": 200,
  "message": "success",
  "data": [
      {
          "Name_Vill_K": "រំដួលថ្មី",
          "Name_Vill_E": "Rumduol Thmei",
          "Name_Facility_K": "មិត្តភាពកម្ពុជាជប៉ុន ចំបក់",
          "Name_Facility_E": "Chambak",
          "Name_OD_K": "ភ្នំស្រួច",
          "Name_OD_E": "Phnom Srouch",
          "PFMix": 61
      },
      {
          "Name_Vill_K": "ពាមល្វា",
          "Name_Vill_E": "Peam lvea",
          "Name_Facility_K": "មិត្តភាពកម្ពុជាជប៉ុន ចំបក់",
          "Name_Facility_E": "Chambak",
          "Name_OD_K": "ភ្នំស្រួច",
          "Name_OD_E": "Phnom Srouch",
          "PFMix": 37
      },
      {
          "Name_Vill_K": "ក្រាំងចេក",
          "Name_Vill_E": "Krang Chek",
          "Name_Facility_K": "មិត្តភាពកម្ពុជាជប៉ុន ចំបក់",
          "Name_Facility_E": "Chambak",
          "Name_OD_K": "ភ្នំស្រួច",
          "Name_OD_E": "Phnom Srouch",
          "PFMix": 18
      },
      {
          "Name_Vill_K": "បន្ទាយរការ_គិរីសែនជ័យ (M)",
          "Name_Vill_E": "Banteay Roka_Kirisenchey (M)",
          "Name_Facility_K": "មិត្តភាពកម្ពុជាជប៉ុន ចំបក់",
          "Name_Facility_E": "Chambak",
          "Name_OD_K": "ភ្នំស្រួច",
          "Name_OD_E": "Phnom Srouch",
          "PFMix": 17
      },
      {
          "Name_Vill_K": "ជន្លង់ម្លូ",
          "Name_Vill_E": "Chonlong Mlu",
          "Name_Facility_K": "សំរោងរំដួល",
          "Name_Facility_E": "Samroung romduol",
          "Name_OD_K": "ភ្នំស្រួច",
          "Name_OD_E": "Phnom Srouch",
          "PFMix": 15
      },
      {
          "Name_Vill_K": "ពាមល្វា_ស្រែដូង (M)",
          "Name_Vill_E": "Peam Lvea_Sre Doung (M)",
          "Name_Facility_K": "មិត្តភាពកម្ពុជាជប៉ុន ចំបក់",
          "Name_Facility_E": "Chambak",
          "Name_OD_K": "ភ្នំស្រួច",
          "Name_OD_E": "Phnom Srouch",
          "PFMix": 13
      },
      {
          "Name_Vill_K": "ដូង_គ្រោងមានជ័យ (M)",
          "Name_Vill_E": "Doung_Kraong Meanchey (M)",
          "Name_Facility_K": "មិត្តភាពកម្ពុជាជប៉ុន ចំបក់",
          "Name_Facility_E": "Chambak",
          "Name_OD_K": "ភ្នំស្រួច",
          "Name_OD_E": "Phnom Srouch",
          "PFMix": 12
      },
      {
          "Name_Vill_K": "ដូង",
          "Name_Vill_E": "Doung",
          "Name_Facility_K": "មិត្តភាពកម្ពុជាជប៉ុន ចំបក់",
          "Name_Facility_E": "Chambak",
          "Name_OD_K": "ភ្នំស្រួច",
          "Name_OD_E": "Phnom Srouch",
          "PFMix": 10
      },
      {
          "Name_Vill_K": "ក្រាំងក្រូច",
          "Name_Vill_E": "Krang Krouch",
          "Name_Facility_K": "មិត្តភាពកម្ពុជាជប៉ុន ចំបក់",
          "Name_Facility_E": "Chambak",
          "Name_OD_K": "ភ្នំស្រួច",
          "Name_OD_E": "Phnom Srouch",
          "PFMix": 8
      },
      {
          "Name_Vill_K": "កណ្តាល",
          "Name_Vill_E": "Kandal",
          "Name_Facility_K": "សំរោងរំដួល",
          "Name_Facility_E": "Samroung romduol",
          "Name_OD_K": "ភ្នំស្រួច",
          "Name_OD_E": "Phnom Srouch",
          "PFMix": 7
      },
      {
          "Name_Vill_K": "អ្នកជំងឺមកពីភូមិផ្សេង (203 ភូមិ)",
          "Name_Vill_E": "Patient form other village (203 Village)",
          "Name_Facility_K": "មណ្ឌលសុខភាពផ្សេង",
          "Name_Facility_E": "Patient form other HF",
          "Name_OD_K": "ស្រុកប្រតិបត្តិផ្សេង",
          "Name_OD_E": "Patient form other OD",
          "PFMix": 66
      }
  ]
}

Top 10 villages (table)

GET /api-malaria-info/v1/Surveillance/top_ten_village

To get top 10 villages.

Query Parameters
  • year (int) – year of report, e.g: 2020,2021,…

  • province (string) – code of province.

  • od (string) – code of OD.

  • month_from (string) – begin month, e.g: 01, 02, …, 12.

  • month_to (string) – end of month, e.g: 01, 02, …, 12.

Response as json:

{
  "code": 200,
  "message": "success",
  "data": [
    {
        "Name_Vill_K": "រំដួលថ្មី",
        "Name_Vill_E": "Rumduol Thmei",
        "Name_Facility_K": "មិត្តភាពកម្ពុជាជប៉ុន ចំបក់",
        "Name_Facility_E": "Chambak",
        "Name_OD_K": "ភ្នំស្រួច",
        "Name_OD_E": "Phnom Srouch",
        "PF": 61,
        "PV": 23,
        "Mix": 1,
        "Total": 85,
        "Pop": 345,
        "Incident": "246.376811594000"
    },
    {
        "Name_Vill_K": "ក្រាំងចេក",
        "Name_Vill_E": "Krang Chek",
        "Name_Facility_K": "មិត្តភាពកម្ពុជាជប៉ុន ចំបក់",
        "Name_Facility_E": "Chambak",
        "Name_OD_K": "ភ្នំស្រួច",
        "Name_OD_E": "Phnom Srouch",
        "PF": 16,
        "PV": 20,
        "Mix": 0,
        "Total": 36,
        "Pop": 500,
        "Incident": "72.000000000000"
    },
    {
        "Name_Vill_K": "បន្ទាយរការ_គិរីសែនជ័យ (M)",
        "Name_Vill_E": "Banteay Roka_Kirisenchey (M)",
        "Name_Facility_K": "មិត្តភាពកម្ពុជាជប៉ុន ចំបក់",
        "Name_Facility_E": "Chambak",
        "Name_OD_K": "ភ្នំស្រួច",
        "Name_OD_E": "Phnom Srouch",
        "PF": 15,
        "PV": 18,
        "Mix": 1,
        "Total": 34,
        "Pop": 434,
        "Incident": "78.341013824000"
    },
    {
        "Name_Vill_K": "ក្រាំងបឹង",
        "Name_Vill_E": "Krang Boeng",
        "Name_Facility_K": "សំរោងរំដួល",
        "Name_Facility_E": "Samroung romduol",
        "Name_OD_K": "ភ្នំស្រួច",
        "Name_OD_E": "Phnom Srouch",
        "PF": 4,
        "PV": 18,
        "Mix": 0,
        "Total": 22,
        "Pop": 645,
        "Incident": "34.108527131000"
    },
    {
        "Name_Vill_K": "ស្រែជ្រៅ",
        "Name_Vill_E": "Srae Chrov",
        "Name_Facility_K": "សំរោងរំដួល",
        "Name_Facility_E": "Samroung romduol",
        "Name_OD_K": "ភ្នំស្រួច",
        "Name_OD_E": "Phnom Srouch",
        "PF": 3,
        "PV": 14,
        "Mix": 0,
        "Total": 17,
        "Pop": 735,
        "Incident": "23.129251700000"
    },
    {
        "Name_Vill_K": "ជន្លង់ម្លូ",
        "Name_Vill_E": "Chonlong Mlu",
        "Name_Facility_K": "សំរោងរំដួល",
        "Name_Facility_E": "Samroung romduol",
        "Name_OD_K": "ភ្នំស្រួច",
        "Name_OD_E": "Phnom Srouch",
        "PF": 14,
        "PV": 2,
        "Mix": 0,
        "Total": 16,
        "Pop": 1016,
        "Incident": "15.748031496000"
    },
    {
        "Name_Vill_K": "ដក់ពរ_ទ័ពម្រាក់ (M)",
        "Name_Vill_E": "Dak Por_Toap Mreak (M)",
        "Name_Facility_K": "មិត្តភាពកម្ពុជាជប៉ុន ចំបក់",
        "Name_Facility_E": "Chambak",
        "Name_OD_K": "ភ្នំស្រួច",
        "Name_OD_E": "Phnom Srouch",
        "PF": 1,
        "PV": 14,
        "Mix": 0,
        "Total": 15,
        "Pop": 340,
        "Incident": "44.117647058000"
    },
    {
        "Name_Vill_K": "ដូង",
        "Name_Vill_E": "Doung",
        "Name_Facility_K": "មិត្តភាពកម្ពុជាជប៉ុន ចំបក់",
        "Name_Facility_E": "Chambak",
        "Name_OD_K": "ភ្នំស្រួច",
        "Name_OD_E": "Phnom Srouch",
        "PF": 9,
        "PV": 4,
        "Mix": 1,
        "Total": 14,
        "Pop": 869,
        "Incident": "16.110471806000"
    },
    {
        "Name_Vill_K": "ព្រៃកាហៀច",
        "Name_Vill_E": "Prey Kahiech",
        "Name_Facility_K": "មិត្តភាពកម្ពុជាជប៉ុន ចំបក់",
        "Name_Facility_E": "Chambak",
        "Name_OD_K": "ភ្នំស្រួច",
        "Name_OD_E": "Phnom Srouch",
        "PF": 4,
        "PV": 9,
        "Mix": 1,
        "Total": 14,
        "Pop": 704,
        "Incident": "19.886363636000"
    },
    {
        "Name_Vill_K": "ក្រាំងធំ",
        "Name_Vill_E": "Krang Thum",
        "Name_Facility_K": "សំរោងរំដួល",
        "Name_Facility_E": "Samroung romduol",
        "Name_OD_K": "ភ្នំស្រួច",
        "Name_OD_E": "Phnom Srouch",
        "PF": 1,
        "PV": 12,
        "Mix": 0,
        "Total": 13,
        "Pop": 1054,
        "Incident": "12.333965844000"
    }
  ]
}

Stock out

GET /api-malaria-info/v1/Surveillance/stock_out

To get HC that has stock out.

Query Parameters
  • Year (int) – year of report, e.g: 2020,2021,…

  • month (string) – month of report, e.g: 01, 02, …, 12

  • province (string) – code of province.

  • od (string) – code of OD.

  • user (string) – user name get form MIS.

Response as json:

{
  "code": 200,
  "message": "success",
  "data": [
    {
        "Name_Prov_K": "ព្រះសីហនុ",
        "Name_Prov_E": "Preah Sihanouk",
        "Name_Facility_K": "ព្រះសីហនុ មន្ទីរពេទ្យ",
        "Name_Facility_E": "Preah Sihanouk RH",
        "Name_OD_K": "ព្រះសីហនុ",
        "Name_OD_E": "Preah Sihanouk",
        "Description": "Rapid Dignostic Test (RDT)",
        "Unit": "Kit / 25 Tests"
    },
    {
        "Name_Prov_K": "ព្រះសីហនុ",
        "Name_Prov_E": "Preah Sihanouk",
        "Name_Facility_K": "ស្ទឹងហាវ",
        "Name_Facility_E": "Steung Hav",
        "Name_OD_K": "ព្រះសីហនុ",
        "Name_OD_E": "Preah Sihanouk",
        "Description": "Rapid Dignostic Test (RDT)",
        "Unit": "Kit / 25 Tests"
    },
    {
        "Name_Prov_K": "ព្រះសីហនុ",
        "Name_Prov_E": "Preah Sihanouk",
        "Name_Facility_K": "ទឹកល្អក់",
        "Name_Facility_E": "Tuek L'ak",
        "Name_OD_K": "ព្រះសីហនុ",
        "Name_OD_E": "Preah Sihanouk",
        "Description": "Rapid Dignostic Test (RDT)",
        "Unit": "Kit / 25 Tests"
    }
  ]
}

Malaria Hotspot

GET /api-malaria-info/v1/Surveillance/malaria_hotspot

To get village that is in hight rank of malaria cases.

Query Parameters
  • year (int) – year of report, e.g: 2020,2021,…

  • province (string) – code of province.

  • od (string) – code of OD.

  • month_from (string) – begin month, e.g: 01, 02, …, 12.

  • month_to (string) – end of month, e.g: 01, 02, …, 12.

Response as json:

{
  "code": 200,
  "message": "success",
  "data": [
    {
        "Name_Vill_E": "Kbal Teahean",
        "Name_Vill_K": "ក្បាលទាហាន",
        "Name_Facility_E": "Chheu Tom",
        "Name_Facility_K": "ឈើតុំ",
        "Code_Vill_T": "1503042100",
        "Name_OD_E": "Krakor",
        "Name_OD_K": "ក្រគរ",
        "Lat": 12.255001,
        "long": 104.161842,
        "Total": 757,
        "Rank": 35
    },
    {
        "Name_Vill_E": "Bam Nak",
        "Name_Vill_K": "បំណក់",
        "Name_Facility_E": "Chheu Tom",
        "Name_Facility_K": "ឈើតុំ",
        "Code_Vill_T": "1503041900",
        "Name_OD_E": "Krakor",
        "Name_OD_K": "ក្រគរ",
        "Lat": 12.28574,
        "long": 104.180935,
        "Total": 670,
        "Rank": 33
    },
    {
        "Name_Vill_E": "Ksetr Bourei",
        "Name_Vill_K": "ក្សេត្របូរី",
        "Name_Facility_E": "Phnom Kravanh",
        "Name_Facility_K": "ភ្នំក្រវាញ",
        "Code_Vill_T": "1504060300",
        "Name_OD_E": "Kravanh",
        "Name_OD_K": "ក្រវាញ",
        "Lat": 12.04307,
        "long": 103.828709,
        "Total": 536,
        "Rank": 26
    },
    {
        "Name_Vill_E": "Po Meas",
        "Name_Vill_K": "ពោធិមាស",
        "Name_Facility_E": "Trapeang Cho",
        "Name_Facility_K": "ត្រពាំងជោ",
        "Code_Vill_T": "0504032600",
        "Name_OD_E": "Kampong Speu",
        "Name_OD_K": "កំពង់ស្ពឺ",
        "Lat": 11.8267223,
        "long": 104.130547,
        "Total": 351,
        "Rank": 25
    }
  ]
}

Map of HC and Village

GET /api-malaria-info/v1/Map/village_hf

To get village that is in hight rank of malaria cases.

Query Parameters
  • code_province (string) – code of province.

  • code_od (string) – code of OD.

  • code_hf (string) – code of health facility.

Response as json:

{
  "code": 200,
  "message": "success",
  "data": [
    {
        "Code_Vill_T": "0105030400",
        "Name_Vill_K": "យាយអត",
        "Name_Vill_E": "Yeay At",
        "Code_Facility_T": "010205",
        "Name_Facility_K": "និមិត្ត",
        "Name_Facility_E": "Nimith",
        "Code_OD_T": "0102",
        "Name_OD_K": "ប៉ោយប៉ែត",
        "Name_OD_E": "Poipet",
        "Code_Prov_T": "01",
        "Name_Prov_K": "បន្ទាយមានជ័យ",
        "Name_Prov_E": "Banteay Meanchey",
        "Lat": 13.546843,
        "Long": 102.758938,
        "Type": "Village"
    },
    {
        "Code_Vill_T": "0105030500",
        "Name_Vill_K": "គោកកាណាំង",
        "Name_Vill_E": "Kok Kanang",
        "Code_Facility_T": "010205",
        "Name_Facility_K": "និមិត្ត",
        "Name_Facility_E": "Nimith",
        "Code_OD_T": "0102",
        "Name_OD_K": "ប៉ោយប៉ែត",
        "Name_OD_E": "Poipet",
        "Code_Prov_T": "01",
        "Name_Prov_K": "បន្ទាយមានជ័យ",
        "Name_Prov_E": "Banteay Meanchey",
        "Lat": 13.566657,
        "Long": 102.733455,
        "Type": "Village"
    },
    {
        "Code_Vill_T": "0105030600",
        "Name_Vill_K": "ត្មាតពង",
        "Name_Vill_E": "Thmat Porng",
        "Code_Facility_T": "010205",
        "Name_Facility_K": "និមិត្ត",
        "Name_Facility_E": "Nimith",
        "Code_OD_T": "0102",
        "Name_OD_K": "ប៉ោយប៉ែត",
        "Name_OD_E": "Poipet",
        "Code_Prov_T": "01",
        "Name_Prov_K": "បន្ទាយមានជ័យ",
        "Name_Prov_E": "Banteay Meanchey",
        "Lat": 13.572624,
        "Long": 102.716994,
        "Type": "Village"
    },
    {
        "Code_Vill_T": "0105090200",
        "Name_Vill_K": "ជោគជ័យ",
        "Name_Vill_E": "Chouk Chey",
        "Code_Facility_T": "010218",
        "Name_Facility_K": "សិលាខ្មែរ",
        "Name_Facility_E": "Seila Khmer",
        "Code_OD_T": "0102",
        "Name_OD_K": "ប៉ោយប៉ែត",
        "Name_OD_E": "Poipet",
        "Code_Prov_T": "01",
        "Name_Prov_K": "បន្ទាយមានជ័យ",
        "Name_Prov_E": "Banteay Meanchey",
        "Lat": 13.760794,
        "Long": 102.701674,
        "Type": "Village"
    }
  ]
}

Map of foci

POST /api-malaria-info/v1/Foci/list

To get foci village map

Query Parameters
  • user (string) – user name.

Response as json:

{
  "code": 200,
  "message": "success",
  "data": [
    {
        "Name_Prov_E": "Kampong Chhnang",
        "Name_OD_E": "Kampong Chhnang",
        "Name_Facility_E": "Kbal Tuek",
        "Name_Vill_E": "Doung Sla",
        "Lat": 11.961394,
        "Long": 104.303273,
        "Year1": "orange",
        "Year2": "",
        "Year3": "",
        "Year4": "",
        "Status": "Active"
    },
    {
        "Name_Prov_E": "Kampong Chhnang",
        "Name_OD_E": "Kampong Tralach",
        "Name_Facility_E": "Kampong Tralach Leu",
        "Name_Vill_E": "Samretthi Chey",
        "Lat": 11.910326,
        "Long": 104.778443,
        "Year1": "orange",
        "Year2": "green",
        "Year3": "",
        "Year4": "",
        "Status": "Residual"
    }
  ]
}

Contact

POST /api-malaria-info/v1/Contact/list

To get contact list

Query Parameters
  • type (string) – type of contact, CNM/Partner/PHD/OD/HC/VMW.

  • user (string) – user name.

Response as json:

{
  "code": 200,
  "message": "success",
  "data": [
    {
        "Rec_ID": 3909,
        "Name": "Mr. Chhim Chon",
        "Phone": "077 918 883",
        "Email": "",
        "Position": "Officer",
        "UnitName": "Accounting"
    },
    {
        "Rec_ID": 3910,
        "Name": "Mr. Yeouk Soklin",
        "Phone": "012 311 713",
        "Email": "",
        "Position": "Officer",
        "UnitName": "Accounting"
    },
    {
        "Rec_ID": 3975,
        "Name": "Ms. Arm Monybora",
        "Phone": "012 247 806",
        "Email": "",
        "Position": "Contract Staff",
        "UnitName": "Accounting"
    },
    {
        "Rec_ID": 3895,
        "Name": "Ma. Chea Monthavy",
        "Phone": "012 779 353",
        "Email": "",
        "Position": "Deputy Chief of Administration Office",
        "UnitName": "Administration"
    }
  ]
}

Notification

GET /api-malaria-info/v1/Notification/get_list

To get list of notification

Query Parameters
  • imei (string) – Imei of device.

  • type (string) – CASE/STOCK.

Response as json:

{
  "code": 200,
  "message": "success",
  "data": [
    {
        "Rec_ID": 639506,
        "Imei": "866222031369872",
        "Message": "អ្នកជំងឺឈ្មោះ test ភេទប្រុស អាយុ 30ឆ្នាំ លេខទូរសព្ទអ្នកជំងឺ 096 មានប្រភេទមេរោគ  Pv នៅភូមិជាចកណ្ដាល មណ្ឌលសុខភាព​ជាច ស្រុកប្រតិបត្តិកំចាយមារ ខេត្តព្រៃវែង រកឃើញដោយ VMWភូមិជាចកណ្ដាល លេខទំនាក់ទំនង 0968888886​ ។ ",
        "Type": "case",
        "InitTime": "2021-12-19 13:48:33.293"
    },
    {
        "Rec_ID": 639503,
        "Imei": "866222031369872",
        "Message": "អ្នកជំងឺឈ្មោះ hhh ភេទប្រុស អាយុ 30ឆ្នាំ លេខទូរសព្ទអ្នកជំងឺ 096 មានប្រភេទមេរោគ  Pv នៅភូមិរហាល មណ្ឌលសុខភាព​ជាច ស្រុកប្រតិបត្តិកំចាយមារ ខេត្តព្រៃវែង រកឃើញដោយ HCជាច លេខទំនាក់ទំនង 012917012​ ។ ",
        "Type": "case",
        "InitTime": "2021-12-19 13:30:19.527"
    }
  ]
}

API v1 of QA

Users

Authentication

POST /api-qa/v1/Users/auth

User login

Parse as json:

{
  "HC_Code": "123456",
  "Imei": "1234567890"
}

Response as json:

{
  "Role": "HC",
  "Code_Prov_T": "01",
  "Name_Prov_E": "Banteay Meanchey",
  "Name_Prov_K": "បន្ទាយមានជ័យ",
  "Code_OD_T": "0102",
  "Name_OD_E": "Poipet",
  "Name_OD_K": "ប៉ោយប៉ែត",
  "Code_Facility_T": "010202",
  "Name_Facility_E": "Poipet I",
  "Name_Facility_K": "ប៉ោយប៉ែត១",
  "message": "ok"
}

Place

POST /api-qa/v1/Place/all

Get place

Response as json:

{
  "province": [
    {
        "Code_Prov_T": "01",
        "Name_Prov_E": "Banteay Meanchey",
        "Name_Prov_K": "បន្ទាយមានជ័យ"
    },
    {
        "Code_Prov_T": "02",
        "Name_Prov_E": "Battambang",
        "Name_Prov_K": "បាត់ដំបង"
    }
  ],
  "od": [
    {
        "Code_Prov_T": "01",
        "Code_OD_T": "0102",
        "Name_OD_E": "Poipet",
        "Name_OD_K": "ប៉ោយប៉ែត"
    },
    {
        "Code_Prov_T": "01",
        "Code_OD_T": "0103",
        "Name_OD_E": "Preah Net Preah",
        "Name_OD_K": "ព្រះនេត្រព្រះ"
    }
  ],
  "hc": [
    {
        "Code_OD_T": "0102",
        "Code_Facility_T": "010202",
        "Name_Facility_E": "Poipet I",
        "Name_Facility_K": "ប៉ោយប៉ែត១"
    },
    {
        "Code_OD_T": "0102",
        "Code_Facility_T": "010203",
        "Name_Facility_E": "Ou Russei",
        "Name_Facility_K": "អូរឫស្សី"
    }
  ],
  "village": [
    {
        "Code_Facility_T": "010313",
        "Code_Vill_T": "0103010100",
        "Name_Vill_E": "Rongvean",
        "Name_Vill_K": "រង្វាន"
    },
    {
        "Code_Facility_T": "010313",
        "Code_Vill_T": "0103011000",
        "Name_Vill_E": "Samraong",
        "Name_Vill_K": "សំរោង"
    }
  ]
}

VMW’s question

List of VMW’s question

POST /api-qa/v1/VMW/list

Get list of questions of VMW

Parse as json:

{
  "Code_Prov_T": "15",
  "Code_OD_T": "1503",
  "Code_Facility_T": "150301",
  "Code_VIll_T": ""
}

Response as json:

[
  {
      "Rec_ID": 387,
      "Code_Prov_T": "15",
      "Name_Prov_E": "Pursat",
      "Name_Prov_K": "ពោធិ៍សាត់",
      "Code_OD_T": "1503",
      "Name_OD_E": "Kravanh",
      "Name_OD_K": "ក្រវាញ",
      "Code_Facility_T": "150301",
      "Name_Facility_E": "Phnom Kravanh",
      "Name_Facility_K": "ភ្នំក្រវាញ",
      "Code_Vill_T": "1504020400",
      "Name_Vill_E": "Sbov Rik",
      "Name_Vill_K": "ស្បូវរីក",
      "VMWType": "VMW",
      "VMWName": "ជុំ នាង",
      "VisitDate": "2021-08-09",
      "VisitorName": "ក្រូច សុខុម",
      "Position": "បុគ្គលឹក់",
      "WorkPlace": "HC",
      "TPR": 6,
      "TotalScore": 99.06,
      "PreviousScore": null,
      "NextVisit": "៩០ថ្ងៃបន្ទាប់",
      "Priority": 8,
      "LowestSectionScore": null,
      "Section2": 34.25,
      "Section2Priority": 8,
      "Section3": 34.8,
      "Section3Priority": 8,
      "Section4": 15,
      "Section4Priority": 8,
      "Section5": 5,
      "Section5Priority": 8,
      "Section6": 5.01,
      "Section6Priority": 8,
      "Section7": 5,
      "Section7Priority": 8
  },
  {
      "Rec_ID": null,
      "Code_Prov_T": "15",
      "Name_Prov_E": "Pursat",
      "Name_Prov_K": "ពោធិ៍សាត់",
      "Code_OD_T": "1503",
      "Name_OD_E": "Kravanh",
      "Name_OD_K": "ក្រវាញ",
      "Code_Facility_T": "150301",
      "Name_Facility_E": "Phnom Kravanh",
      "Name_Facility_K": "ភ្នំក្រវាញ",
      "Code_Vill_T": "1504020501",
      "Name_Vill_E": "Meart",
      "Name_Vill_K": "មៀត",
      "VMWType": "VMW",
      "VMWName": null,
      "VisitDate": null,
      "VisitorName": null,
      "Position": null,
      "WorkPlace": null,
      "TPR": null,
      "TotalScore": null,
      "PreviousScore": null,
      "NextVisit": "Never access",
      "Priority": 5,
      "LowestSectionScore": null,
      "Section2": null,
      "Section2Priority": 5,
      "Section3": null,
      "Section3Priority": 5,
      "Section4": null,
      "Section4Priority": 5,
      "Section5": null,
      "Section5Priority": 5,
      "Section6": null,
      "Section6Priority": 5,
      "Section7": null,
      "Section7Priority": 5
  }
]

Detail of question

POST /api-qa/v1/VMW/detail

Get detail info of question.

Parse as json:

{
  "Rec_ID": 387
}

Response as json:

{
  "Rec_ID": 387,
  "Code_Vill_T": "1504020400",
  "VMWName": "ជុំ នាង",
  "VisitDate": "2021-08-09",
  "VisitorName": "ក្រូច សុខុម",
  "Position": "បុគ្គលឹក់",
  "WorkPlace": "HC",
  "TotalScore": 99.06,
  "TPR": 6,
  "Summary": {
      "Current": {
          "Section2": 34.25,
          "Section3": 34.8,
          "Section4": 15,
          "Section5": 5,
          "Section6": 5.01,
          "Section7": 5
      },
      "Previous": {
          "Section2": 0,
          "Section3": 0,
          "Section4": 0,
          "Section5": 0,
          "Section6": 0,
          "Section7": 0
      }
  },
  "Detail": [
      {
          "Question": "0.1",
          "Answer": "≤ 6 Months",
          "Score": 0
      },
      {
          "Question": "0.2",
          "Answer": "Male",
          "Score": 0
      },
      {
          "Question": "1",
          "Answer": "",
          "Score": 1
      },
      {
          "Question": "1.1",
          "Answer": "Yes",
          "Score": 0.25
      },
      {
          "Question": "1.2",
          "Answer": "Yes",
          "Score": 0.25
      },
      {
          "Question": "1.3",
          "Answer": "Yes",
          "Score": 0.25
      },
      {
          "Question": "1.4",
          "Answer": "Yes",
          "Score": 0.25
      },
      {
          "Question": "2",
          "Answer": "Yes",
          "Score": 2
      },
      {
          "Question": "3",
          "Answer": "",
          "Score": 3
      },
      {
          "Question": "3.1",
          "Answer": "Yes",
          "Score": 0.5
      },
      {
          "Question": "3.2",
          "Answer": "Yes",
          "Score": 1.25
      },
      {
          "Question": "3.3",
          "Answer": "Yes",
          "Score": 1.25
      },
      {
          "Question": "4",
          "Answer": "Loss of consciousness/coma,Little urine,Convulsion",
          "Score": 3
      },
      {
          "Question": "5",
          "Answer": "Fever,Headache,Chills",
          "Score": 3
      },
      {
          "Question": "6",
          "Answer": "",
          "Score": 6
      },
      {
          "Question": "6.1",
          "Answer": "Yes",
          "Score": 1
      },
      {
          "Question": "6.2",
          "Answer": "Yes",
          "Score": 1
      },
      {
          "Question": "6.3",
          "Answer": "Yes",
          "Score": 1
      },
      {
          "Question": "6.4",
          "Answer": "Yes",
          "Score": 1
      },
      {
          "Question": "6.5",
          "Answer": "Yes",
          "Score": 1
      },
      {
          "Question": "6.6",
          "Answer": "Yes",
          "Score": 1
      },
      {
          "Question": "7",
          "Answer": "Health Center,Referral Hospital",
          "Score": 3
      },
      {
          "Question": "8",
          "Answer": "Conduct blood test (RDT)",
          "Score": 1
      },
      {
          "Question": "9",
          "Answer": "",
          "Score": 12.25
      },
      {
          "Question": "9.1",
          "Answer": "Yes",
          "Score": 0.5
      },
      {
          "Question": "9.2",
          "Answer": "Yes",
          "Score": 1.25
      },
      {
          "Question": "9.3",
          "Answer": "Yes",
          "Score": 0.5
      },
      {
          "Question": "9.4",
          "Answer": "Yes",
          "Score": 0.5
      },
      {
          "Question": "9.5",
          "Answer": "Yes",
          "Score": 0.5
      },
      {
          "Question": "9.6",
          "Answer": "Yes",
          "Score": 1.25
      },
      {
          "Question": "9.7",
          "Answer": "Yes",
          "Score": 1.25
      },
      {
          "Question": "9.8",
          "Answer": "Yes",
          "Score": 1
      },
      {
          "Question": "9.9",
          "Answer": "Yes",
          "Score": 1.25
      },
      {
          "Question": "9.10",
          "Answer": "Yes",
          "Score": 1.25
      },
      {
          "Question": "9.11",
          "Answer": "Yes",
          "Score": 1.25
      },
      {
          "Question": "9.12",
          "Answer": "Yes",
          "Score": 1
      },
      {
          "Question": "9.13",
          "Answer": "Yes",
          "Score": 0.75
      },
      {
          "Question": "10",
          "Answer": "ACT or ACT+PQ",
          "Score": 3.5
      },
      {
          "Question": "11",
          "Answer": "Weight",
          "Score": 3.5
      },
      {
          "Question": "12",
          "Answer": "",
          "Score": 19.8
      },
      {
          "Question": "12.1",
          "Answer": "Yes",
          "Score": 3.3
      },
      {
          "Question": "12.2",
          "Answer": "Yes",
          "Score": 3.3
      },
      {
          "Question": "12.3",
          "Answer": "Yes",
          "Score": 3.3
      },
      {
          "Question": "12.4",
          "Answer": "Yes",
          "Score": 3.3
      },
      {
          "Question": "12.5",
          "Answer": "Yes",
          "Score": 3.3
      },
      {
          "Question": "12.6",
          "Answer": "Yes",
          "Score": 3.3
      },
      {
          "Question": "13",
          "Answer": "",
          "Score": 2
      },
      {
          "Question": "13.1",
          "Answer": "Yes",
          "Score": 1
      },
      {
          "Question": "13.2",
          "Answer": "Yes",
          "Score": 1
      },
      {
          "Question": "14",
          "Answer": "Yes",
          "Score": 3
      },
      {
          "Question": "15",
          "Answer": "",
          "Score": 3
      },
      {
          "Question": "15.1",
          "Answer": "Yes",
          "Score": 1
      },
      {
          "Question": "15.2",
          "Answer": "Yes",
          "Score": 1
      },
      {
          "Question": "15.3",
          "Answer": "Yes",
          "Score": 1
      },
      {
          "Question": "16",
          "Answer": "",
          "Score": 3
      },
      {
          "Question": "16.1",
          "Answer": "Yes",
          "Score": 1
      },
      {
          "Question": "16.2",
          "Answer": "Yes",
          "Score": 1
      },
      {
          "Question": "16.3",
          "Answer": "Yes",
          "Score": 1
      },
      {
          "Question": "17",
          "Answer": "",
          "Score": 6
      },
      {
          "Question": "17.1",
          "Answer": "Yes",
          "Score": 1.2
      },
      {
          "Question": "17.2",
          "Answer": "Yes",
          "Score": 1.2
      },
      {
          "Question": "17.3",
          "Answer": "Yes",
          "Score": 1.2
      },
      {
          "Question": "17.4",
          "Answer": "Yes",
          "Score": 1.2
      },
      {
          "Question": "17.5",
          "Answer": "Yes",
          "Score": 1.2
      },
      {
          "Question": "18",
          "Answer": "",
          "Score": 3
      },
      {
          "Question": "18.1",
          "Answer": "Yes",
          "Score": 1
      },
      {
          "Question": "18.2",
          "Answer": "Yes",
          "Score": 1
      },
      {
          "Question": "18.3",
          "Answer": "Yes",
          "Score": 1
      },
      {
          "Question": "19",
          "Answer": "",
          "Score": 3
      },
      {
          "Question": "19.1",
          "Answer": "Yes",
          "Score": 1
      },
      {
          "Question": "19.2",
          "Answer": "Yes",
          "Score": 1
      },
      {
          "Question": "19.3",
          "Answer": "Yes",
          "Score": 1
      },
      {
          "Question": "20",
          "Answer": "",
          "Score": 2.4799998
      },
      {
          "Question": "20.1",
          "Answer": "Yes",
          "Score": 0.31
      },
      {
          "Question": "20.2",
          "Answer": "Yes",
          "Score": 0.31
      },
      {
          "Question": "20.3",
          "Answer": "Yes",
          "Score": 0.31
      },
      {
          "Question": "20.4",
          "Answer": "Yes",
          "Score": 0.31
      },
      {
          "Question": "20.5",
          "Answer": "Yes",
          "Score": 0.31
      },
      {
          "Question": "20.6",
          "Answer": "Yes",
          "Score": 0.31
      },
      {
          "Question": "20.7",
          "Answer": "Yes",
          "Score": 0
      },
      {
          "Question": "20.8",
          "Answer": "Yes",
          "Score": 0.31
      },
      {
          "Question": "20.9",
          "Answer": "Yes",
          "Score": 0.31
      },
      {
          "Question": "21",
          "Answer": "",
          "Score": 2.52
      },
      {
          "Question": "21.1",
          "Answer": "18",
          "Score": 0
      },
      {
          "Question": "21.2",
          "Answer": "No",
          "Score": 0.42
      },
      {
          "Question": "21.3",
          "Answer": "No",
          "Score": 0.42
      },
      {
          "Question": "21.4",
          "Answer": "Yes",
          "Score": 0.42
      },
      {
          "Question": "21.5",
          "Answer": "50",
          "Score": 0
      },
      {
          "Question": "21.6",
          "Answer": "No",
          "Score": 0.42
      },
      {
          "Question": "21.7",
          "Answer": "No",
          "Score": 0.42
      },
      {
          "Question": "21.8",
          "Answer": "Yes",
          "Score": 0.42
      },
      {
          "Question": "22",
          "Answer": "",
          "Score": 5.0099998
      },
      {
          "Question": "22.1",
          "Answer": "Yes",
          "Score": 1.67
      },
      {
          "Question": "22.2",
          "Answer": "Yes",
          "Score": 1.67
      },
      {
          "Question": "22.3",
          "Answer": "Yes",
          "Score": 1.67
      },
      {
          "Question": "23",
          "Answer": "Yes",
          "Score": 2
      },
      {
          "Question": "24",
          "Answer": "Sleep under a bednet every night,Wear long sleeved clothes especially at night and in the forest,Use mosquito repellent on exposed skin",
          "Score": 3
      }
  ]
}

Insert/Update Question

POST /api-qa/v1/VMW/update

Insert/Update question.

Parse as json:

{
  "data": {
      "Code_Vill_T": "0105090400",
      "Detail": [
          {
              "Answer": "13 Months - 24 Months",
              "Question": "0.1",
              "Score": 0
          },
          {
              "Answer": "Female",
              "Question": "0.2",
              "Score": 0
          },
          {
              "Answer": "",
              "Question": "1",
              "Score": 1
          },
          {
              "Answer": "Yes",
              "Question": "1.1",
              "Score": 0.25
          },
          {
              "Answer": "Yes",
              "Question": "1.2",
              "Score": 0.25
          },
          {
              "Answer": "Yes",
              "Question": "1.3",
              "Score": 0.25
          },
          {
              "Answer": "Yes",
              "Question": "1.4",
              "Score": 0.25
          },
          {
              "Answer": "Yes",
              "Question": "2",
              "Score": 2
          },
          {
              "Answer": "",
              "Question": "3",
              "Score": 3
          },
          {
              "Answer": "Yes",
              "Question": "3.1",
              "Score": 0.5
          },
          {
              "Answer": "Yes",
              "Question": "3.2",
              "Score": 1.25
          },
          {
              "Answer": "Yes",
              "Question": "3.3",
              "Score": 1.25
          },
          {
              "Answer": "Loss of consciousness\/coma,Little urine,Jaundice or very pale",
              "Question": "4",
              "Score": 3
          },
          {
              "Answer": "Fever,Headache,Chills",
              "Question": "5",
              "Score": 3
          },
          {
              "Answer": "",
              "Question": "6",
              "Score": 6
          },
          {
              "Answer": "Yes",
              "Question": "6.1",
              "Score": 1
          },
          {
              "Answer": "Yes",
              "Question": "6.2",
              "Score": 1
          },
          {
              "Answer": "Yes",
              "Question": "6.3",
              "Score": 1
          },
          {
              "Answer": "Yes",
              "Question": "6.4",
              "Score": 1
          },
          {
              "Answer": "Yes",
              "Question": "6.5",
              "Score": 1
          },
          {
              "Answer": "Yes",
              "Question": "6.6",
              "Score": 1
          },
          {
              "Answer": "Health Center",
              "Question": "7",
              "Score": 3
          },
          {
              "Answer": "Conduct blood test (RDT)",
              "Question": "8",
              "Score": 1
          },
          {
              "Answer": "",
              "Question": "9",
              "Score": 12.25
          },
          {
              "Answer": "Yes",
              "Question": "9.1",
              "Score": 0.5
          },
          {
              "Answer": "Yes",
              "Question": "9.2",
              "Score": 1.25
          },
          {
              "Answer": "Yes",
              "Question": "9.3",
              "Score": 0.5
          },
          {
              "Answer": "Yes",
              "Question": "9.4",
              "Score": 0.5
          },
          {
              "Answer": "Yes",
              "Question": "9.5",
              "Score": 0.5
          },
          {
              "Answer": "Yes",
              "Question": "9.6",
              "Score": 1.25
          },
          {
              "Answer": "Yes",
              "Question": "9.7",
              "Score": 1.25
          },
          {
              "Answer": "Yes",
              "Question": "9.8",
              "Score": 1
          },
          {
              "Answer": "Yes",
              "Question": "9.9",
              "Score": 1.25
          },
          {
              "Answer": "Yes",
              "Question": "9.10",
              "Score": 1.25
          },
          {
              "Answer": "Yes",
              "Question": "9.11",
              "Score": 1.25
          },
          {
              "Answer": "Yes",
              "Question": "9.12",
              "Score": 1
          },
          {
              "Answer": "Yes",
              "Question": "9.13",
              "Score": 0.75
          },
          {
              "Answer": "ACT or ACT+PQ",
              "Question": "10",
              "Score": 3.5
          },
          {
              "Answer": "Weight,Age",
              "Question": "11",
              "Score": 3.5
          },
          {
              "Answer": "",
              "Question": "12",
              "Score": 16.5
          },
          {
              "Answer": "Yes",
              "Question": "12.1",
              "Score": 3.3
          },
          {
              "Answer": "Yes",
              "Question": "12.2",
              "Score": 3.3
          },
          {
              "Answer": "Yes",
              "Question": "12.3",
              "Score": 3.3
          },
          {
              "Answer": "Yes",
              "Question": "12.4",
              "Score": 3.3
          },
          {
              "Answer": "No",
              "Question": "12.5",
              "Score": 0
          },
          {
              "Answer": "Yes",
              "Question": "12.6",
              "Score": 3.3
          },
          {
              "Answer": "",
              "Question": "13",
              "Score": 2
          },
          {
              "Answer": "Yes",
              "Question": "13.1",
              "Score": 1
          },
          {
              "Answer": "Yes",
              "Question": "13.2",
              "Score": 1
          },
          {
              "Answer": "Yes",
              "Question": "14",
              "Score": 3
          },
          {
              "Answer": "",
              "Question": "15",
              "Score": 3
          },
          {
              "Answer": "Yes",
              "Question": "15.1",
              "Score": 1
          },
          {
              "Answer": "Yes",
              "Question": "15.2",
              "Score": 1
          },
          {
              "Answer": "Yes",
              "Question": "15.3",
              "Score": 1
          },
          {
              "Answer": "",
              "Question": "16",
              "Score": 3
          },
          {
              "Answer": "Yes",
              "Question": "16.1",
              "Score": 1
          },
          {
              "Answer": "Yes",
              "Question": "16.2",
              "Score": 1
          },
          {
              "Answer": "Yes",
              "Question": "16.3",
              "Score": 1
          },
          {
              "Answer": "",
              "Question": "17",
              "Score": 6
          },
          {
              "Answer": "Yes",
              "Question": "17.1",
              "Score": 1.2
          },
          {
              "Answer": "Yes",
              "Question": "17.2",
              "Score": 1.2
          },
          {
              "Answer": "Yes",
              "Question": "17.3",
              "Score": 1.2
          },
          {
              "Answer": "Yes",
              "Question": "17.4",
              "Score": 1.2
          },
          {
              "Answer": "Yes",
              "Question": "17.5",
              "Score": 1.2
          },
          {
              "Answer": "",
              "Question": "18",
              "Score": 3
          },
          {
              "Answer": "Yes",
              "Question": "18.1",
              "Score": 1
          },
          {
              "Answer": "Yes",
              "Question": "18.2",
              "Score": 1
          },
          {
              "Answer": "Yes",
              "Question": "18.3",
              "Score": 1
          },
          {
              "Answer": "",
              "Question": "19",
              "Score": 0
          },
          {
              "Answer": "No",
              "Question": "19.1",
              "Score": 0
          },
          {
              "Answer": "",
              "Question": "19.2",
              "Score": 0
          },
          {
              "Answer": "",
              "Question": "19.3",
              "Score": 0
          },
          {
              "Answer": "",
              "Question": "20",
              "Score": 2.1699998
          },
          {
              "Answer": "Yes",
              "Question": "20.1",
              "Score": 0.31
          },
          {
              "Answer": "Yes",
              "Question": "20.2",
              "Score": 0.31
          },
          {
              "Answer": "Yes",
              "Question": "20.3",
              "Score": 0.31
          },
          {
              "Answer": "Yes",
              "Question": "20.4",
              "Score": 0.31
          },
          {
              "Answer": "Yes",
              "Question": "20.5",
              "Score": 0.31
          },
          {
              "Answer": "Yes",
              "Question": "20.6",
              "Score": 0.31
          },
          {
              "Answer": "No",
              "Question": "20.7",
              "Score": 0
          },
          {
              "Answer": "No",
              "Question": "20.8",
              "Score": 0
          },
          {
              "Answer": "Yes",
              "Question": "20.9",
              "Score": 0.31
          },
          {
              "Answer": "",
              "Question": "21",
              "Score": 2.1
          },
          {
              "Answer": "24",
              "Question": "21.1",
              "Score": 0
          },
          {
              "Answer": "No",
              "Question": "21.2",
              "Score": 0.42
          },
          {
              "Answer": "No",
              "Question": "21.3",
              "Score": 0.42
          },
          {
              "Answer": "Yes",
              "Question": "21.4",
              "Score": 0.42
          },
          {
              "Answer": "32",
              "Question": "21.5",
              "Score": 0
          },
          {
              "Answer": "Yes",
              "Question": "21.6",
              "Score": 0
          },
          {
              "Answer": "No",
              "Question": "21.7",
              "Score": 0.42
          },
          {
              "Answer": "Yes",
              "Question": "21.8",
              "Score": 0.42
          },
          {
              "Answer": "",
              "Question": "22",
              "Score": 3.34
          },
          {
              "Answer": "No",
              "Question": "22.1",
              "Score": 0
          },
          {
              "Answer": "Yes",
              "Question": "22.2",
              "Score": 1.67
          },
          {
              "Answer": "Yes",
              "Question": "22.3",
              "Score": 1.67
          },
          {
              "Answer": "Yes",
              "Question": "23",
              "Score": 2
          },
          {
              "Answer": "Sleep under a bednet every night,Plant holy basil around your home,Clear excess vegetation from around your home",
              "Question": "24",
              "Score": 3
          }
      ],
      "Position": "ប្រធានកម្មវិធីគ្រុនចាញ់",
      "Rec_ID": 177,
      "Summary": {
          "Section2": 34.25,
          "Section3": 31.5,
          "Section4": 12,
          "Section5": 4.2699995,
          "Section6": 3.34,
          "Section7": 5
      },
      "TotalScore": 90.35999,
      "VMWName": "        អេង ផល្លា",
      "VisitDate": "2021-06-11",
      "VisitorName": " ម៉ុក ចន័្ទសាវ៉ាត",
      "WorkPlace": "OD"
  }
}

Note

if Rec_ID is empty/null it will insert new.

if Rec_ID is not empty/null it will update.

Delete Question

POST /api-qa/v1/VMW/delete

Delete question.

Parse as json:

{
  "Rec_ID": 387
}

Report

POST /api-qa/v1/VMW/report

Show report

Parse as json:

{
  "Code_Prov_T": "15",
  "Code_OD_T": "1503",
  "Code_Facility_T": "150301",
  "Code_VIll_T": "",
  "Year": 2021,
  "Month": ""
}

Response as json:

[
  {
    "Rec_ID": 387,
    "Code_Prov_T": "15",
    "Name_Prov_E": "Pursat",
    "Name_Prov_K": "ពោធិ៍សាត់",
    "Code_OD_T": "1503",
    "Name_OD_E": "Kravanh",
    "Name_OD_K": "ក្រវាញ",
    "Code_Facility_T": "150301",
    "Name_Facility_E": "Phnom Kravanh",
    "Name_Facility_K": "ភ្នំក្រវាញ",
    "Code_Vill_T": "1504020400",
    "Name_Vill_E": "Sbov Rik",
    "Name_Vill_K": "ស្បូវរីក",
    "VMWType": "VMW",
    "VMWName": "ជុំ នាង",
    "VisitDate": "2021-08-09",
    "VisitorName": "ក្រូច សុខុម",
    "Position": "បុគ្គលឹក់",
    "WorkPlace": "HC",
    "TPR": 6,
    "TotalScore": 99.06,
    "PreviousScore": null,
    "NextVisit": "៩០ថ្ងៃបន្ទាប់",
    "Priority": 8,
    "LowestSectionScore": null,
    "Section2": 34.25,
    "Section2Priority": 8,
    "Section3": 34.8,
    "Section3Priority": 8,
    "Section4": 15,
    "Section4Priority": 8,
    "Section5": 5,
    "Section5Priority": 8,
    "Section6": 5.01,
    "Section6Priority": 8,
    "Section7": 5,
    "Section7Priority": 8
},
{
    "Rec_ID": null,
    "Code_Prov_T": "15",
    "Name_Prov_E": "Pursat",
    "Name_Prov_K": "ពោធិ៍សាត់",
    "Code_OD_T": "1503",
    "Name_OD_E": "Kravanh",
    "Name_OD_K": "ក្រវាញ",
    "Code_Facility_T": "150301",
    "Name_Facility_E": "Phnom Kravanh",
    "Name_Facility_K": "ភ្នំក្រវាញ",
    "Code_Vill_T": "1504020501",
    "Name_Vill_E": "Meart",
    "Name_Vill_K": "មៀត",
    "VMWType": "VMW",
    "VMWName": null,
    "VisitDate": null,
    "VisitorName": null,
    "Position": null,
    "WorkPlace": null,
    "TPR": null,
    "TotalScore": null,
    "PreviousScore": null,
    "NextVisit": "Never access",
    "Priority": 5,
    "LowestSectionScore": null,
    "Section2": null,
    "Section2Priority": 5,
    "Section3": null,
    "Section3Priority": 5,
    "Section4": null,
    "Section4Priority": 5,
    "Section5": null,
    "Section5Priority": 5,
    "Section6": null,
    "Section6Priority": 5,
    "Section7": null,
    "Section7Priority": 5
  }
]

API v2 of Last mile

House hold

House hold List

GET /api-last-smile/v1/fociHouseHold/list

get list of house hold

Query Parameters
  • village_code (int) – code of village

Respone as json:

{
  "code": 200,
  "message": "success",
  "data": [
    {
      "Rec_ID": 119,
      "Month": "7",
      "Year": "2021",
      "Code_Vill_T": "1504060300",
      "HouseNumber": 1,
      "HouseHolder": "ធី",
      "Phone": "010898989",
      "TotalMember": 2,
      "LLIN": 3,
      "LLINLack": -2,
      "LLIHN": 1,
      "LLIHNLack": 0,
      "TotalForestEntry": 1,
      "Lat": 11.5923671,
      "Long": 104.8897794,
      "HasMemberAtHome": null,
      "InitUser": null,
      "IsMobileEntry": null,
      "TDA1": null,
      "TDA2": null,
      "IPT": [],
      "AFS": []
    }
  ]
}
Object
  • HasMemberAtHome (string) – Yes/No.

  • TDA1 (string) – Date of TDA 1.

  • TDA2 (string) – Date of TDA 2.

  • IPT (array) – Date of IPT (Array).

  • AFS (array) – Date of AFS (Array).

House hold detail

GET /api-last-smile/v1/fociHouseHold/detail

get detail of house hold

Query Parameters
  • house_hold_id (int) – id (primary key) house hold.

Respone as json:

{
  "code": 200,
  "message": "success",
  "data": {
      "house": {
          "Rec_ID": 21,
          "Month": "4",
          "Year": "2021",
          "Code_Vill_T": "0504033301",
          "HouseNumber": 1,
          "HouseHolder": "Dary",
          "Phone": "069859540",
          "TotalMember": 2,
          "LLIN": 2,
          "LLINLack": -1,
          "LLIHN": 1,
          "LLIHNLack": 0,
          "TotalForestEntry": 1,
          "Lat": 11.8050141,
          "Long": 104.1685751,
          "HasMemberAtHome": null,
          "InitUser": null,
          "IsMobileEntry": null,
          "TDA1": null,
          "TDA2": null,
          "IPT": []
      },
      "members": [
          {
              "Rec_ID": 40,
              "Name": "Dara",
              "Age": 22,
              "Sex": "M",
              "ForestEntry": "Yes",
              "TDA": "Yes",
              "IPT": "Yes",
              "HouseHoldID": 21
          },
          {
              "Rec_ID": 41,
              "Name": "Daro",
              "Age": 43,
              "Sex": "F",
              "ForestEntry": "No",
              "TDA": null,
              "IPT": null,
              "HouseHoldID": 21
          }
      ]
  }
}

Insert/Update house hold

POST /api-last-smile/v1/fociHouseHold/update

Insert/Update house hold

Parse as json:

{
  "house":{
    "Rec_ID": null,
    "Code_Vill_T": "0109050901",
    "HouseNumber": "1",
    "HouseHolder": "test",
    "Phone": "013346789",
    "TotalMember": 8,
    "LLIN": 1,
    "LLINLack": -1,
    "LLIHN": 1,
    "LLIHNLack": -2,
    "TotalForestEntry": 0,
    "Month": "01",
    "Year": "2021",
    "HasMemberAtHome": "Yes",
    "Lat": 122.255,
    "Long": 234.555
  },
  "member": [
    {
      "Rec_ID": null,
      "Name": "ta",
      "Age": "34",
      "Sex": "M",
      "ForestEntry": "No",
      "TDA": "",
      "IPT": "",
      "HouseHoldID": 1
    },
    {
      "Rec_ID": null,
      "Name": "ty",
      "Age": "40",
      "Sex": "F",
      "ForestEntry": "Yes",
      "TDA": "",
      "IPT": "",
      "HouseHoldID": 1
    },
    {
      "Rec_ID": null,
      "Name": "tt",
      "Age": 45,
      "Sex": "M",
      "ForestEntry": "Yes",
      "TDA": "",
      "IPT": "",
      "HouseHoldID": 1
    }
  ]
}
Object
  • HasMemberAtHome (string) – Yes/No.

  • TDA (string) – Yes/No.

  • IPT (string) – Yes/No.

  • ForestEntry (string) – Yes/No.

Note

If Rec_ID is null then it will insert new.

if Rec_ID is not null then it will update.

If member of house hold with Age between 15 and 49 and Sex = M then TDA = Yes

If member of house hold with Age between 15 and 49 and ForestEntry = Yes then IPT = Yes

TDA

TDA form

GET /api-last-smile/v1/TDA/form

Get form of TDA

Query Parameters
  • house_hold_id (int) – id (primary key) house hold.

  • type (int) – 1/2.

Respone as json:

{
  "code": 200,
  "message": "success",
  "data": {
    "TDA": [
        {
          "TDADate": "2021-07-19",
          "HouseHoldID": 216,
          "HouseMemberID": 792,
          "Name": "ភៀង សុង",
          "Age": 35,
          "Sex": "M",
          "DoNotUse": "No",
          "Reject": "No",
          "Absent": "Yes",
          "SideEffect": null,
          "RejectReason": null,
          "Type": 1,
          "Date": null,
          "IsTDA": 1
        },
        {
          "TDADate": "2021-07-19",
          "HouseHoldID": 216,
          "HouseMemberID": 794,
          "Name": "សុង វិច",
          "Age": 15,
          "Sex": "M",
          "DoNotUse": "No",
          "Reject": "No",
          "Absent": "Yes",
          "SideEffect": null,
          "RejectReason": null,
          "Type": 1,
          "Date": null,
          "IsTDA": 1
        }
    ]
  }
}
Object
  • DoNotUse (string) – Yes/No.

  • Reject (string) – Yes/No.

  • Absent (string) – Yes/No.

Insert/Update TDA

POST /api-last-smile/v1/TDA/update

Insert/update TDA

Parse as json:

{
  "TDA" : [
    {
        "TDADate" : "2021-07-07",
        "DoNotUse": "Yes",
        "Reject": "",
        "Absent": "",
        "Type": "1",
        "Date": "2021-18-01",
        "SideEffect": "headache",
        "RejectReason": "lazy",
        "HouseHoldID": 216,
        "HouseMemberID": 794
    },
    {
        "TDADate" : "2021-07-07",
        "DoNotUse": "Yes",
        "Reject": "",
        "Absent": "",
        "Type": "1",
        "Date": "",
        "SideEffect": "headache",
        "RejectReason": "lazy",
        "HouseHoldID": 216,
        "HouseMemberID": 794
    }
  ]
}

Note

TDA1 and TDA2 must be 28 days apart.

Must complete TDA1/TDA2 before do IPT.

IPT and TDA1 must be 14 days apart.

IPT and TDA2 must be 28 days apart.

IPT

IPT form

GET /api-last-smile/v1/IPT/form

Get form of IPT

Query Parameters
  • house_hold_id (int) – id (primary key) house hold.

  • month (string) – 01,02,…,12.

  • year (string) – 2021,2022,…

Respone as json:

{
  "code": 200,
  "message": "success",
  "data": {
    "IPT": [
      {
          "HouseMemberID": 792,
          "Month": null,
          "Year": null,
          "Name": "ភៀង សុង",
          "Age": 35,
          "Sex": "M",
          "IPTDate": null,
          "DoNotUse": null,
          "Reject": null,
          "Date": null,
          "HouseHoldID": 216,
          "NotEnterForest": null,
          "RefuseReason": null,
          "Absent": null,
          "IsIPT": 1
      }
    ]
  }
}
Object
  • NotEnterForest (string) – Yes/No.

  • DoNotUse (string) – Yes/No.

  • Reject (string) – Yes/No.

  • Absent (string) – Yes/No.

Insert/Update IPT

POST /api-last-smile/v1/IPT/update

Insert/update IPT

Parse as json:

{
  "IPT": [
      {
          "HouseMemberID": 479,
          "Month": "08",
          "Year": 2021,
          "IPTDate": "2021-07-07",
          "DoNotUse": "",
          "Reject": "",
          "Date": "",
          "NotEnterForest": "",
          "Absent": "",
          "RefuseReason": "",
          "HouseHoldID": 82
      }
  ]
}

AFS

AFS form

GET /api-last-smile/v1/AFS/form

Get form of AFS

Query Parameters
  • house_hold_id (int) – id (primary key) house hold.

  • afs_date (string) – Date of AFS, YYYY-MM-DD, e.g: 2021-11-30.

Respone as json:

{
  "code": 200,
  "message": "success",
  "data": {
    "AFS": [
      {
          "HouseMemberID": 479,
          "Name": "Sophy",
          "Age": 36,
          "Sex": "F",
          "AFSDate": null,
          "W1": null,
          "W2": null,
          "W3": null,
          "W4": null,
          "W1Specie": null,
          "W2Specie": null,
          "W3Specie": null,
          "W4Specie": null,
          "HouseHoldID": 82
      },
      {
          "HouseMemberID": 480,
          "Name": "Bopha",
          "Age": 38,
          "Sex": "M",
          "AFSDate": null,
          "W1": null,
          "W2": null,
          "W3": null,
          "W4": null,
          "W1Specie": null,
          "W2Specie": null,
          "W3Specie": null,
          "W4Specie": null,
          "HouseHoldID": 82
      }
    ]
  }
}
Object
  • W1/W2/W3/W4 (string) – Yes/No/N/A.

  • W1Specie/W2Specie/W3Specie/W4Specie (string) – F/V/M/N.

Insert/Update AFS

POST /api-last-smile/v1/AFS/update

Insert/update AFS

Parse as json:

{
  "AFS": [
    {
        "HouseMemberID": 479,
        "AFSDate": "2021-07-07",
        "W1": "",
        "W2": "",
        "W3": "",
        "W4": "",
        "W1Specie": null,
        "W2Specie": null,
        "W3Specie": null,
        "W4Specie": null,
        "HouseHoldID": 82
    },
    {
        "HouseMemberID": 480,
        "AFSDate": "2021-07-07",
        "W1": "",
        "W2": "",
        "W3": "",
        "W4": "",
        "W1Specie": "Pv",
        "W2Specie": null,
        "W3Specie": null,
        "W4Specie": null,
        "HouseHoldID": 82
    }
  ]
}

API v3 of Last mile

House hold

Insert/Update

POST /api-last-smile/v1/fociHouseHold/update

Insert/Update house hold

Parse as json:

{
  "house":{
    "Rec_ID": null,
    "Code_Vill_T": "0109050901",
    "HouseNumber": "1",
    "HouseHolder": "test",
    "Phone": "013346789",
    "TotalMember": 8,
    "LLIN": 1,
    "LLINLack": -1,
    "LLIHN": 1,
    "LLIHNLack": -2,
    "TotalForestEntry": 0,
    "Month": "01",
    "Year": "2021",
    "HasMemberAtHome": "Yes",
    "Lat": 122.255,
    "Long": 234.555,
    "CompleteBy": "Vicheka Nar",
    "Position": "Village manager",
    "CompleteDate": "2022-07-07"
  },
  "member": [
    {
      "Rec_ID": null,
      "Name": "ta",
      "Age": "34",
      "Sex": "M",
      "ForestEntry": "No",
      "TDA": "",
      "IPT": "",
      "HouseHoldID": 1
    },
    {
      "Rec_ID": null,
      "Name": "ty",
      "Age": "40",
      "Sex": "F",
      "ForestEntry": "Yes",
      "TDA": "",
      "IPT": "",
      "HouseHoldID": 1
    },
    {
      "Rec_ID": null,
      "Name": "tt",
      "Age": 45,
      "Sex": "M",
      "ForestEntry": "Yes",
      "TDA": "",
      "IPT": "",
      "HouseHoldID": 1
    }
  ]
}
Object
  • HasMemberAtHome (string) – Yes/No.

  • TDA (string) – Yes/No.

  • IPT (string) – Yes/No.

  • ForestEntry (string) – Yes/No.

Note

If Rec_ID is null then it will insert new.

if Rec_ID is not null then it will update.

If member of house hold with Age between 15 and 49 and Sex = M then TDA = Yes

If member of house hold with Age between 15 and 49 and ForestEntry = Yes then IPT = Yes

TDA

TDA form

GET /api-last-smile/v3/TDA/form

Get form of TDA

Query Parameters
  • house_hold_id (int) – id (primary key) house hold.

  • type (int) – 1/2.

Respone as json:

{
    "code": 200,
    "message": "success",
    "data": {
        "TDA": [
            {
                "TDADate": null,
                "HouseHoldID": 216,
                "HouseMemberID": 792,
                "Name": "ភៀង សុង",
                "Age": 35,
                "Sex": "M",
                "DoNotUse": null,
                "SideEffect": null,
                "NotSick": null,
                "RejectOtherReason": null,
                "Absent": null,
                "Type": null,
                "Date": null,
                "IsTDA": 1
            },
            {
                "TDADate": "2021-07-07",
                "HouseHoldID": 216,
                "HouseMemberID": 794,
                "Name": "សុង វិច",
                "Age": 15,
                "Sex": "M",
                "DoNotUse": "No",
                "SideEffect": null,
                "NotSick": null,
                "RejectOtherReason": "Affraid",
                "Absent": "No",
                "Type": 1,
                "Date": "2021-18-01",
                "IsTDA": 1
            },
            {
                "TDADate": "2021-07-07",
                "HouseHoldID": 216,
                "HouseMemberID": 794,
                "Name": "សុង វិច",
                "Age": 15,
                "Sex": "M",
                "DoNotUse": "No",
                "SideEffect": "Yes",
                "NotSick": "Yes",
                "RejectOtherReason": "Fear",
                "Absent": "No",
                "Type": 1,
                "Date": "2021-18-01",
                "IsTDA": 1
            },
            {
                "TDADate": "2021-07-07",
                "HouseHoldID": 216,
                "HouseMemberID": 794,
                "Name": "សុង វិច",
                "Age": 15,
                "Sex": "M",
                "DoNotUse": "No",
                "SideEffect": "Yes",
                "NotSick": "",
                "RejectOtherReason": "Affraid",
                "Absent": "No",
                "Type": 1,
                "Date": "2021-18-01",
                "IsTDA": 1
            }
        ]
    }
}
Object
  • DoNotUse (string) – Yes/No.

  • SideEffect (string) – Yes/No.

  • NotSick (string) – Yes/No.

  • RejectOtherReason (string) – any string

  • Absent (string) – Yes/No.

Insert/Update TDA

POST /api-last-smile/v3/TDA/update

Insert/update TDA

Parse as json:

{
    "TDA" : [
        {
            "TDADate" : "2021-07-07",
            "DoNotUse": "No",
            "Absent": "No",
            "Type": "1",
            "Date": "2021-18-01",
            "SideEffect": "Yes",
            "NotSick": "Yes",
            "RejectOtherReason": "Fear",
            "HouseHoldID": 216,
            "HouseMemberID": 794
        },
        {
            "TDADate" : "2021-07-07",
            "DoNotUse": "No",
            "Absent": "No",
            "Type": "1",
            "Date": "2021-18-01",
            "SideEffect": "Yes",
            "NotSick": "",
            "RejectOtherReason": "Affraid",
            "HouseHoldID": 217,
            "HouseMemberID": 794
        }
    ]
}
Object
  • DoNotUse (string) – Yes/No.

  • SideEffect (string) – Yes/No.

  • NotSick (string) – Yes/No.

  • RejectOtherReason (string) – any string

  • Absent (string) – Yes/No.

Note

TDA1 and TDA2 must be 28 days apart.

Must complete TDA1/TDA2 before do IPT.

IPT and TDA1 must be 14 days apart.

IPT and TDA2 must be 28 days apart.

TDA summary

GET /api-last-smile/v3/TDA/summary

Get TDA summary

Query Parameters
  • house_hold_id (int) – id (primary key) house hold.

Response as json:

{
  "code": 200,
  "message": "success",
  "data": [
      {
          "TotalTDA": 0,
          "TDA1": 0,
          "SideEffectTDA1": 0,
          "NotSickTDA1": 0,
          "OtherTDA1": 0,
          "DoNotUseTDA1": 0,
          "AbsentTDA1": 0,
          "TDA2": 0,
          "SideEffectTDA2": 0,
          "NotSickTDA2": 0,
          "OtherTDA2": 0,
          "DoNotUseTDA2": 0,
          "AbsentTDA2": 0
      }
  ]
}

IPT

IPT form

GET /api-last-smile/v3/IPT/form

Get form of IPT

Query Parameters
  • house_hold_id (int) – id (primary key) house hold.

  • month (string) – 01,02,…,12.

  • year (string) – 2021,2022,…

Respone as json:

{
    "code": 200,
    "message": "success",
    "data": {
        "IPT": [
            {
                "HouseMemberID": 792,
                "Month": null,
                "Year": null,
                "Name": "ភៀង សុង",
                "Age": 35,
                "Sex": "M",
                "IPTDate": null,
                "DoNotUse": null,
                "Date": null,
                "HouseHoldID": 216,
                "NotEnterForest": null,
                "SideEffect": null,
                "NotSick": null,
                "RefuseOtherReason": null,
                "Absent": null
            },
            {
                "HouseMemberID": 794,
                "Month": null,
                "Year": null,
                "Name": "សុង វិច",
                "Age": 15,
                "Sex": "M",
                "IPTDate": null,
                "DoNotUse": null,
                "Date": null,
                "HouseHoldID": 216,
                "NotEnterForest": null,
                "SideEffect": null,
                "NotSick": null,
                "RefuseOtherReason": null,
                "Absent": null
            }
        ]
    }
}
Object
  • NotEnterForest (string) – Yes/No.

  • DoNotUse (string) – Yes/No.

  • SideEffect (string) – Yes/No.

  • NotSick (string) – Yes/No.

  • RefuseOtherReason (string) – any string

  • Absent (string) – Yes/No.

  • Date (date) – date when received IPTf

Insert/Update IPT

POST /api-last-smile/v3/IPT/update

Insert/update IPT

Parse as json:

{
    "IPT": [
        {
            "HouseMemberID": 479,
            "Month": "08",
            "Year": 2021,
            "IPTDate": "2021-07-07",
            "DoNotUse": "No",
            "SideEffect": "Yes",
            "NotSick": "Yes",
            "RefuseOtherReason": "Afraid",
            "Date": "",
            "NotEnterForest": "No",
            "Absent": "No",
            "HouseHoldID": 82
        },
        {
            "HouseMemberID": 478,
            "Month": "08",
            "Year": 2021,
            "IPTDate": "2021-07-07",
            "DoNotUse": "No",
            "SideEffect": "Yes",
            "NotSick": "",
            "RefuseOtherReason": "",
            "Date": "2021-07-07",
            "NotEnterForest": "No",
            "Absent": "No",
            "HouseHoldID": 82
        }
    ]
}
Object
  • NotEnterForest (string) – Yes/No.

  • DoNotUse (string) – Yes/No.

  • SideEffect (string) – Yes/No.

  • NotSick (string) – Yes/No.

  • RefuseOtherReason (string) – any string

  • Absent (string) – Yes/No.

  • Date (date) – date when received IPTf

AFS

AFS form

GET /api-last-smile/v3/AFS/form

Get form of AFS

Query Parameters
  • house_hold_id (int) – id (primary key) house hold.

  • afs_date (string) – Date of AFS, YYYY-MM-DD, e.g: 2021-11-30.

Respone as json:

{
  "code": 200,
  "message": "success",
  "data": {
    "AFS": [
      {
          "HouseMemberID": 479,
          "Name": "Sophy",
          "Age": 36,
          "Sex": "F",
          "AFSDate": null,
          "W1": null,
          "W2": null,
          "W3": null,
          "W4": null,
          "HouseHoldID": 82
      },
      {
          "HouseMemberID": 480,
          "Name": "Bopha",
          "Age": 38,
          "Sex": "M",
          "AFSDate": null,
          "W1": null,
          "W2": null,
          "W3": null,
          "W4": null,
          "HouseHoldID": 82
      }
    ]
  }
}
Object
  • W1/W2/W3/W4 (string) – Yes / No/ N/A.

Note

W1/W2/W3/W4 :

  • Yes – Tested

  • No – Not Test

  • N/A – Absent

Insert/Update AFS

POST /api-last-smile/v3/AFS/update

Insert/update AFS

Parse as json:

{
  "AFS": [
    {
        "HouseMemberID": 479,
        "AFSDate": "2021-07-07",
        "W1": "Yes",
        "W2": "No",
        "W3": "N/A",
        "W4": "",
        "HouseHoldID": 82
    },
    {
        "HouseMemberID": 480,
        "AFSDate": "2021-07-07",
        "W1": "",
        "W2": "",
        "W3": "",
        "W4": "",
        "HouseHoldID": 82
    }
  ]
}
Object
  • W1/W2/W3/W4 (string) – Yes / No/ N/A.

Note

W1/W2/W3/W4 :

  • Yes – Tested

  • No – Not Test

  • N/A – Absent

API v1 of Check list app

User Authentication

POST /api-checklist/v1/Users/auth

User login

Parse as json:

{
  "Username": "RattanaMIS",
  "Password": "123456"
}

Respone as json:

{
  "Role": "AU",
  "Code_Prov_T": "",
  "Code_OD_T": "",
  "Code_Facility_T": "",
  "message": "ok"
}

HC checklist

Get HC check list

POST /api-checklist/v1/hc/list

Get list of HC checklist

Parse as json:

{
  "Code_Prov_T":"01",
  "Code_OD_T":"",
  "Code_Facility_T":""
}

Respone as json:

[
  {
      "Rec_ID": 33,
      "Code_Facility_T": "010202",
      "Quarter": "2021 Q3",
      "VisitDate": "2021-10-13",
      "VisitorName": "Hem Vanna ",
      "VisitorSex": "M",
      "Part1Score": null,
      "Part2Score": null,
      "Part3Score": null,
      "Part4Score": null,
      "Part5Score": null,
      "Code_Prov_T": "01",
      "Code_OD_T": "0102"
  },
  {
      "Rec_ID": 58,
      "Code_Facility_T": "010303",
      "Quarter": "Q1 2021",
      "VisitDate": "2022-01-04",
      "VisitorName": "1",
      "VisitorSex": "F",
      "Part1Score": 18.5,
      "Part2Score": 19,
      "Part3Score": 20,
      "Part4Score": 1,
      "Part5Score": 4,
      "Code_Prov_T": "01",
      "Code_OD_T": "0103"
  },
  {
      "Rec_ID": 59,
      "Code_Facility_T": "010303",
      "Quarter": "Q1 2021",
      "VisitDate": "2022-01-04",
      "VisitorName": "1",
      "VisitorSex": "F",
      "Part1Score": 18.5,
      "Part2Score": 19,
      "Part3Score": 20,
      "Part4Score": 1,
      "Part5Score": 4,
      "Code_Prov_T": "01",
      "Code_OD_T": "0103"
  }
]

HC checklist detail

POST /api-checklist/v1/hc/detail

Get detail of HC checklist

Parse as json:

{
  "Rec_ID": 33
}

Respone as json:

{
    "Rec_ID": 33,
    "Code_Facility_T": "010202",
    "Quarter": "2021 Q3",
    "VisitDate": "2021-10-13",
    "VisitorName": "Hem Vanna ",
    "VisitorSex": "M",
    "Part1Score": null,
    "Part2Score": null,
    "Part3Score": null,
    "Part4Score": null,
    "Part5Score": null,
    "Code_Prov_T": "01",
    "Code_OD_T": "0102",
    "Detail": {
        "P1Q1": {
            "Answer": {
                "other": "",
                "tick": "Yes"
            },
            "Score": 0
        },
        "P1Q1_1": {
            "Answer": {
                "other": "",
                "tick": "Over 7 days"
            },
            "Score": 0
        },
        "P1Q1_2": {
            "Answer": {
                "other": "",
                "tick": "Yes"
            },
            "Score": 0
        },
        "P1Q2": {
            "Answer": {
                "other": "",
                "tick": "Yes"
            },
            "Score": 0
        },
        "P1Q3": {
            "Answer": {
                "other": "",
                "tick": "Referred"
            },
            "Score": 0
        },
        "P1Q4": {
            "Answer": {
                "other": "",
                "tick": "Yes"
            },
            "Score": 0
        },
        "P1Q5": {
            "Answer": {
                "other": "",
                "tick": "Yes"
            },
            "Score": 0
        },
        "P1Q6": {
            "Answer": {
                "other": "",
                "tick": [
                    "National guidelines",
                    "Surveillance book",
                    "Other"
                ]
            },
            "Score": 0
        },
        "P1Q7": {
            "Answer": {
                "other": "",
                "tick": "Yes"
            },
            "Score": 0
        },
        "P2Q1": {
            "Answer": {
                "other": "",
                "tick": "Everyday"
            },
            "Score": 0
        },
        "P2Q2": {
            "Answer": {
                "other": "",
                "tick": "Everyday"
            },
            "Score": 0
        },
        "P2Q3": {
            "Answer": {
                "other": "",
                "tick": "Under 24 hours"
            },
            "Score": 0
        },
        "P2Q4": {
            "Answer": {
                "other": "",
                "tick": "Correct"
            },
            "Score": 0
        },
        "P2Q5": {
            "Answer": {
                "other": "",
                "tick": "Correct"
            },
            "Score": 0
        },
        "P2Q6": {
            "Answer": {
                "other": "",
                "tick": "Correct"
            },
            "Score": 0
        },
        "P3Q1": {
            "Answer": {
                "mix": "2",
                "pf": "2",
                "positive": "2",
                "pv": "2",
                "test": "2"
            },
            "Score": 0
        },
        "P3Q2": {
            "Answer": {
                "mix": "2",
                "pf": "2",
                "positive": "2",
                "pv": "2",
                "test": ""
            },
            "Score": 0
        },
        "P3Q2_1": {
            "Answer": "thhh",
            "Score": 0
        },
        "P3Q3": {
            "Answer": {
                "mix": "2",
                "pf": "2",
                "positive": "2",
                "pv": "2",
                "test": ""
            },
            "Score": 0
        },
        "P3Q3_1": {
            "Answer": "vghh",
            "Score": 0
        },
        "P3Q3_2": {
            "Answer": {
                "other": "",
                "tick": "No Pf and Mix"
            },
            "Score": 0
        },
        "P3Q3_3": {
            "Answer": {
                "other": "",
                "tick": "No Pv"
            },
            "Score": 0
        },
        "P3Q3_4": {
            "Answer": {
                "other": "",
                "tick": "No Pf and Mix"
            },
            "Score": 0
        },
        "P3Q4": {
            "Answer": {
                "l1": "3",
                "lc": ""
            },
            "Score": 0
        },
        "P3Q5": {
            "Answer": "3",
            "Score": 0
        },
        "P4": {
            "Answer": {
                "list": [
                    {
                        "age": "88",
                        "duration": "556",
                        "medicine": "gg",
                        "pill": "555",
                        "score": 0,
                        "sex": "M",
                        "tick": "Correct",
                        "virus": "F"
                    },
                    {
                        "age": "88",
                        "duration": "556",
                        "medicine": "gg",
                        "pill": "555",
                        "score": 0,
                        "sex": "M",
                        "tick": "Correct",
                        "virus": "F"
                    },
                    {
                        "age": "88",
                        "duration": "556",
                        "medicine": "gg",
                        "pill": "555",
                        "score": 0,
                        "sex": "M",
                        "tick": "Correct",
                        "virus": "F"
                    },
                    {
                        "age": "88",
                        "duration": "556",
                        "medicine": "gg",
                        "pill": "555",
                        "score": 0,
                        "sex": "M",
                        "tick": "Correct",
                        "virus": "F"
                    },
                    {
                        "age": "88",
                        "duration": "556",
                        "medicine": "gg",
                        "pill": "555",
                        "score": 0,
                        "sex": "M",
                        "tick": "Correct",
                        "virus": "F"
                    },
                    {
                        "age": "88",
                        "duration": "556",
                        "medicine": "gg",
                        "pill": "555",
                        "score": 0,
                        "sex": "M",
                        "tick": "Correct",
                        "virus": "F"
                    },
                    {
                        "age": "88",
                        "duration": "556",
                        "medicine": "gg",
                        "pill": "555",
                        "score": 0,
                        "sex": "M",
                        "tick": "Correct",
                        "virus": "F"
                    },
                    {
                        "age": "88",
                        "duration": "556",
                        "medicine": "gg",
                        "pill": "555",
                        "score": 0,
                        "sex": "M",
                        "tick": "Correct",
                        "virus": "F"
                    },
                    {
                        "age": "88",
                        "duration": "556",
                        "medicine": "gg",
                        "pill": "555",
                        "score": 0,
                        "sex": "M",
                        "tick": "Correct",
                        "virus": "F"
                    }
                ],
                "qty": 9
            },
            "Score": 0
        },
        "P5Q1": {
            "Answer": {
                "other": "",
                "tick": "Not stockout"
            },
            "Score": 0
        },
        "P5Q2": {
            "Answer": {
                "other": "",
                "tick": "Stockout"
            },
            "Score": 0
        },
        "P5Q3": {
            "Answer": {
                "other": "",
                "tick": "Stockout"
            },
            "Score": 0
        },
        "P5Q4": {
            "Answer": {
                "other": "",
                "tick": "Not stockout"
            },
            "Score": 0
        },
        "P5Q5": {
            "Answer": {
                "other": "",
                "tick": "Not stockout"
            },
            "Score": 0
        },
        "P6Q1": {
            "Answer": {
                "date": "2021-10-10",
                "person": "jhhu",
                "problem": "yffyyg",
                "solution": "vhghy"
            },
            "Score": 0
        },
        "P6Q2": {
            "Answer": {
                "date": "2021-10-01",
                "person": "huhu",
                "problem": "hvyg",
                "solution": "hguh"
            },
            "Score": 0
        }
    }
}

HC checklist Insert/Update

POST /api-checklist/v1/hc/update

Insert/Update

Parse as json:

{
    "Code_Facility_T": "010202",
    "Code_OD_T": "0102",
    "Code_Prov_T": "01",
    "Detail": {
        "P1Q1": {
            "Answer": {
                "other": "",
                "tick": "Yes"
            },
            "Score": 2
        },
        "P1Q1_1": {
            "Answer": {
                "other": "",
                "tick": "Over 7 days"
            },
            "Score": 0
        },
        "P1Q1_2": {
            "Answer": {
                "other": "",
                "tick": "Yes"
            },
            "Score": 1
        },
        "P1Q2": {
            "Answer": {
                "other": "",
                "tick": "Yes"
            },
            "Score": 0
        },
        "P1Q3": {
            "Answer": {
                "other": "",
                "tick": "Referred"
            },
            "Score": 2
        },
        "P1Q4": {
            "Answer": {
                "other": "",
                "tick": "Yes"
            },
            "Score": 4
        },
        "P1Q5": {
            "Answer": {
                "other": "",
                "tick": "Yes"
            },
            "Score": 5
        },
        "P1Q6": {
            "Answer": {
                "other": "",
                "tick": [
                    "National guidelines",
                    "Surveillance book",
                    "Other"
                ]
            },
            "Score": 6
        },
        "P1Q7": {
            "Answer": {
                "other": "",
                "tick": "Yes"
            },
            "Score": 4
        },
        "P2Q1": {
            "Answer": {
                "other": "",
                "tick": "Everyday"
            },
            "Score": 5
        },
        "P2Q2": {
            "Answer": {
                "other": "",
                "tick": "Everyday"
            },
            "Score": 5
        },
        "P2Q3": {
            "Answer": {
                "other": "",
                "tick": "Under 24 hours"
            },
            "Score": 5
        },
        "P2Q4": {
            "Answer": {
                "other": "",
                "tick": "Correct"
            },
            "Score": 5
        },
        "P2Q5": {
            "Answer": {
                "other": "",
                "tick": "Correct"
            },
            "Score": 5
        },
        "P2Q6": {
            "Answer": {
                "other": "",
                "tick": "Correct"
            },
            "Score": 5
        },
        "P3Q1": {
            "Answer": {
                "mix": "2",
                "pf": "2",
                "positive": "2",
                "pv": "2",
                "test": "2"
            },
            "Score": 0
        },
        "P3Q2": {
            "Answer": {
                "mix": "2",
                "pf": "2",
                "positive": "2",
                "pv": "2",
                "test": ""
            },
            "Score": 0
        },
        "P3Q2_1": {
            "Answer": "thhh",
            "Score": 0
        },
        "P3Q3": {
            "Answer": {
                "mix": "2",
                "pf": "2",
                "positive": "2",
                "pv": "2",
                "test": ""
            },
            "Score": 0
        },
        "P3Q3_1": {
            "Answer": "vghh",
            "Score": 0
        },
        "P3Q3_2": {
            "Answer": {
                "other": "",
                "tick": "No Pf and Mix"
            },
            "Score": 8
        },
        "P3Q3_3": {
            "Answer": {
                "other": "",
                "tick": "No Pv"
            },
            "Score": 8
        },
        "P3Q3_4": {
            "Answer": {
                "other": "",
                "tick": "No Pf and Mix"
            },
            "Score": 4
        },
        "P3Q4": {
            "Answer": {
                "l1": "3",
                "lc": "0"
            },
            "Score": 0
        },
        "P3Q5": {
            "Answer": "3",
            "Score": 0
        },
        "P4": {
            "Answer": {
                "list": [
                    {
                        "age": "88",
                        "duration": "556",
                        "medicine": "gg",
                        "pill": "555",
                        "score": 1,
                        "sex": "M",
                        "tick": "Correct",
                        "virus": "F"
                    },
                    {
                        "age": "88",
                        "duration": "556",
                        "medicine": "gg",
                        "pill": "555",
                        "score": 1,
                        "sex": "M",
                        "tick": "Correct",
                        "virus": "F"
                    },
                    {
                        "age": "88",
                        "duration": "556",
                        "medicine": "gg",
                        "pill": "555",
                        "score": 1,
                        "sex": "M",
                        "tick": "Correct",
                        "virus": "F"
                    },
                    {
                        "age": "88",
                        "duration": "556",
                        "medicine": "gg",
                        "pill": "555",
                        "score": 1,
                        "sex": "M",
                        "tick": "Correct",
                        "virus": "F"
                    },
                    {
                        "age": "88",
                        "duration": "556",
                        "medicine": "gg",
                        "pill": "555",
                        "score": 1,
                        "sex": "M",
                        "tick": "Correct",
                        "virus": "F"
                    },
                    {
                        "age": "88",
                        "duration": "556",
                        "medicine": "gg",
                        "pill": "555",
                        "score": 1,
                        "sex": "M",
                        "tick": "Correct",
                        "virus": "F"
                    },
                    {
                        "age": "88",
                        "duration": "556",
                        "medicine": "gg",
                        "pill": "555",
                        "score": 1,
                        "sex": "M",
                        "tick": "Correct",
                        "virus": "F"
                    },
                    {
                        "age": "88",
                        "duration": "556",
                        "medicine": "gg",
                        "pill": "555",
                        "score": 1,
                        "sex": "M",
                        "tick": "Correct",
                        "virus": "F"
                    },
                    {
                        "age": "88",
                        "duration": "556",
                        "medicine": "gg",
                        "pill": "555",
                        "score": 1,
                        "sex": "M",
                        "tick": "Correct",
                        "virus": "F"
                    }
                ],
                "qty": 9
            },
            "Score": 9
        },
        "P5Q1": {
            "Answer": {
                "other": "",
                "tick": "Not stockout"
            },
            "Score": 2
        },
        "P5Q2": {
            "Answer": {
                "other": "",
                "tick": "Stockout"
            },
            "Score": 0
        },
        "P5Q3": {
            "Answer": {
                "other": "",
                "tick": "Stockout"
            },
            "Score": 0
        },
        "P5Q4": {
            "Answer": {
                "other": "",
                "tick": "Not stockout"
            },
            "Score": 2
        },
        "P5Q5": {
            "Answer": {
                "other": "",
                "tick": "Not stockout"
            },
            "Score": 2
        },
        "P6Q1": {
            "Answer": {
                "date": "2021-10-10",
                "person": "jhhu",
                "problem": "yffyyg",
                "solution": "vhghy"
            },
            "Score": 0
        },
        "P6Q2": {
            "Answer": {
                "date": "2021-10-01",
                "person": "huhu",
                "problem": "hvyg",
                "solution": "hguh"
            },
            "Score": 0
        }
    },
    "Quarter": "2021 Q3",
    "Rec_ID": 33,
    "VisitDate": "2021-10-13",
    "VisitorName": "Hem Vanna ",
    "VisitorSex": "M"
}

Note

If Rec_ID is null or 0 it will insert new.

If Rec_ID is not null or not equal 0 it will update.

HC checklist aditional data

POST /api-checklist/v1/hc/misdata

get aditional data

Parse as json:

{
  "Code_Facility_T": "010202"
}

Response as json:

{
  "vmw": 0
}

OD checklist

Get OD check list

POST /api-checklist/v1/od/list

Get list of OD checklist

Parse as json:

{
  "Code_Prov_T":"01",
  "Code_OD_T":""
}

Respone as json:

[
    {
        "Rec_ID": 25,
        "Code_OD_T": "0102",
        "Quarter": "2021 Q3",
        "VisitDate": "2021-10-01",
        "VisitorName": "Tata",
        "VisitorSex": "F",
        "Part1Score": 34.19,
        "Part2Score": 2,
        "Part3Score": 0,
        "Part4Score": 0,
        "Code_Prov_T": "01"
    },
    {
        "Rec_ID": 26,
        "Code_OD_T": "0102",
        "Quarter": "2021 Q3",
        "VisitDate": "2021-10-04",
        "VisitorName": "Vary",
        "VisitorSex": "F",
        "Part1Score": null,
        "Part2Score": null,
        "Part3Score": null,
        "Part4Score": null,
        "Code_Prov_T": "01"
    },
    {
        "Rec_ID": 28,
        "Code_OD_T": "0102",
        "Quarter": "2021 Q3",
        "VisitDate": "2021-10-12",
        "VisitorName": "Rinna",
        "VisitorSex": "M",
        "Part1Score": null,
        "Part2Score": null,
        "Part3Score": null,
        "Part4Score": null,
        "Code_Prov_T": "01"
    }
]

OD check list detail

POST /api-checklist/v1/od/list

Get detail data of OD checklist

Parse as json:

{
  "Rec_ID": 123
}

Respone as json:

  {
    "Rec_ID": 25,
    "Code_OD_T": "0102",
    "Quarter": "2021 Q3",
    "VisitDate": "2021-10-01",
    "VisitorName": "តេស្ត",
    "VisitorSex": "F",
    "Part1Score": 34.19,
    "Part2Score": 2,
    "Part3Score": 0,
    "Part4Score": 0,
    "Code_Prov_T": "01",
    "Detail": {
        "P1Q1_1": {
            "Answer": {
                "other": "",
                "tick": "No"
            },
            "Score": 0
        },
        "P1Q1_2": {
            "Answer": {
                "other": "",
                "tick": "No"
            },
            "Score": 0
        },
        "P1Q1_3": {
            "Answer": {
                "other": "",
                "tick": "No"
            },
            "Score": 0
        },
        "P1Q2_1": {
            "Answer": {
                "plan": "3",
                "result": "3"
            },
            "Score": 100
        },
        "P1Q2_2": {
            "Answer": {
                "plan": "11",
                "result": "1"
            },
            "Score": 9
        },
        "P1Q2_3": {
            "Answer": {
                "plan": "1",
                "result": "1"
            },
            "Score": 100
        },
        "P1Q3_1": {
            "Answer": {
                "other": "",
                "tick": "No"
            },
            "Score": 0
        },
        "P1Q3_2": {
            "Answer": {
                "other": "",
                "tick": "No"
            },
            "Score": 0
        },
        "P1Q3_3": {
            "Answer": {
                "other": "",
                "tick": "No"
            },
            "Score": 0
        },
        "P1Q4": {
            "Answer": {
                "other": "",
                "tick": "Yes"
            },
            "Score": 5
        },
        "P1Q5": {
            "Answer": {
                "other": "",
                "tick": "Yes"
            },
            "Score": 15
        },
        "P1Q6": {
            "Answer": {
                "other": "",
                "tick": "Yes"
            },
            "Score": 5
        },
        "P1Q7": {
            "Answer": {
                "other": "",
                "tick": "Yes"
            },
            "Score": 5
        },
        "P1Q8_1": {
            "Answer": {
                "plan": "15",
                "result": "2"
            },
            "Score": 0.4
        },
        "P1Q8_2": {
            "Answer": {
                "plan": "8",
                "result": "2"
            },
            "Score": 0.25
        },
        "P1Q8_3": {
            "Answer": {
                "plan": "50",
                "result": "2"
            },
            "Score": 0.04
        },
        "P2Q1": {
            "Answer": {
                "amc": "2",
                "balance": "2",
                "stockin": "2",
                "stockout": "2",
                "tick": "Under"
            },
            "Score": 0.5
        },
        "P2Q2": {
            "Answer": {
                "amc": "2",
                "balance": "2",
                "stockin": "2",
                "stockout": "2",
                "tick": "Under"
            },
            "Score": 0.5
        },
        "P2Q3": {
            "Answer": {
                "amc": "2",
                "balance": "2",
                "stockin": "2",
                "stockout": "2",
                "tick": "Under"
            },
            "Score": 0.5
        },
        "P2Q4": {
            "Answer": {
                "amc": "2",
                "balance": "2",
                "stockin": "2",
                "stockout": "2",
                "tick": "Under"
            },
            "Score": 0.25
        },
        "P2Q5": {
            "Answer": {
                "amc": "2",
                "balance": "2",
                "stockin": "2",
                "stockout": "2",
                "tick": "Under"
            },
            "Score": 0.25
        },
        "P3VMW_Test": {
            "Answer": "32",
            "Score": null
        },
        "P3VMW_Positive": {
            "Answer": "2",
            "Score": null
        },
        "P3VMW_Pf": {
            "Answer": "2",
            "Score": null
        },
        "P3VMW_Pv": {
            "Answer": "2",
            "Score": null
        },
        "P3VMW_Mix": {
            "Answer": "2",
            "Score": null
        },
        "P3VMW_Minor": {
            "Answer": "2",
            "Score": null
        },
        "P3VMW_Severe": {
            "Answer": "2",
            "Score": null
        },
        "P3VMW_Death": {
            "Answer": "2",
            "Score": null
        },
        "P3VMW_Report": {
            "Answer": "2",
            "Score": null
        },
        "P3HC_Test": {
            "Answer": "2",
            "Score": null
        },
        "P3HC_Positive": {
            "Answer": "2",
            "Score": null
        },
        "P3HC_Pf": {
            "Answer": "2",
            "Score": null
        },
        "P3HC_Pv": {
            "Answer": "2",
            "Score": null
        },
        "P3HC_Mix": {
            "Answer": "2",
            "Score": null
        },
        "P3HC_Minor": {
            "Answer": "2",
            "Score": null
        },
        "P3HC_Severe": {
            "Answer": "2",
            "Score": null
        },
        "P3HC_Death": {
            "Answer": "2",
            "Score": null
        },
        "P3HC_Report": {
            "Answer": "2",
            "Score": null
        },
        "P4Q1": {
            "Answer": "2",
            "Score": null
        },
        "P4Q2": {
            "Answer": "2",
            "Score": null
        },
        "P4Q3": {
            "Answer": "2",
            "Score": null
        },
        "P4Q4": {
            "Answer": "2",
            "Score": null
        },
        "P4Q5": {
            "Answer": "2",
            "Score": null
        },
        "P5Q1": {
            "Answer": {
                "date": "2021-10-01",
                "person": "ងហ្",
                "problem": "ថថ",
                "solution": "ងត"
            },
            "Score": null
        },
        "P5Q2": {
            "Answer": {
                "date": "2021-10-01",
                "person": "ងរថរ",
                "problem": "ថង",
                "solution": "ងង"
            },
            "Score": null
        }
    }
}

Insert/Update OD check list

POST /api-checklist/v1/od/update

Insert/Update OD check list

Parse as json:

{
     "Code_OD_T": "0102",
     "Code_Prov_T": "01",
     "Detail": {
         "P1Q1_1": {
             "Answer": {
                 "other": "",
                 "tick": "No"
             },
             "Score": 0
         },
         "P1Q1_2": {
             "Answer": {
                 "other": "",
                 "tick": "No"
             },
             "Score": 0
         },
         "P1Q1_3": {
             "Answer": {
                 "other": "",
                 "tick": "No"
             },
             "Score": 0
         },
         "P1Q2_1": {
             "Answer": {
                 "plan": "3",
                 "result": "3"
             },
             "Score": 1.67
         },
         "P1Q2_2": {
             "Answer": {
                 "plan": "11",
                 "result": "1"
             },
             "Score": 0.15
         },
         "P1Q2_3": {
             "Answer": {
                 "plan": "1",
                 "result": "1"
             },
             "Score": 1.67
         },
         "P1Q3_1": {
             "Answer": {
                 "other": "",
                 "tick": "No"
             },
             "Score": 0
         },
         "P1Q3_2": {
             "Answer": {
                 "other": "",
                 "tick": "No"
             },
             "Score": 0
         },
         "P1Q3_3": {
             "Answer": {
                 "other": "",
                 "tick": "No"
             },
             "Score": 0
         },
         "P1Q4": {
             "Answer": {
                 "other": "",
                 "tick": "No"
             },
             "Score": 0
         },
         "P1Q5": {
             "Answer": {
                 "other": "",
                 "tick": "Yes"
             },
             "Score": 15
         },
         "P1Q6": {
             "Answer": {
                 "other": "",
                 "tick": "Yes"
             },
             "Score": 5
         },
         "P1Q7": {
             "Answer": {
                 "other": "",
                 "tick": "Yes"
             },
             "Score": 5
         },
         "P1Q8_1": {
             "Answer": {
                 "plan": "15",
                 "result": "2"
             },
             "Score": 0.4
         },
         "P1Q8_2": {
             "Answer": {
                 "plan": "8",
                 "result": "2"
             },
             "Score": 0.25
         },
         "P1Q8_3": {
             "Answer": {
                 "plan": "50",
                 "result": "2"
             },
             "Score": 0.08
         },
         "P2Q1": {
             "Answer": {
                 "amc": "2",
                 "balance": "2",
                 "stockin": "2",
                 "stockout": "2",
                 "tick": "Under"
             },
             "Score": 0.5
         },
         "P2Q2": {
             "Answer": {
                 "amc": "2",
                 "balance": "2",
                 "stockin": "2",
                 "stockout": "2",
                 "tick": "Under"
             },
             "Score": 0.5
         },
         "P2Q3": {
             "Answer": {
                 "amc": "2",
                 "balance": "2",
                 "stockin": "2",
                 "stockout": "2",
                 "tick": "Under"
             },
             "Score": 0.5
         },
         "P2Q4": {
             "Answer": {
                 "amc": "2",
                 "balance": "2",
                 "stockin": "2",
                 "stockout": "2",
                 "tick": "Under"
             },
             "Score": 0.25
         },
         "P2Q5": {
             "Answer": {
                 "amc": "2",
                 "balance": "2",
                 "stockin": "2",
                 "stockout": "2",
                 "tick": "Under"
             },
             "Score": 0.25
         },
         "P3HC_Death": {
             "Answer": "2",
             "Score": 0.56
         },
         "P3HC_Minor": {
             "Answer": "2",
             "Score": 0.56
         },
         "P3HC_Mix": {
             "Answer": "2",
             "Score": 0.56
         },
         "P3HC_Pf": {
             "Answer": "2",
             "Score": 0.56
         },
         "P3HC_Positive": {
             "Answer": "2",
             "Score": 0.56
         },
         "P3HC_Pv": {
             "Answer": "2",
             "Score": 0.56
         },
         "P3HC_Report": {
             "Answer": "2",
             "Score": 0.01
         },
         "P3HC_Severe": {
             "Answer": "2",
             "Score": 0
         },
         "P3HC_Test": {
             "Answer": "2",
             "Score": 0
         },
         "P3VMW_Death": {
             "Answer": "2",
             "Score": 0.56
         },
         "P3VMW_Minor": {
             "Answer": "2",
             "Score": 0.56
         },
         "P3VMW_Mix": {
             "Answer": "2",
             "Score": 0.56
         },
         "P3VMW_Pf": {
             "Answer": "2",
             "Score": 0.56
         },
         "P3VMW_Positive": {
             "Answer": "2",
             "Score": 0.56
         },
         "P3VMW_Pv": {
             "Answer": "2",
             "Score": 0.56
         },
         "P3VMW_Report": {
             "Answer": "2",
             "Score": 0.01
         },
         "P3VMW_Severe": {
             "Answer": "2",
             "Score": 0
         },
         "P3VMW_Test": {
             "Answer": "32",
             "Score": 0.02
         },
         "P4Q1": {
             "Answer": "2",
             "Score": 12
         },
         "P4Q2": {
             "Answer": "2",
             "Score": 4.5
         },
         "P4Q3": {
             "Answer": "2",
             "Score": 4.5
         },
         "P4Q4": {
             "Answer": "2",
             "Score": 4.5
         },
         "P4Q5": {
             "Answer": "2",
             "Score": 4.5
         },
         "P5Q1": {
             "Answer": {
                 "date": "2021-10-01",
                 "person": "ងហ្",
                 "problem": "ថថ",
                 "solution": "ងត"
             },
             "Score": 0
         },
         "P5Q2": {
             "Answer": {
                 "date": "2021-10-01",
                 "person": "ងរថរ",
                 "problem": "ថង",
                 "solution": "ងង"
             },
             "Score": 0
         }
     },
     "Part1Score": 34.19,
     "Part2Score": 2,
     "Part3Score": 0,
     "Part4Score": 0,
     "Quarter": "2021 Q3",
     "Rec_ID": 25,
     "VisitDate": "2021-10-01",
     "VisitorName": "តេស្ត",
     "VisitorSex": "F"
 }

Note

if Rec_ID is 0 or null, it will insert new

if Rec_ID > 0, it will update

OD check list aditional data

POST /api-checklist/v1/od/misdata

Get aditional data of OD checklist

Parse as json:

{
  "Code_OD_T": "0102",
  "Quarter": 1
}

Respone as json:

{
    "stockReport": 0,
    "stockACT": 92,
    "stockRDT": 100,
    "vmwTest": 0,
    "vmwPositive": null,
    "vmwPf": null,
    "vmwPv": null,
    "vmwMix": null,
    "vmwMinor": null,
    "vmwSevere": null,
    "vmwDeath": 0,
    "vmwReport": null,
    "hcTest": 0,
    "hcPositive": null,
    "hcPf": null,
    "hcPv": null,
    "hcMix": null,
    "hcMinor": null,
    "hcSevere": null,
    "hcDeath": 0,
    "hcReport": null,
    "pf": null,
    "pv": null,
    "mix": null,
    "pfL1": null,
    "pfLC": null,
    "pvL1": null,
    "pvLC": null,
    "mixL1": null,
    "mixLC": null,
    "pfFoci": null,
    "pvFoci": 0,
    "mixFoci": null
}

EPI check list

EPI check list

POST /api-checklist/v1/epi/list

Get list data of EPI checklist

Parse as json:

{
  "Code_Prov_T":"01",
  "Code_OD_T":"",
  "Code_Facility_T":""
}

Respone as json:

[
    {
        "Rec_ID": 8,
        "Code_Facility_T": "010402",
        "Quarter": "2021 Q3",
        "VisitDate": "2021-11-08",
        "VisitorName": "vanna",
        "VisitorSex": "M",
        "VisitorPosition": "data",
        "VisitorPhone": "0967333347",
        "VisitorWorkplace": "CNM",
        "Part1Score": 89,
        "Part2Score": 99,
        "Code_Prov_T": "01",
        "Code_OD_T": "0104"
    },
    {
        "Rec_ID": 13,
        "Code_Facility_T": "010203",
        "Quarter": "2021 Q1",
        "VisitDate": "2022-01-04",
        "VisitorName": "i",
        "VisitorSex": "F",
        "VisitorPosition": "k",
        "VisitorPhone": "55",
        "VisitorWorkplace": "Province",
        "Part1Score": 2,
        "Part2Score": 6,
        "Code_Prov_T": "01",
        "Code_OD_T": "0102"
    }
]

EPI check list detail

POST /api-checklist/v1/epi/detail

Get detail data of EPI checklist

Parse as json:

{
  "Rec_ID":123
}

Respone as json:

{
    "Rec_ID": 8,
    "Code_Facility_T": "010402",
    "Quarter": "2021 Q3",
    "VisitDate": "2021-11-08",
    "VisitorName": "vanna",
    "VisitorSex": "M",
    "VisitorPosition": "data",
    "VisitorPhone": "0967333347",
    "VisitorWorkplace": "CNM",
    "Part1Score": 89,
    "Part2Score": 99,
    "Code_Prov_T": "01",
    "Code_OD_T": "0104",
    "Detail": {
        "Q1": {
            "Answer": {
                "lastYear": {
                    "hc": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "10",
                        "value1": "2",
                        "value2": "1",
                        "value3": "6",
                        "year": "2021"
                    },
                    "total": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "10",
                        "value1": "4",
                        "value2": "4",
                        "value3": "11",
                        "year": "2021"
                    },
                    "vmw": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "10",
                        "value1": "2",
                        "value2": "2",
                        "value3": "2",
                        "year": "2021"
                    }
                },
                "thisYear": {
                    "hc": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "9",
                        "value1": "1",
                        "value2": "2",
                        "value3": "3",
                        "year": "2020"
                    },
                    "total": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "9",
                        "value1": "2",
                        "value2": "4",
                        "value3": "6",
                        "year": "2020"
                    },
                    "vmw": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "9",
                        "value1": "1",
                        "value2": "1",
                        "value3": "1",
                        "year": "2020"
                    }
                }
            },
            "Score": 0
        },
        "Q2": {
            "Answer": {
                "lastYear": {
                    "hc": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "10",
                        "value1": "0",
                        "value2": "0",
                        "value3": "0",
                        "year": "2021"
                    },
                    "total": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "10",
                        "value1": "0",
                        "value2": "0",
                        "value3": "0",
                        "year": "2021"
                    },
                    "vmw": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "10",
                        "value1": "0",
                        "value2": "0",
                        "value3": "0",
                        "year": "2021"
                    }
                },
                "thisYear": {
                    "hc": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "10",
                        "value1": "1",
                        "value2": "1",
                        "value3": "1",
                        "year": "2020"
                    },
                    "total": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "10",
                        "value1": "2",
                        "value2": "2",
                        "value3": "2",
                        "year": "2020"
                    },
                    "vmw": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "10",
                        "value1": "1",
                        "value2": "1",
                        "value3": "1",
                        "year": "2020"
                    }
                }
            },
            "Score": 0
        },
        "Q3": {
            "Answer": {
                "lastYear": {
                    "hc": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "10",
                        "value1": "0",
                        "value2": "0",
                        "value3": "0",
                        "year": "2021"
                    },
                    "total": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "10",
                        "value1": "0",
                        "value2": "0",
                        "value3": "0",
                        "year": "2021"
                    },
                    "vmw": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "10",
                        "value1": "0",
                        "value2": "0",
                        "value3": "0",
                        "year": "2021"
                    }
                },
                "thisYear": {
                    "hc": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "10",
                        "value1": "0",
                        "value2": "0",
                        "value3": "0",
                        "year": "2020"
                    },
                    "total": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "10",
                        "value1": "0",
                        "value2": "0",
                        "value3": "0",
                        "year": "2020"
                    },
                    "vmw": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "10",
                        "value1": "0",
                        "value2": "0",
                        "value3": "0",
                        "year": "2020"
                    }
                }
            },
            "Score": 0
        },
        "Q4": {
            "Answer": {
                "lastYear": {
                    "hc": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "10",
                        "value1": "0",
                        "value2": "0",
                        "value3": "0",
                        "year": "2021"
                    },
                    "total": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "10",
                        "value1": "0",
                        "value2": "0",
                        "value3": "0",
                        "year": "2021"
                    },
                    "vmw": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "10",
                        "value1": "0",
                        "value2": "0",
                        "value3": "0",
                        "year": "2021"
                    }
                },
                "thisYear": {
                    "hc": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "10",
                        "value1": "0",
                        "value2": "0",
                        "value3": "0",
                        "year": "2020"
                    },
                    "total": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "10",
                        "value1": "0",
                        "value2": "0",
                        "value3": "0",
                        "year": "2020"
                    },
                    "vmw": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "10",
                        "value1": "0",
                        "value2": "0",
                        "value3": "0",
                        "year": "2020"
                    }
                }
            },
            "Score": 0
        },
        "Q5": {
            "Answer": {
                "hc": {
                    "month1": "8",
                    "month2": "9",
                    "month3": "10",
                    "value1": "0",
                    "value2": "0",
                    "value3": "0",
                    "year": "2021"
                },
                "total": {
                    "month1": "8",
                    "month2": "9",
                    "month3": "10",
                    "value1": "0",
                    "value2": "0",
                    "value3": "0",
                    "year": "2021"
                },
                "vmw": {
                    "month1": "8",
                    "month2": "9",
                    "month3": "10",
                    "value1": "0",
                    "value2": "0",
                    "value3": "0",
                    "year": "2021"
                }
            },
            "Score": 0
        },
        "Q6": {
            "Answer": {
                "hc": {
                    "month1": "8",
                    "month2": "9",
                    "month3": "10",
                    "value1": "0",
                    "value2": "0",
                    "value3": "0",
                    "year": "2021"
                },
                "total": {
                    "month1": "",
                    "month2": "",
                    "month3": "",
                    "value1": "",
                    "value2": "",
                    "value3": "",
                    "year": ""
                },
                "vmw": {
                    "month1": "",
                    "month2": "",
                    "month3": "",
                    "value1": "",
                    "value2": "",
                    "value3": "",
                    "year": ""
                }
            },
            "Score": 0
        },
        "Q7": {
            "Answer": {
                "hc": {
                    "month1": "8",
                    "month2": "9",
                    "month3": "10",
                    "value1": "0",
                    "value2": "0",
                    "value3": "0",
                    "year": "2021"
                },
                "total": {
                    "month1": "",
                    "month2": "",
                    "month3": "",
                    "value1": "",
                    "value2": "",
                    "value3": "",
                    "year": ""
                },
                "vmw": {
                    "month1": "",
                    "month2": "",
                    "month3": "",
                    "value1": "",
                    "value2": "",
                    "value3": "",
                    "year": ""
                }
            },
            "Score": 0
        },
        "Q8": {
            "Answer": {
                "hc": {
                    "month1": "8",
                    "month2": "9",
                    "month3": "10",
                    "value1": "0",
                    "value2": "0",
                    "value3": "0",
                    "year": "2021"
                },
                "total": {
                    "month1": "8",
                    "month2": "9",
                    "month3": "10",
                    "value1": "0",
                    "value2": "0",
                    "value3": "0",
                    "year": "2021"
                },
                "vmw": {
                    "month1": "8",
                    "month2": "9",
                    "month3": "10",
                    "value1": "0",
                    "value2": "0",
                    "value3": "0",
                    "year": "2021"
                }
            },
            "Score": 0
        },
        "Q9": {
            "Answer": "ត្រឹមត្រូវ",
            "Score": 0
        },
        "Q10": {
            "Answer": "ល្អ",
            "Score": 0
        },
        "P1Q1": {
            "Answer": {
                "hc": {
                    "month1": "8",
                    "month2": "9",
                    "month3": "10",
                    "value1": "0",
                    "value2": "0",
                    "value3": "0",
                    "year": "2021"
                },
                "total": {
                    "month1": "8",
                    "month2": "9",
                    "month3": "10",
                    "value1": "0",
                    "value2": "0",
                    "value3": "0",
                    "year": "2021"
                },
                "vmw": {
                    "month1": "8",
                    "month2": "7",
                    "month3": "10",
                    "value1": "0",
                    "value2": "0",
                    "value3": "0",
                    "year": "2021"
                }
            },
            "Score": 10
        },
        "P1Q2": {
            "Answer": {
                "hc": {
                    "month1": "8",
                    "month2": "9",
                    "month3": "10",
                    "value1": "0",
                    "value2": "0",
                    "value3": "0",
                    "year": "2021"
                },
                "total": {
                    "month1": "8",
                    "month2": "9",
                    "month3": "10",
                    "value1": "0",
                    "value2": "0",
                    "value3": "0",
                    "year": "2021"
                },
                "vmw": {
                    "month1": "8",
                    "month2": "9",
                    "month3": "10",
                    "value1": "0",
                    "value2": "0",
                    "value3": "0",
                    "year": "2021"
                }
            },
            "Score": 14
        },
        "P1Q3": {
            "Answer": {
                "other": "",
                "tick": [
                    "No internet"
                ]
            },
            "Score": 0
        },
        "P1Q4": {
            "Answer": {
                "hc": {
                    "month1": "8",
                    "month2": "9",
                    "month3": "10",
                    "value1": "0",
                    "value2": "0",
                    "value3": "0",
                    "year": "2021"
                },
                "total": {
                    "month1": "8",
                    "month2": "9",
                    "month3": "10",
                    "value1": "0",
                    "value2": "0",
                    "value3": "0",
                    "year": "2021"
                },
                "vmw": {
                    "month1": "8",
                    "month2": "9",
                    "month3": "10",
                    "value1": "0",
                    "value2": "0",
                    "value3": "0",
                    "year": "2021"
                }
            },
            "Score": 15
        },
        "P1Q5": {
            "Answer": {
                "other": "",
                "tick": [
                    "No internet"
                ]
            },
            "Score": 0
        },
        "P1Q6": {
            "Answer": {
                "month1": "8",
                "month2": "9",
                "month3": "10",
                "value1": "0",
                "value2": "0",
                "value3": "0",
                "year": "2021"
            },
            "Score": 10
        },
        "P1Q6_1": {
            "Answer": "50",
            "Score": 0
        },
        "P1Q7": {
            "Answer": {
                "month1": "8",
                "month2": "9",
                "month3": "10",
                "value1": "0",
                "value2": "0",
                "value3": "0",
                "year": "2021"
            },
            "Score": 10
        },
        "P1Q7_1": {
            "Answer": "50",
            "Score": 0
        },
        "P1Q8": {
            "Answer": {
                "other": "",
                "tick": [
                    "Far village",
                    "Not enough staff",
                    "Passing patient",
                    "No reports from VMW",
                    "Wait for OD"
                ]
            },
            "Score": 0
        },
        "P1Q9": {
            "Answer": {
                "paper": {
                    "IMP": "0",
                    "L1": "0",
                    "L2": "0",
                    "L3": "0",
                    "L4": "0"
                },
                "tablet": {
                    "IMP": "0",
                    "L1": "0",
                    "L2": "0",
                    "L3": "0",
                    "L4": "0"
                }
            },
            "Score": 5
        },
        "P1Q10": {
            "Answer": {
                "other": "",
                "tick": "No"
            },
            "Score": 5
        },
        "P1Q11": {
            "Answer": {
                "other": "",
                "percent1": "0",
                "percent2": "",
                "percent3": "",
                "qty1": "0",
                "qty2": "",
                "qty3": "",
                "tick": "Under 7 days"
            },
            "Score": 20
        },
        "P2Q1": {
            "Answer": {
                "other": "",
                "percent1": "0",
                "percent2": "",
                "percent3": "",
                "qty1": "0",
                "qty2": "",
                "qty3": "",
                "tick": "Under 14 days"
            },
            "Score": 20
        },
        "P2Q2": {
            "Answer": {
                "other": "",
                "qty1": "0",
                "qty2": "",
                "qty3": "",
                "tick": "Full"
            },
            "Score": 20
        },
        "P2Q3": {
            "Answer": {
                "other": "",
                "qty1": "0",
                "qty2": "",
                "qty3": "",
                "tick": "Draw"
            },
            "Score": 20
        },
        "P2Q4": {
            "Answer": {
                "other": "",
                "qty1": "0",
                "qty2": "",
                "qty3": "",
                "tick": "Done"
            },
            "Score": 19
        },
        "P2Q5": {
            "Answer": {
                "bednet": "0",
                "educate": "0",
                "test": "0"
            },
            "Score": 20
        },
        "Request": {
            "Answer": "ល្អ",
            "Score": 0
        }
    }
}

Insert/Update EPI check list

POST /api-checklist/v1/epi/detail

Insert/Update data of EPI checklist

Parse as json:

{
    "Code_Facility_T": "010203",
    "Detail": {
        "P1Q1": {
            "Answer": {
                "hc": {
                    "month1": "8",
                    "month2": "9",
                    "month3": "10",
                    "value1": "1",
                    "value2": "1",
                    "value3": "1",
                    "year": "2021"
                },
                "total": {
                    "month1": "8",
                    "month2": "9",
                    "month3": "10",
                    "value1": "2",
                    "value2": "2",
                    "value3": "2",
                    "year": "2021"
                },
                "vmw": {
                    "month1": "8",
                    "month2": "9",
                    "month3": "10",
                    "value1": "1",
                    "value2": "1",
                    "value3": "1",
                    "year": "2021"
                }
            },
            "Score": 0
        },
        "P1Q10": {
            "Answer": {
                "other": "",
                "tick": "Yes"
            },
            "Score": 0
        },
        "P1Q11": {
            "Answer": {
                "other": "",
                "percent1": "5",
                "percent2": "",
                "percent3": "",
                "qty1": "5",
                "qty2": "",
                "qty3": "",
                "tick": "Under 7 days"
            },
            "Score": 0
        },
        "P1Q2": {
            "Answer": {
                "hc": {
                    "month1": "8",
                    "month2": "9",
                    "month3": "10",
                    "value1": "1",
                    "value2": "1",
                    "value3": "1",
                    "year": "2021"
                },
                "total": {
                    "month1": "8",
                    "month2": "9",
                    "month3": "10",
                    "value1": "2",
                    "value2": "2",
                    "value3": "2",
                    "year": "2021"
                },
                "vmw": {
                    "month1": "8",
                    "month2": "9",
                    "month3": "10",
                    "value1": "1",
                    "value2": "1",
                    "value3": "1",
                    "year": "2021"
                }
            },
            "Score": 0
        },
        "P1Q3": {
            "Answer": {
                "other": "",
                "tick": [
                    "Phone\/Tablet broken"
                ]
            },
            "Score": 0
        },
        "P1Q4": {
            "Answer": {
                "hc": {
                    "month1": "8",
                    "month2": "9",
                    "month3": "10",
                    "value1": "1",
                    "value2": "1",
                    "value3": "1",
                    "year": "2021"
                },
                "total": {
                    "month1": "8",
                    "month2": "9",
                    "month3": "10",
                    "value1": "2",
                    "value2": "2",
                    "value3": "2",
                    "year": "2021"
                },
                "vmw": {
                    "month1": "8",
                    "month2": "9",
                    "month3": "10",
                    "value1": "1",
                    "value2": "1",
                    "value3": "1",
                    "year": "2021"
                }
            },
            "Score": 0
        },
        "P1Q5": {
            "Answer": {
                "other": "",
                "tick": [
                    "Tablet broken"
                ]
            },
            "Score": 0
        },
        "P1Q6": {
            "Answer": {
                "month1": "8",
                "month2": "9",
                "month3": "10",
                "value1": "1",
                "value2": "1",
                "value3": "1",
                "year": "2021"
            },
            "Score": 2
        },
        "P1Q6_1": {
            "Answer": "10",
            "Score": 0
        },
        "P1Q7": {
            "Answer": {
                "month1": "8",
                "month2": "9",
                "month3": "10",
                "value1": "1",
                "value2": "1",
                "value3": "1",
                "year": "2021"
            },
            "Score": 0
        },
        "P1Q7_1": {
            "Answer": "30",
            "Score": 0
        },
        "P1Q8": {
            "Answer": {
                "other": "ooi",
                "tick": [
                    "Other"
                ]
            },
            "Score": 0
        },
        "P1Q9": {
            "Answer": {
                "paper": {
                    "IMP": "2",
                    "L1": "5",
                    "L2": "8",
                    "L3": "6",
                    "L4": "5"
                },
                "tablet": {
                    "IMP": "5",
                    "L1": "5",
                    "L2": "5",
                    "L3": "2",
                    "L4": "5"
                }
            },
            "Score": 0
        },
        "P2Q1": {
            "Answer": {
                "other": "",
                "percent1": "5",
                "percent2": "",
                "percent3": "",
                "qty1": "4",
                "qty2": "",
                "qty3": "",
                "tick": "Under 14 days"
            },
            "Score": 0
        },
        "P2Q2": {
            "Answer": {
                "other": "",
                "qty1": "55",
                "qty2": "",
                "qty3": "",
                "tick": "Full"
            },
            "Score": 6
        },
        "P2Q3": {
            "Answer": {
                "other": "",
                "qty1": "5",
                "qty2": "",
                "qty3": "",
                "tick": "Draw"
            },
            "Score": 0
        },
        "P2Q4": {
            "Answer": {
                "other": "",
                "qty1": "55",
                "qty2": "",
                "qty3": "",
                "tick": "Done"
            },
            "Score": 0
        },
        "P2Q5": {
            "Answer": {
                "bednet": "5",
                "educate": "8",
                "test": "8"
            },
            "Score": 0
        },
        "Q1": {
            "Answer": {
                "lastYear": {
                    "hc": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "10",
                        "value1": "1",
                        "value2": "1",
                        "value3": "1",
                        "year": "2021"
                    },
                    "total": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "10",
                        "value1": "2",
                        "value2": "2",
                        "value3": "2",
                        "year": "2021"
                    },
                    "vmw": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "10",
                        "value1": "1",
                        "value2": "1",
                        "value3": "1",
                        "year": "2021"
                    }
                },
                "thisYear": {
                    "hc": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "10",
                        "value1": "1",
                        "value2": "1",
                        "value3": "1",
                        "year": "2021"
                    },
                    "total": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "10",
                        "value1": "2",
                        "value2": "2",
                        "value3": "2",
                        "year": "2021"
                    },
                    "vmw": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "10",
                        "value1": "1",
                        "value2": "1",
                        "value3": "1",
                        "year": "2021"
                    }
                }
            },
            "Score": 0
        },
        "Q10": {
            "Answer": "i",
            "Score": 0
        },
        "Q2": {
            "Answer": {
                "lastYear": {
                    "hc": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "10",
                        "value1": "1",
                        "value2": "1",
                        "value3": "1",
                        "year": "2021"
                    },
                    "total": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "10",
                        "value1": "2",
                        "value2": "2",
                        "value3": "2",
                        "year": "2021"
                    },
                    "vmw": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "10",
                        "value1": "1",
                        "value2": "1",
                        "value3": "1",
                        "year": "2021"
                    }
                },
                "thisYear": {
                    "hc": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "10",
                        "value1": "1",
                        "value2": "1",
                        "value3": "1",
                        "year": "2021"
                    },
                    "total": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "10",
                        "value1": "2",
                        "value2": "2",
                        "value3": "2",
                        "year": "2021"
                    },
                    "vmw": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "10",
                        "value1": "1",
                        "value2": "1",
                        "value3": "1",
                        "year": "2021"
                    }
                }
            },
            "Score": 0
        },
        "Q3": {
            "Answer": {
                "lastYear": {
                    "hc": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "10",
                        "value1": "1",
                        "value2": "1",
                        "value3": "1",
                        "year": "2021"
                    },
                    "total": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "10",
                        "value1": "2",
                        "value2": "2",
                        "value3": "2",
                        "year": "2021"
                    },
                    "vmw": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "10",
                        "value1": "1",
                        "value2": "1",
                        "value3": "1",
                        "year": "2021"
                    }
                },
                "thisYear": {
                    "hc": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "10",
                        "value1": "1",
                        "value2": "1",
                        "value3": "1",
                        "year": "2021"
                    },
                    "total": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "10",
                        "value1": "2",
                        "value2": "2",
                        "value3": "2",
                        "year": "2021"
                    },
                    "vmw": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "10",
                        "value1": "1",
                        "value2": "1",
                        "value3": "1",
                        "year": "2021"
                    }
                }
            },
            "Score": 0
        },
        "Q4": {
            "Answer": {
                "lastYear": {
                    "hc": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "10",
                        "value1": "1",
                        "value2": "1",
                        "value3": "1",
                        "year": "2021"
                    },
                    "total": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "10",
                        "value1": "2",
                        "value2": "2",
                        "value3": "2",
                        "year": "2021"
                    },
                    "vmw": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "10",
                        "value1": "1",
                        "value2": "1",
                        "value3": "1",
                        "year": "2021"
                    }
                },
                "thisYear": {
                    "hc": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "10",
                        "value1": "1",
                        "value2": "1",
                        "value3": "1",
                        "year": "2021"
                    },
                    "total": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "10",
                        "value1": "2",
                        "value2": "2",
                        "value3": "2",
                        "year": "2021"
                    },
                    "vmw": {
                        "month1": "8",
                        "month2": "9",
                        "month3": "10",
                        "value1": "1",
                        "value2": "1",
                        "value3": "1",
                        "year": "2021"
                    }
                }
            },
            "Score": 0
        },
        "Q5": {
            "Answer": {
                "hc": {
                    "month1": "8",
                    "month2": "9",
                    "month3": "10",
                    "value1": "1",
                    "value2": "1",
                    "value3": "1",
                    "year": "2021"
                },
                "total": {
                    "month1": "8",
                    "month2": "9",
                    "month3": "10",
                    "value1": "2",
                    "value2": "2",
                    "value3": "2",
                    "year": "2021"
                },
                "vmw": {
                    "month1": "8",
                    "month2": "9",
                    "month3": "10",
                    "value1": "1",
                    "value2": "1",
                    "value3": "1",
                    "year": "2021"
                }
            },
            "Score": 0
        },
        "Q6": {
            "Answer": {
                "hc": {
                    "month1": "8",
                    "month2": "9",
                    "month3": "10",
                    "value1": "1",
                    "value2": "1",
                    "value3": "1",
                    "year": "2021"
                },
                "total": {
                    "month1": "8",
                    "month2": "9",
                    "month3": "10",
                    "value1": "2",
                    "value2": "2",
                    "value3": "2",
                    "year": "2021"
                },
                "vmw": {
                    "month1": "8",
                    "month2": "9",
                    "month3": "10",
                    "value1": "1",
                    "value2": "1",
                    "value3": "1",
                    "year": "2021"
                }
            },
            "Score": 0
        },
        "Q7": {
            "Answer": {
                "hc": {
                    "month1": "8",
                    "month2": "9",
                    "month3": "10",
                    "value1": "1",
                    "value2": "1",
                    "value3": "1",
                    "year": "2021"
                },
                "total": {
                    "month1": "8",
                    "month2": "9",
                    "month3": "10",
                    "value1": "2",
                    "value2": "2",
                    "value3": "2",
                    "year": "2021"
                },
                "vmw": {
                    "month1": "8",
                    "month2": "9",
                    "month3": "10",
                    "value1": "1",
                    "value2": "1",
                    "value3": "1",
                    "year": "2021"
                }
            },
            "Score": 0
        },
        "Q8": {
            "Answer": {
                "hc": {
                    "month1": "8",
                    "month2": "9",
                    "month3": "10",
                    "value1": "1",
                    "value2": "1",
                    "value3": "1",
                    "year": "2021"
                },
                "total": {
                    "month1": "8",
                    "month2": "9",
                    "month3": "10",
                    "value1": "2",
                    "value2": "2",
                    "value3": "2",
                    "year": "2021"
                },
                "vmw": {
                    "month1": "8",
                    "month2": "9",
                    "month3": "10",
                    "value1": "1",
                    "value2": "1",
                    "value3": "1",
                    "year": "2021"
                }
            },
            "Score": 0
        },
        "Q9": {
            "Answer": "i",
            "Score": 0
        },
        "Request": {
            "Answer": "ko",
            "Score": 0
        }
    },
    "Part1Score": 2,
    "Part2Score": 6,
    "Quarter": "2021 Q1",
    "Rec_ID": 13,
    "VisitDate": "2022-01-04",
    "VisitorName": "i",
    "VisitorPhone": "55",
    "VisitorPosition": "k",
    "VisitorSex": "F",
    "VisitorWorkplace": "Province"
}

API V1 of Training

Material

GET /api-training/v1/material/list

To get list of material file: PDF, Slide, Video

Query Parameters
  • audience (string) – VMW/HC/OD

  • category (string) – MIS/M&E/EPI/Finance/VMW/Education

  • place_code (string) – code of village / code of HF

Response as json:

{
  "code": 200,
  "message": "success",
  "data": [
       {
            "Material_ID": 1,
            "Title": "Documentation",
            "Source": "52.168.163.48/media/Training/name.pdf",
            "Type": "PDF",
            "Category": "MIS",
            "Code_Vill_T": "0102010300",
            "Thumbnail": "52.168.163.48/media/Training/e-learning.png",
            "IsRead": 0
        }
  ]
}
Object
  • Type (string) – type of Source. e.g: PDF, Slide, Video.

  • Audience (string) – OD/HC/VMW.

  • Source (string) – URL

  • Category (string) – MIS/M&E/EPI/Finance/VMW/Education

  • IsRead (bit) – 0/1

Update status material

POST /api-training/v1/material/update_status

To update status weather material training is read or not yet.

Parse as json:

{
    "Code_Place" : "0102010300",
    "Material_ID" : 1,
    "IsRead": 1
}
Object
  • Code_Place (string) – code of Village / code of HF

  • Material_ID (string) – Rec_ID of material training

  • IsRead (bit) – 0/1, if not yet read the value is 0 otherwise is 1.

Quiz list

GET /api-training/v1/quiz/list

To get list of Quiz

Query Parameters
  • category (string) – MIS/M&E/EPI/Finance/VMW/Education

  • candidate (string) – VMW/HC

Response as json:

{
    "code": 200,
    "message": "success",
    "data": [
        {
            "Rec_ID": 1,
            "Title": "ការរាយការអំពីជំងឺគ្រុនចាញ់",
            "Description": "រាយការតាមប្រពន្ទ",
            "Category": "MIS",
            "Candidate": "VMW"
        }
    ]
}

Quiz Question

GET /api-training/v1/quiz/questions

To get list of Questionaire.

Query Parameters
  • quiz_id (int) – Rec_Id of quiz

Response as json:

{
    "code": 200,
    "message": "success",
    "data": [
        {
            "QuestionID": 1,
            "Question": "តើមួយថ្ងៃមានប៊ុន្មានម៉ោង?",
            "Answers": [
                {
                    "Rec_ID": 1,
                    "Answer": "245h",
                    "IsCorrect": 1,
                    "QuestionID": 1
                },
                {
                    "Rec_ID": 2,
                    "Answer": "23h",
                    "IsCorrect": 1,
                    "QuestionID": 1
                },
                {
                    "Rec_ID": 3,
                    "Answer": "20h",
                    "IsCorrect": 0,
                    "QuestionID": 1
                },
                {
                    "Rec_ID": 4,
                    "Answer": "21h",
                    "IsCorrect": 0,
                    "QuestionID": 1
                }
            ]
        },
        {
            "QuestionID": 4,
            "Question": "តើមួយឆ្នាំមានប៊ុន្មានថ្ងៃ?",
            "Answers": [
                {
                    "Rec_ID": 13,
                    "Answer": "233",
                    "IsCorrect": 0,
                    "QuestionID": 4
                },
                {
                    "Rec_ID": 14,
                    "Answer": "365",
                    "IsCorrect": 1,
                    "QuestionID": 4
                },
                {
                    "Rec_ID": 15,
                    "Answer": "555",
                    "IsCorrect": 0,
                    "QuestionID": 4
                },
                {
                    "Rec_ID": 16,
                    "Answer": "55",
                    "IsCorrect": 0,
                    "QuestionID": 4
                }
            ]
        }
    ]
}
Object
  • IsCorrect (bit) – if it is a correct answer its value is 1 otherwise 0

  • Candidate (string) – OD/HC/VMW.

  • Category (string) – MIS/M&E/EPI/Finance/VMW/Education

Answer Question

POST /api-training/v1/quiz/answer_question

To answer the question of quiz.

Parse as json:

{
    "quiz_take" : {
        "QuizID":"1",
        "Code_Place":"010101",
        "TotalScore":10,
        "StartTime": "2022-03-04 10:10:00",
        "EndTime": "2022-03-04 10:14:00"
    },
    "answers": [
        {
            "QuestionID":"1",
            "AnswerID":"1"
        },
        {
            "QuestionID":"1",
            "AnswerID":"1"
        }
    ]
}

Profile

GET /api-training/v1/quiz/profile

To get profil and result.

Query Parameters
  • Code_Place (string) – Code of village / code of HF

Response as json:

{
    "code": 200,
    "message": "success",
    "data": [
        {
            "Code_Place": "010101",
            "Name_Place": "Serei Sophon RH",
            "QuizID": 1,
            "Title": "ការរាយការអំពីជំងឺគ្រុនចាញ់",
            "StartTime": "2022-03-04 10:10:00.000",
            "EndTime": "2022-03-04 10:14:00.000",
            "TotalScore": 10
        }
    ]
}

Comment

Comment List

GET api-training/v1/comment/list

List of comment of any material lesson

Query Parameters
  • code_place (string) – code of health facility / village code / name of CNM user

  • material_id (int) – rec_id of lesson.

Response as json:

{
    "code": 200,
    "message": "success",
    "data": [
        {
            "Rec_ID": 1,
            "Code_Place": "010102",
            "Text": "I don't know this one ",
            "Parent_ID": null,
            "Material_ID": 1,
            "IsRead": 0,
            "InitTime": "2022-03-18 00:00:00.000"
        },
        {
            "Rec_ID": 2,
            "Code_Place": "CNM",
            "Text": "I can explain you",
            "Parent_ID": 1,
            "Material_ID": 1,
            "IsRead": 0,
            "InitTime": "2022-03-18 00:00:00.000"
        },
        {
            "Rec_ID": 3,
            "Code_Place": "010102",
            "Text": "Hello",
            "Parent_ID": 1,
            "Material_ID": 1,
            "IsRead": 0,
            "InitTime": "2022-03-18 10:03:06.493"
        }
    ]
}

Send comment

POST api-training/v1/comment/send

Send comment

Parse as json:

{
    "message": {
        "Code_Place": "010102",
        "Text": "Hello",
        "Parent_ID": 1,
        "Material_ID": 1
    }
}
Object
  • Code_Place (int) – code of health facility / village code / name of CNM user.

Update status

POST api-training/v1/comment/update_status

Update read status

Parse as json:

{
    "Rec_ID": 1,
    "IsRead": 1
}
Object
  • Rec_ID (int) – Rec_ID of message.

  • IsRead (bit) – 0/1, if not yet read the value is 0 other wise is 1.