AFI Dashboard - Design & Development

This data dashboard was set up for the Chikitsa Sahayta Kendra project in Odisha, India.

The Chikitsa Sahayta Kendra project (Health Outreach Center) in tribal villages of Odisha is using a comprehensive care delivery model to identify, treat and manage patients with high-quality care for primary health conditions through technology. The project, implemented by Arogya Foundation of India, aims at improving geographic and financial access to health care services to the patients in low-resource setting. The intervention is implemented in 44 remote villages in Pallahara block, in Angul District, Odisha. A total of 3 community health workers called Arogya Sanyojikas are provided with mobiles and telemedicine kits to facilitate teleconsults, counselling and referrals with 3 remote doctors. These CHWs are supported by 44 community volunteers, called Arogya Sevikas, who support them in screening, follow-up and tracking patient health improvement. Learn more about the project here.

AFI dashboard consists of 3 tabs:

  1. Output Indicators

  2. Process Indicators

  3. Clinical Indicators

The entire data on the dashboard can sliced & diced on the basis of:

  • Year

  • Month

The details about the various charts incorporated in the dashboard are hereby given:

Sr. No.

Tab

Chart Name

Visualization Type

Datasource

Filter Conditions

Grouping

Metrices

Additional Settings

1

Output Indicators

Dashboard Filters

Filter Box

person_attribute

voided = 0

 

count(person_attribute_id)

Filter Control - Year, Month

2

Output Indicators

Total Visits

Big Number

visit

voided = 0

 

count(visit_id)

Number format = 0.4r

3

Output Indicators

Followup Visits

Big Number

obs

voided = 0
concept_id = 163212
SUBSTRING_INDEX(SUBSTRING(LEFT(value_text,40),5),'</b>',1) = 'Follow up visit'

 

count(*)

Number format = 0.3s

4

Output Indicators

Hypertension screening & Followup

Big Number

obs

voided = 0
concept_id = 163212
SUBSTRING_INDEX(SUBSTRING(LEFT(value_text,50),5),'</b>',1) in ('Hypertension screening and checkup','Hypertension follow up')
location_id <> 2

 

count(*)

Number format = 0.3s

5

Output Indicators

Visit Trend

Time Pivot

visit

voided = 0

 

count(visit_id)

Time Column - date_created
Time Grain - Month
Frequency - Year
Y axis format - 0.4r
Y axis label - Number of Visits
X axis label - Months

6

Output Indicators

Patient Registration

Time Pivot

patient_identifier

voided = 0

 

count(*)

Time Column - date_created
Time Grain - Month
Frequency - Year
Y axis format - 0.3s
Y axis label - Number of Patients
X axis label - Months

7

Output Indicators

Gender wise Patient Distribution

Partition

Patient_Personal

 

Gender

count_distinct(patient_id)

Number format = 0.4r

8

Output Indicators

Age Wise Patient Distribution

Distributed Bar

Patient_Personal

 

AGEGRP

count_distinct(patient_id)

Time Column - date_created
Time Grain - Month
Bar Values - Y, Sort Bars - Y
Y axis format - 0.3s
Y axis label - Number of Patients
X axis label - Age Group

9

Output Indicators

Patient - Social Status

Pie

Patient_Personal

person_attribute_type_id = 11

Value

count_distinct(patient_id)

Donut - Y
Label Type - Category & Percentage
Legend - T
Show label - Y

10

Output Indicators

Patient - Economic Status

Pie

Patient_Personal

person_attribute_type_id = 12

Value

count_distinct(patient_id)

Donut - Y
Label Type - Category & Percentage
Legend - T
Show label - Y

11

Output Indicators

Patient - Education Level

Pie

Patient_Personal

person_attribute_type_id = 13

Value

count_distinct(patient_id)

Donut - Y
Label Type - Category & Percentage
Legend - T
Show label - Y

12

Output Indicators

Average Patient Experience

Time Pivot

PatientExperience

 

 

SUM(Weight)/SUM(PAT_WT)

Time Column - LASTDATE
Time Grain - Month
Frequency - Year
Y axis format - 0.3s
Y axis label - Experience Score
X axis label - Months

