Welcome to MIS developer doc’s documentation!
Introduction

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
PHP Libraries
Frontend languages
Managing Databases
We use 2 databases
DB_MIS2
for real dataDB_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)
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 driveGit 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
Install
wget.exe
Go to Task Scheduler
Righ click on task area then click on Create New Task
Click on Actions
Click on New…
Click on Browse…> go to
wget.exe
(directory that installed wget.exe) > click on OpenIn 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
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 pagevmwGetPreData()
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 pagehfGetPreData()
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 pagemlGetPreData()
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 pageplGetPreData()
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 pagegetData()
we use store procedureSP_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 upgetDetail()
get detail of VMW follow updelete()
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 upgetDetail()
get detail of follow updelete()
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 reportgetDetail()
show detail of report by monthgetReport()
show report of HIS and MISupload()
upload excel file of HISdelete()
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 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
Trends in border areas
number of malaria case of border (Lao, Thailand, Vietnam)
Store procedure:
SP_Dashboard_BorderChart
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
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 timeline
Store procedure:
SP_V1_HFReportTimeline
HF Report Accuracy
Store procedure:
SP_V1_HFDataAccuracy
HF Report Received
Store procedure:
SP_V1_HFReportReceived
HF Data (By Village)
Data of HF sum by level of Province
, OD
, HF
, Village
Store procedure:
SP_V1_HFDataByVillage
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
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
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
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 pagegetData()
get data by reading json file that located inC:/MIS/Pivot Data
directoryexportExport()
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 pagegetData()
get data by reading from store procedureSP_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 pagegetList()
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 pagegetData()
get data to generate map by using store procedureSP_PvMap
.getDetail()
get detail of data by using store procedureSP_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
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" }
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
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" } ] }
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.
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.
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.
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
otherwise0
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" } ] }