2
<%@ page import="java.sql.*,java.util.*,java.math.*" %>
3
<%@ page import="com.opensymphony.xwork.util.OgnlValueStack" %>
9
// For finding organisationunit name of selected Orgunit based on Orgunit id
13
// For finding child orgunit ids and names based on selected orgunit id
17
// For finding datavalues
21
// For finding PHC datavalues
25
// For finding BirthRate
29
String userName = "dhis";
31
String urlForConnection = "jdbc:mysql://localhost/gj_dhis2";
34
OgnlValueStack stack = (OgnlValueStack)request.getAttribute("webwork.valueStack");
36
String selectedId = (String) stack.findValue( "orgUnitId" );
37
int selectedOrgUnitID = Integer.parseInt( selectedId );
40
String startingDate = (String) stack.findValue( "startingPeriod" );
41
String endingDate = (String) stack.findValue( "endingPeriod" );
43
String monthlyPeriodId = (String) stack.findValue( "monthlyPeriodTypeId" );
44
int periodTypeID = Integer.parseInt( monthlyPeriodId );
47
String selectedOrgUnitName = "";
48
String selectedDataPeriodStartDate = "";
49
String selectedDataPeriodEndDate = "";
50
String lastDataPeriodStartDate = "";
53
List childOrgUnitIDs = new ArrayList();
54
List childOrgUnitNames = new ArrayList();
56
int childOrgUnitID = 0;
57
// String childOrgUnitName = "";
58
int childOrgUnitCount = 0;
60
double maxValue[] = new double[10];
61
double minValue[] = new double[10];
66
String maxOrgUnitName[] = new String[10];
67
String minOrgUnitName[] = new String[10];
74
// Pregnant Women Registered
77
// Early Registered ( < 12 weeks)
80
// ANC Received TT2 / Booster
83
// ANC Received full IFA course
92
double dataValues[][] = new double[25][DECodes.length];
93
double sumOfValues[] = new double[DECodes.length];
94
double PHCdataValues[] = new double[DECodes.length];
95
double PHCsumOfValues[] = new double[DECodes.length];
98
String monthNames[] = { "", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" };
99
String partsOfStartDate[] = startingDate.split("-");
100
String partsOfEndDate[] = endingDate.split("-");
104
double birthRate = 24.3;
107
String startingYear = "";
108
String endingYear = "";
111
int lastYear = Integer.parseInt(partsOfStartDate[0]) - 1;
112
int tempForMonth1 = Integer.parseInt(partsOfStartDate[1]);
114
if(tempForMonth1 < 4)
116
tempForYear = lastYear;
117
startingYear = ""+tempForYear+"-04-01";
118
endingYear = ""+(tempForYear+1)+"-03-20";
122
tempForYear = lastYear + 1;
123
startingYear = ""+tempForYear+"-04-01";
124
endingYear = ""+(tempForYear+1)+"-03-20";
127
int noOfMonths = ( 12 * ( Integer.parseInt(partsOfEndDate[1]) - Integer.parseInt(partsOfStartDate[1]) ) ) - Integer.parseInt(partsOfStartDate[1]) + Integer.parseInt(partsOfEndDate[1])+1;
136
Class.forName ("com.mysql.jdbc.Driver").newInstance ();
137
con = DriverManager.getConnection (urlForConnection, userName, password);
139
st1=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
140
st2=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
141
st3=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
142
st4=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
143
st5=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
146
//rs1 = st1.executeQuery("select shortname from organisationunit where id = "+selectedOrgUnitID);
147
rs1 = st1.executeQuery("SELECT shortname FROM organisationunit WHERE organisationunitid = "+selectedOrgUnitID);
148
if(rs1.next()) { selectedOrgUnitName = rs1.getString(1); }
150
//rs2 = st2.executeQuery("select id,shortname from organisationunit where parent = "+selectedOrgUnitID);
151
rs2 = st2.executeQuery("SELECT organisationunitid,shortname FROM organisationunit WHERE parentid = "+selectedOrgUnitID);
154
Integer tempInt = new Integer(rs2.getInt(1));
155
childOrgUnitIDs.add(childOrgUnitCount,tempInt);
156
childOrgUnitNames.add(childOrgUnitCount,rs2.getString(2));
161
// childOrgUnitID = rs2.getInt(1);
162
// childOrgUnitName = rs2.getString(2);
164
//rs5 = st5.executeQuery("SELECT sum(datavalue.value) FROM datavalue INNER JOIN dataelement ON datavalue.dataElement = dataelement.id WHERE datavalue.period in (select id from period where startdate like '"+startingYear+"' and enddate like '"+endingYear+"' and periodType=3) AND datavalue.source ="+selectedOrgUnitID+" AND dataelement.code in ("+DECodes[5]+")");
165
rs5 = st5.executeQuery("SELECT sum(datavalue.value) FROM datavalue INNER JOIN dataelement ON datavalue.dataelementid = dataelement.dataelementid WHERE datavalue.periodid in (select periodid from period where startdate like '"+startingYear+"' and enddate like '"+endingYear+"' and periodtypeid=3) AND datavalue.sourceid ="+selectedOrgUnitID+" AND dataelement.code in ("+DECodes[5]+")");
166
if(rs5.next()) { birthRate = rs5.getInt(1); }
167
if(birthRate==0) birthRate=24.3;
170
while(count < childOrgUnitCount)
172
Integer temp1 = (Integer) childOrgUnitIDs.get(count);
173
int currentChildID = temp1.intValue();
175
for(i=0;i<DECodes.length;i++)
177
//if(i==0) query = "SELECT sum(datavalue.value) FROM datavalue INNER JOIN dataelement ON datavalue.dataElement = dataelement.id WHERE datavalue.period in (select id from period where startdate like '"+startingYear+"' and enddate like '"+endingYear+"' and periodType=3) AND datavalue.source in (select id from organisationunit where id = "+currentChildID+" OR id in (select id from organisationunit where parent = "+currentChildID+") OR parent in (select id from organisationunit where parent = "+currentChildID+")) AND dataelement.code in ("+DECodes[i]+")";
178
//else query = "SELECT sum(datavalue.value) FROM datavalue INNER JOIN dataelement ON datavalue.dataElement = dataelement.id WHERE datavalue.period in (select id from period where startdate between '"+startingDate+"' and '"+endingDate+"') AND datavalue.source in (select id from organisationunit where id = "+currentChildID+" OR id in (select id from organisationunit where parent = "+currentChildID+") OR parent in (select id from organisationunit where parent = "+currentChildID+")) AND dataelement.code in ("+DECodes[i]+")";
179
if(i==0) query = "SELECT sum(datavalue.value) FROM datavalue INNER JOIN dataelement ON datavalue.dataelementid = dataelement.dataelementid WHERE datavalue.periodid in (select periodid from period where startdate like '"+startingYear+"' and enddate like '"+endingYear+"' and periodtypeid=3) AND datavalue.sourceid in (select organisationunitid from organisationunit where organisationunitid = "+currentChildID+" OR organisationunitid in (select organisationunitid from organisationunit where parentid = "+currentChildID+") OR parentid in (select organisationunitid from organisationunit where parentid = "+currentChildID+")) AND dataelement.code in ("+DECodes[i]+")";
180
else query = "SELECT sum(datavalue.value) FROM datavalue INNER JOIN dataelement ON datavalue.dataelementid = dataelement.dataelementid WHERE datavalue.periodid in (select periodid from period where startdate between '"+startingDate+"' and '"+endingDate+"') AND datavalue.sourceid in (select organisationunitid from organisationunit where organisationunitid = "+currentChildID+" OR organisationunitid in (select organisationunitid from organisationunit where parentid = "+currentChildID+") OR parentid in (select organisationunitid from organisationunit where parentid = "+currentChildID+")) AND dataelement.code in ("+DECodes[i]+")";
181
rs3 = st3.executeQuery(query);
189
double r = ((rs3.getInt(1) * birthRate)/1000 ) * 1.1;
190
r = (r / 12) * noOfMonths;
191
int decimalPlace = 3;
192
BigDecimal bd = new BigDecimal(r);
193
bd = bd.setScale(decimalPlace,BigDecimal.ROUND_UP);
194
r = bd.doubleValue();
196
dataValues[count][i] = r;
200
double r = ( rs3.getInt(1) / dataValues[count][0]) * 100;
201
int decimalPlace = 2;
202
BigDecimal bd = new BigDecimal(r);
203
bd = bd.setScale(decimalPlace,BigDecimal.ROUND_UP);
204
r = bd.doubleValue();
206
dataValues[count][i] = r;
209
catch(Exception e) { dataValues[count][i] = 0.0; }
211
// sumOfValues[i] += dataValues[count][i];
225
while(count < DECodes.length)
228
minValue[count] = dataValues[0][count];
229
maxValue[count] = dataValues[0][count];
231
minOrgUnitName[count] = "";
232
maxOrgUnitName[count] = "";
234
for(i=0;i<childOrgUnitCount;i++)
237
String childOrgUnitName = (String) childOrgUnitNames.get(i);
239
if( dataValues[i][count] > maxValue[count] ) { maxValue[count] = dataValues[i][count]; maxOrgUnitName[count] = childOrgUnitName; }
240
else if( dataValues[i][count] == maxValue[count] )
241
{ maxValue[count] = dataValues[i][count];
242
if (flag1==0) { maxOrgUnitName[count] = childOrgUnitName;flag1=1;}
243
else { maxOrgUnitName[count] += "<br>"+ childOrgUnitName; }
247
if( dataValues[i][count] < minValue[count] ) { minValue[count] = dataValues[i][count]; minOrgUnitName[count] = childOrgUnitName;}
248
else if( dataValues[i][count] == minValue[count])
249
{ minValue[count] = dataValues[i][count];
250
if (flag2==0) { minOrgUnitName[count] = childOrgUnitName;flag2=1;}
251
else { minOrgUnitName[count] += "<br>"+ childOrgUnitName;}
260
for(i=0;i<DECodes.length;i++)
262
//if(i==0) query = "SELECT sum(datavalue.value) FROM datavalue INNER JOIN dataelement ON datavalue.dataElement = dataelement.id WHERE datavalue.period in (select id from period where startdate like '"+startingYear+"' and enddate like '"+endingYear+"' and periodType=3) AND datavalue.source in (SELECT id from organisationunit WHERE id = "+selectedOrgUnitID+" OR id in (SELECT id FROM organisationunit WHERE id IN (SELECT id FROM organisationunit WHERE parent = "+selectedOrgUnitID+")) OR parent IN (SELECT id FROM organisationunit WHERE id IN (SELECT id FROM organisationunit WHERE parent = "+selectedOrgUnitID+")) OR id IN (SELECT id FROM organisationunit WHERE parent IN (SELECT id FROM organisationunit WHERE parent IN (SELECT id FROM organisationunit WHERE parent = "+selectedOrgUnitID+")))) AND dataelement.code in ("+DECodes[i]+")";
263
//else query = "SELECT sum(datavalue.value) FROM datavalue INNER JOIN dataelement ON datavalue.dataElement = dataelement.id WHERE datavalue.period in (select id from period where startdate between '"+startingDate+"' and '"+endingDate+"') AND datavalue.source in (SELECT id from organisationunit WHERE id = "+selectedOrgUnitID+" OR id in (SELECT id FROM organisationunit WHERE id IN (SELECT id FROM organisationunit WHERE parent = "+selectedOrgUnitID+")) OR parent IN (SELECT id FROM organisationunit WHERE id IN (SELECT id FROM organisationunit WHERE parent = "+selectedOrgUnitID+")) OR id IN (SELECT id FROM organisationunit WHERE parent IN (SELECT id FROM organisationunit WHERE parent IN (SELECT id FROM organisationunit WHERE parent = "+selectedOrgUnitID+")))) AND dataelement.code in ("+DECodes[i]+")";
264
if(i==0) query = "SELECT sum(datavalue.value) FROM datavalue INNER JOIN dataelement ON datavalue.dataelementid = dataelement.dataelementid WHERE datavalue.periodid in (select periodid from period where startdate like '"+startingYear+"' and enddate like '"+endingYear+"' and periodtypeid=3) AND datavalue.sourceid in (SELECT organisationunitid from organisationunit WHERE organisationunitid = "+selectedOrgUnitID+" OR organisationunitid in (SELECT organisationunitid FROM organisationunit WHERE organisationunitid IN (SELECT organisationunitid FROM organisationunit WHERE parentid = "+selectedOrgUnitID+")) OR parentid IN (SELECT organisationunitid FROM organisationunit WHERE organisationunitid IN (SELECT organisationunitid FROM organisationunit WHERE parentid = "+selectedOrgUnitID+")) OR organisationunitid IN (SELECT organisationunitid FROM organisationunit WHERE parentid IN (SELECT organisationunitid FROM organisationunit WHERE parentid IN (SELECT organisationunitid FROM organisationunit WHERE parentid = "+selectedOrgUnitID+")))) AND dataelement.code in ("+DECodes[i]+")";
265
else query = "SELECT sum(datavalue.value) FROM datavalue INNER JOIN dataelement ON datavalue.dataelementid = dataelement.dataelementid WHERE datavalue.periodid in (select periodid from period where startdate between '"+startingDate+"' and '"+endingDate+"') AND datavalue.sourceid in (SELECT organisationunitid from organisationunit WHERE organisationunitid = "+selectedOrgUnitID+" OR organisationunitid in (SELECT organisationunitid FROM organisationunit WHERE organisationunitid IN (SELECT organisationunitid FROM organisationunit WHERE parentid = "+selectedOrgUnitID+")) OR parentid IN (SELECT organisationunitid FROM organisationunit WHERE organisationunitid IN (SELECT organisationunitid FROM organisationunit WHERE parentid = "+selectedOrgUnitID+")) OR organisationunitid IN (SELECT organisationunitid FROM organisationunit WHERE parentid IN (SELECT organisationunitid FROM organisationunit WHERE parentid IN (SELECT organisationunitid FROM organisationunit WHERE parentid = "+selectedOrgUnitID+")))) AND dataelement.code in ("+DECodes[i]+")";
267
// if(i==0) query = "SELECT sum(datavalue.value) FROM datavalue INNER JOIN dataelement ON datavalue.dataElement = dataelement.id WHERE datavalue.period in (select id from period where startdate between '2006-04-01' and '2006-04-01') AND datavalue.source in (select id from organisationunit where id = "+selectedOrgUnitID+" OR id in (select id from organisationunit where parent = "+selectedOrgUnitID+") OR parent in (select id from organisationunit where parent = "+selectedOrgUnitID+")) AND dataelement.code in ("+DECodes[i]+")";
268
// else query = "SELECT sum(datavalue.value) FROM datavalue INNER JOIN dataelement ON datavalue.dataElement = dataelement.id WHERE datavalue.period in (select id from period where startdate between '"+startingDate+"' and '"+endingDate+"') AND datavalue.source in (select id from organisationunit where id = "+selectedOrgUnitID+" OR id in (select id from organisationunit where parent = "+selectedOrgUnitID+") OR parent in (select id from organisationunit where parent = "+selectedOrgUnitID+")) AND dataelement.code in ("+DECodes[i]+")";
269
rs4 = st4.executeQuery(query);
277
population = rs4.getInt(1);
278
double r = ((population * birthRate)/1000 ) * 1.1;
279
r = (r / 12) * noOfMonths;
280
int decimalPlace = 3;
281
BigDecimal bd = new BigDecimal(r);
282
bd = bd.setScale(decimalPlace,BigDecimal.ROUND_UP);
283
r = bd.doubleValue();
285
PHCdataValues[i] = r;
289
double r = ( rs4.getInt(1) / PHCdataValues[0]) * 100;
290
int decimalPlace = 2;
291
BigDecimal bd = new BigDecimal(r);
292
bd = bd.setScale(decimalPlace,BigDecimal.ROUND_UP);
293
r = bd.doubleValue();
295
PHCdataValues[i] = r;
298
catch(Exception e) { PHCdataValues[i] = 0.0; }
300
PHCsumOfValues[i] += PHCdataValues[i];
307
catch(Exception e) { out.println(e.getMessage()); }
312
if(rs1!=null) rs1.close(); if(st1!=null) st1.close();
313
if(rs2!=null) rs2.close(); if(st2!=null) st2.close();
314
if(rs3!=null) rs3.close(); if(st3!=null) st3.close();
315
if(rs4!=null) rs4.close(); if(st4!=null) st4.close();
316
if(rs5!=null) rs5.close(); if(st5!=null) st5.close();
318
if(con!=null) con.close();
320
catch(Exception e) { out.println(e.getMessage()); }
321
} // finally block end
328
<title>ANC Care</title>
332
<font face="arial" size="4"><b>ANC Care</b></font>
334
<table cellpadding="0" cellspacing="0" bgcolor="ffffff" align="center" style="border-style:solid; border-width:0; border-collapse: collapse; padding: 0; position:relative; top:10" bordercolor="#ffffff" width="100%" border="0">
335
<tr style="border-collapse: collapse; border-left-style: solid; border-left-width: 0; border-right-style: solid; border-right-width: 0; padding: 0" bordercolor="#111111" width="100%">
336
<td width="50%" style="border-collapse: collapse; border-left-style: solid; border-left-width: 0; border-right-style: solid; border-right-width: 0; padding-left:0; padding-right:0; padding-top:0; padding-bottom:0" bordercolor="#111111" height="23"><b><font face="Arial" size="2">Name of the District : <%=selectedOrgUnitName%></b></font></td>
337
<td width="50%" align="right" style="border-collapse: collapse; border-left-style: solid; border-left-width: 0; border-right-style: solid; border-right-width: 0; padding-left:15; padding-right:0; padding-top:0; padding-bottom:0" bordercolor="#111111" height="23"><font face="Arial" size="2"><b>Starting Period : <%=monthNames[Integer.parseInt(partsOfStartDate[1])]%> - <%=partsOfStartDate[0]%> </b></font></td>
339
<tr style="border-collapse: collapse; border-left-style: solid; border-left-width: 0; border-right-style: solid; border-right-width: 0; padding: 0" bordercolor="#111111" width="100%">
340
<td width="50%" style="border-collapse: collapse; border-left-style: solid; border-left-width: 0; border-right-style: solid; border-right-width: 0; padding-left:0; padding-right:0; padding-top:0; padding-bottom:0" bordercolor="#111111" height="23"><b><font face="Arial" size="2">Population : <%=population%></b></font></td>
341
<td width="50%" align="right" style="border-collapse: collapse; border-left-style: solid; border-left-width: 0; border-right-style: solid; border-right-width: 0; padding-left:15; padding-right:0; padding-top:0; padding-bottom:0" bordercolor="#111111" height="23"><font face="Arial" size="2"><b>Ending Period : <%=monthNames[Integer.parseInt(partsOfEndDate[1])]%> - <%=partsOfEndDate[0]%> </b></font></td>
346
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%">
348
<td width="14%" rowspan="2" align="center" height="50"><font face="arial" size="2"><b>Indicators</b></font></td>
349
<td width="10%" rowspan="2" align="center"><font face="arial" size="2"><b>Expected</b></font></td>
350
<td width="10%" rowspan="2" align="center"><font face="arial" size="2"><b>Workload Estimated (as % of Expected)</b></font></td>
351
<td width="10%" rowspan="2" align="center"><font face="arial" size="2"><b>% Workload Achieved</b></font></td>
352
<td width="56%" colspan="2" align="center"><font face="arial" size="2"><b>Taluka Performance Range</b></font></td>
355
<td width="28%" align="center"><font face="arial" size="2"><b>Maximum</b></font></td>
356
<td width="28%" align="center"><font face="arial" size="2"><b>Minimum</b></font></td>
359
<td width="14%" height="50"><font face="arial" size="2"><b>Pregnant Women Registered</b></font></td>
360
<td width="10%" align="center"><font face="arial" size="2"><b><%=PHCdataValues[0]%></b></font> </td>
361
<td width="10%" align="center"><font face="arial" size="2"><b>100.0</b></font></td>
362
<td width="10%" align="center"><font face="arial" size="2"><b><%=PHCdataValues[1]%></b></font> </td>
363
<td width="28%" align="center"><font face="arial" size="2"><b><%=maxOrgUnitName[1]%><br>(<%=maxValue[1]%>)</b></font> </td>
364
<td width="28%" align="center"><font face="arial" size="2"><b><%=minOrgUnitName[1]%><br>(<%=minValue[1]%>)</b></font> </td>
367
<td width="14%" height="50"><font face="arial" size="2"><b>Early Registered (< 12 weeks)</b></font></td>
368
<td width="10%" align="center"><font face="arial" size="2"><b><%=PHCdataValues[0]%></b></font> </td>
369
<td width="10%" align="center"><font face="arial" size="2"><b>100.0</b></font></td>
370
<td width="10%" align="center"><font face="arial" size="2"><b><%=PHCdataValues[2]%></b></font> </td>
371
<td width="28%" align="center"><font face="arial" size="2"><b><%=maxOrgUnitName[2]%><br>(<%=maxValue[2]%>)</b></font> </td>
372
<td width="28%" align="center"><font face="arial" size="2"><b><%=minOrgUnitName[2]%><br>(<%=minValue[2]%>)</b></font> </td>
375
<td width="20%" height="50"><font face="arial" size="2"><b>ANC received TT2/Booster</b></font></td>
376
<td width="10%" align="center"><font face="arial" size="2"><b><%=PHCdataValues[0]%></b></font> </td>
377
<td width="10%" align="center"><font face="arial" size="2"><b>100.0</b></font></td>
378
<td width="10%" align="center"><font face="arial" size="2"><b><%=PHCdataValues[3]%></b></font> </td>
379
<td width="25%" align="center"><font face="arial" size="2"><b><%=maxOrgUnitName[3]%><br>(<%=maxValue[3]%>)</b></font> </td>
380
<td width="25%" align="center"><font face="arial" size="2"><b><%=minOrgUnitName[3]%><br>(<%=minValue[3]%>)</b></font> </td>
383
<td width="20%" height="50"><font face="arial" size="2"><b>ANC received full IFA course</b></font></td>
384
<td width="10%" align="center"><font face="arial" size="2"><b><%=PHCdataValues[0]%></b></font> </td>
385
<td width="10%" align="center"><font face="arial" size="2"><b>100.0</b></font></td>
386
<td width="10%" align="center"><font face="arial" size="2"><b><%=PHCdataValues[4]%></b></font> </td>
387
<td width="25%" align="center"><font face="arial" size="2"><b><%=maxOrgUnitName[4]%><br>(<%=maxValue[4]%>)</b></font> </td>
388
<td width="25%" align="center"><font face="arial" size="2"><b><%=minOrgUnitName[4]%><br>(<%=minValue[4]%>)</b></font> </td>
394
<font face="arial" size="4"><b>Formulae</b></font>
395
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%">
397
<td width="20%" align="center" height="50"><font face="arial" size="2"><b>Indicators</b></font></td>
398
<td width="30%" align="center"><font face="arial" size="2"><b>Expected (In Thousands)</b></font></td>
399
<td width="50%" align="center"><font face="arial" size="2"><b>% Workload Achieved</b></font></td>
402
<td width="20%" height="50"><font face="arial" size="2"><b>Pregnant Women Registered</b></font></td>
403
<td width="30%" align="center"><font face="arial" size="2"><b> ( (Population * Birth Rate) / 1000 ) * 1.1 </b></font> </td>
404
<td width="50%" align="center"><font face="arial" size="2"><b>(Pregnant Women Total / Expected) * 100.0</b></font> </td>
407
<td width="20%" height="50"><font face="arial" size="2"><b>Early Registered (< 12 weeks)</b></font></td>
408
<td width="30%" align="center"><font face="arial" size="2"><b> ( (Population * Birth Rate) / 1000 ) * 1.1</b></font> </td>
409
<td width="50%" align="center"><font face="arial" size="2"><b>(Ante-Natal mothers registered within 1st trimester (within 12 weeks) / Expected) * 100.0</b></font> </td>
412
<td width="20%" height="50"><font face="arial" size="2"><b>ANC received TT2/Booster</b></font></td>
413
<td width="30%" align="center"><font face="arial" size="2"><b> ( (Population * Birth Rate) / 1000 ) * 1.1</b></font> </td>
414
<td width="50%" align="center"><font face="arial" size="2"><b>(Pregnant women given Tetanus Toxide(TT) 2nd dose Total / Expected) * 100.0</b></font> </td>
417
<td width="20%" height="50"><font face="arial" size="2"><b>ANC received full IFA course</b></font></td>
418
<td width="30%" align="center"><font face="arial" size="2"><b> ( (Population * Birth Rate) / 1000 ) * 1.1 </b></font> </td>
419
<td width="50%" align="center"><font face="arial" size="2"><b>(Pregnant women given 100 Iron Folic Acid (IFA) tablets Total / Expected) * 100.0</b></font> </td>
b'\\ No newline at end of file'