13

Output Indicators

Patient Experience Comments

Pivot Table

obs

voided = 0
concept_id = 163344

Value

count_distinct(person_id)

 

14

Output Indicators

Top 10 Symptoms

Distributed Bar

obs

voided = 0
concept_id = 163212

symptoms

count(symptoms)

Bar Values = Y
Y axis label - Number of Patients
X axis label - Symptoms

15

Output Indicators

Diagnosis Provided by Doctor

Table

obs

voided = 0
concept_id = 163219

Value

count(obs_id)

 

16

Output Indicators

Doctor Average TAT

Time Pivot

DoctorAvgTAT

 

 

SUM(TotalMin)+SUM(HRS)

Time Column - LastDay
Time Grain - Month
Frequency - Year
Y axis format - 0.4r
Y axis label - Turnaround Time (In HRS)
X axis label - Months

17

Process Indicators

Patient Registration Trend

Big Number with trendline

patient_identifier

voided = 0

 

count_distinct(patient_id)

Time Column - date_created
Time Grain - Month
Number format - 0.3s
Show Trend Line - Y

18

Process Indicators

Clinis Wise Distribution

Time Stacked Area

Patient_Personal

name <> Remote

name

count_distinct(patient_id)

X axis label - Clinic wise Patient Distribution
Y axis format - 0.3s
Legend - Y

19

Process Indicators

Patient Distribution - Villagewise

Treemap

AFI_Village_Data

 

village

sum(patients)

Number Format - 0.4r

20

Process Indicators

Consultation Time (in Mins) by Health Worker

Distributed Bar

ConsultationTimeByHW

 

MonYear

count(Time_Group)

Breakdown - Time_Group
X axis label - Months
Y axis label - Visits
Legend - Y, Stacked Bars - Y, Sort Bars - Y
Y axis format - 0.3s

21

Process Indicators

Patient Experience

Distributed Bar

PatientExperience

 

MonYear

sum(patients)

Breakdown - Value_Text
X axis label - Months
Y axis label - Number of Patients
Legend - Y, Stacked Bars - Y, Sort Bars - Y
Y axis format - 0.3s

22

Process Indicators

Hour Wise Distribution

Distributed Bar

encounter

voided = 0
encounter_type = 1

Hour

count(patient_id)

X axis label - Hour of the Day
Y axis label - Number of Patients
Stacked Bars - Y, Sort Bars - Y
Y axis format - 0.3s

23

Process Indicators

Patient Registered Per Day

Calendar Heat

patient_identifier

voided = 0

 

count(patient_id)

Domain - month, Subdomain - day
Time Range - Last Quarter
Show Values - Y, Number Format - 0.3s
Time format - %d%m%Y | 14/01/2019
color step - 4, cell size - 30

24

Clinical Indicators

Doctor Wise Distribution

Time Stacked Area

Doctorwisedistribution

username is not null
Doctor <> Dr.Smith

Doctor

count_distinct(patients)

Time Column - Last_Date
Time Grain - day
X axis label - Month
Y axis format - 0.3s
Legend - Y

25

Clinical Indicators

Doctor Patient Interaction

Distributed Bar

visit_attribute

voided = 0

MonYear

count(*)

Breakdown - value_reference
X axis label - Months
Y axis label - Visits
Stacked Bars - Y, Legend - Y, Bar Values - Y
Sort Bars - Y, Y axis format - 0.3s

26

Clinical Indicators

Percentage Patients Seen By Doctor

Pie

PercentagePatientsSeenByDoctor

 

Diagnosis

sum(patients)

Legend - Y, Show Labels - Y
Label Type- Category & Percentage

27

Clinical Indicators

All Symptoms Distribution

Treemap

obs

voided =0
concept_id = 163212
Year <> 2017

symptoms

count_distinct(person_id)

Ratio - 1.1, Number format - 0.4r

28

Clinical Indicators

TAT Per Doctor

Table

TATPerDoctor

 

Year
Month
Doctor

max(TAT)
sum(total)

Doctor not in (Dr.Smith, Dr. User)