~mortenoh/+junk/dhis2-detailed-import-export

« back to all changes in this revision

Viewing changes to local/in/dhis-web-reports/src/main/webapp/dhis-web-reports/Gujarat/gdeliverycare-p.jsp

  • Committer: larshelge at gmail
  • Date: 2009-03-03 16:46:36 UTC
  • Revision ID: larshelge@gmail.com-20090303164636-2sjlrquo7ib1gf7r
Initial check-in

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
<%@ page import="java.sql.*,java.util.*,java.math.*" %>
 
3
<%@ page import="com.opensymphony.xwork.util.OgnlValueStack" %>
 
4
 
 
5
<%
 
6
    Connection con=null;
 
7
            
 
8
 
 
9
    // For finding organisationunit name of selected Orgunit based on Orgunit id
 
10
    Statement st1=null;
 
11
    ResultSet rs1=null;
 
12
 
 
13
    // For finding child orgunit ids and names based on selected orgunit id
 
14
    Statement st2=null;
 
15
    ResultSet rs2=null;
 
16
    
 
17
    // For finding datavalues
 
18
    Statement st3=null;
 
19
    ResultSet rs3=null;
 
20
 
 
21
    // For finding PHC datavalues
 
22
    Statement st4=null;
 
23
    ResultSet rs4=null;
 
24
    
 
25
    // For finding BirthRate
 
26
    Statement st5=null;
 
27
    ResultSet rs5=null;
 
28
 
 
29
 
 
30
    String userName = "dhis";      
 
31
    String password = "";           
 
32
    String urlForConnection = "jdbc:mysql://localhost/gj_dhis2";
 
33
    
 
34
 
 
35
        OgnlValueStack stack = (OgnlValueStack)request.getAttribute("webwork.valueStack");
 
36
        
 
37
        String selectedId = (String) stack.findValue( "orgUnitId" );
 
38
        int selectedOrgUnitID = Integer.parseInt( selectedId );
 
39
        
 
40
  
 
41
        String startingDate  = (String) stack.findValue( "startingPeriod" );
 
42
        String endingDate  = (String) stack.findValue( "endingPeriod" );
 
43
      
 
44
        String monthlyPeriodId = (String) stack.findValue( "monthlyPeriodTypeId" );
 
45
        int periodTypeID = Integer.parseInt( monthlyPeriodId );
 
46
               
 
47
 
 
48
      
 
49
        String selectedOrgUnitName = "";
 
50
        String selectedDataPeriodStartDate = "";
 
51
    String selectedDataPeriodEndDate = "";
 
52
        String lastDataPeriodStartDate = "";
 
53
 
 
54
 
 
55
    List childOrgUnitIDs = new ArrayList();     
 
56
        List childOrgUnitNames = new ArrayList();       
 
57
 
 
58
        int childOrgUnitID = 0;
 
59
//      String childOrgUnitName = "";                   
 
60
        int childOrgUnitCount = 0; 
 
61
        
 
62
        double maxValue[] = new double[10];
 
63
        double minValue[] = new double[10];     
 
64
        int i = 0;
 
65
        
 
66
        double const1 = 1.1;
 
67
        
 
68
        String maxOrgUnitName[] = new String[10];       
 
69
        String minOrgUnitName[] = new String[10];
 
70
 
 
71
    
 
72
    String DECodes[] = {
 
73
                                                // Population
 
74
                                                "'SD_DE0007'",
 
75
                                                
 
76
                                                // Delivieries
 
77
                                                "'Form6_DE0057','Form6_DE0060','Form6_DE0063','Form6_DE0066','Form6_DE0069','Form6_DE0072','Form6_DE0075','Form6_DE0078'",
 
78
                                                
 
79
                                                // Institutional Deliveries
 
80
                                                "'Form6_DE0072','Form6_DE0075','Form6_DE0078','Form6_DE0069'",
 
81
                                                
 
82
                                                // Deliveries by Health Professional
 
83
                                                "'Form6_DE0057','Form6_DE0060','Form6_DE0063','Form6_DE0069','Form6_DE0072','Form6_DE0075','Form6_DE0078'",
 
84
                                                
 
85
                                                // 3 PostNatal Visits
 
86
                                                "'Form6_DE0204','Form6_DE0207'",
 
87
                                                
 
88
                                                // Birth Rate
 
89
                                                "'SD_DE0008'"
 
90
                                                
 
91
                                        };
 
92
 
 
93
        
 
94
        double dataValues[][] = new double[25][DECodes.length];
 
95
        double sumOfValues[] = new double[DECodes.length]; 
 
96
        double PHCdataValues[] = new double[DECodes.length]; 
 
97
        double PHCsumOfValues[] = new double[DECodes.length]; 
 
98
 
 
99
        
 
100
        String monthNames[] = { "", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" };            
 
101
        String partsOfStartDate[] = startingDate.split("-");
 
102
        String partsOfEndDate[] = endingDate.split("-");
 
103
 
 
104
        String query = "";
 
105
        
 
106
        double birthRate = 24.3;
 
107
        int population = 0;
 
108
 
 
109
        String startingYear = "";
 
110
        String endingYear = "";
 
111
        
 
112
        
 
113
     int lastYear = Integer.parseInt(partsOfStartDate[0]) - 1;
 
114
     int tempForMonth1 = Integer.parseInt(partsOfStartDate[1]);
 
115
     int tempForYear = 0;
 
116
     if(tempForMonth1 < 4)
 
117
        {   
 
118
                tempForYear = lastYear;
 
119
                startingYear = ""+tempForYear+"-04-01";
 
120
                        endingYear = ""+(tempForYear+1)+"-03-20";                       
 
121
        }
 
122
     else  
 
123
       {   
 
124
                tempForYear = lastYear + 1;     
 
125
                startingYear = ""+tempForYear+"-04-01";
 
126
                        endingYear = ""+(tempForYear+1)+"-03-20";               
 
127
        }
 
128
 
 
129
        int noOfMonths = ( 12 * ( Integer.parseInt(partsOfEndDate[1]) - Integer.parseInt(partsOfStartDate[1]) ) ) - Integer.parseInt(partsOfStartDate[1]) + Integer.parseInt(partsOfEndDate[1])+1;
 
130
 
 
131
 
 
132
%>
 
133
 
 
134
<%
 
135
                                                                           
 
136
       
 
137
     try
 
138
      {
 
139
        Class.forName ("com.mysql.jdbc.Driver").newInstance ();
 
140
        con = DriverManager.getConnection (urlForConnection, userName, password);
 
141
        
 
142
        st1=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
 
143
        st2=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
 
144
        st3=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
 
145
                st4=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
 
146
                st5=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
 
147
 
 
148
        
 
149
        //rs1 = st1.executeQuery("select shortname from organisationunit where id = "+selectedOrgUnitID);
 
150
        rs1 = st1.executeQuery("select shortname from organisationunit where organisationunitid = "+selectedOrgUnitID);
 
151
        if(rs1.next()) { selectedOrgUnitName = rs1.getString(1); }
 
152
        
 
153
            //rs2 =  st2.executeQuery("select id,shortname from organisationunit where parent = "+selectedOrgUnitID);
 
154
            rs2 =  st2.executeQuery("select organisationunitid,shortname from organisationunit where parentid = "+selectedOrgUnitID);
 
155
            while(rs2.next())
 
156
                 {
 
157
                        Integer tempInt = new Integer(rs2.getInt(1));
 
158
                        childOrgUnitIDs.add(childOrgUnitCount,tempInt);                 
 
159
                        childOrgUnitNames.add(childOrgUnitCount,rs2.getString(2));
 
160
                        
 
161
                        childOrgUnitCount++;
 
162
                 } // while loop end                            
 
163
                        
 
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 in ( select parent from organisationunit where id in ( select parent from organisationunit where id = "+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 in ( select parentid from organisationunit where organisationunitid in ( select parentid from organisationunit where organisationunitid = "+selectedOrgUnitID+"))  AND dataelement.code in ("+DECodes[5]+")");
 
166
                if(rs5.next()) { birthRate = rs5.getInt(1); }
 
167
                if(birthRate==0) birthRate=24.3;
 
168
 
 
169
                int count = 0;
 
170
                while(count < childOrgUnitCount)
 
171
                 {      
 
172
                        Integer temp1 = (Integer) childOrgUnitIDs.get(count);
 
173
                        int currentChildID = temp1.intValue();                  
 
174
                                                                        
 
175
                        for(i=0;i<DECodes.length;i++)
 
176
                         {
 
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 ="+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 ="+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 ="+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 ="+currentChildID+"  AND dataelement.code in ("+DECodes[i]+")";
 
181
                           rs3 = st3.executeQuery(query);
 
182
                           
 
183
                           if(rs3.next())  
 
184
                                {
 
185
                                                try
 
186
                                                 {
 
187
                                                        if(i==0) 
 
188
                                                           { 
 
189
                                                                        double r = ((rs3.getInt(1)  * birthRate)/1000 ) ;       
 
190
                                                                                r = (r / 12) * noOfMonths;
 
191
                                                                                int decimalPlace = 2;
 
192
                                                                                BigDecimal bd = new BigDecimal(r);
 
193
                                                                                bd = bd.setScale(decimalPlace,BigDecimal.ROUND_UP);
 
194
                                                                                r = bd.doubleValue();           
 
195
                                                                        
 
196
                                                                        dataValues[count][i] = r;                                                                                                                                                                             
 
197
                                                            }  
 
198
                                                        else 
 
199
                                                          {
 
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();           
 
205
                                                                                                                    
 
206
                                                                        dataValues[count][i] = r;       
 
207
                                                           } 
 
208
                                                 }
 
209
                                                catch(Exception e) { dataValues[count][i] = 0.0; }      
 
210
                                                
 
211
                                        //      sumOfValues[i] +=  dataValues[count][i];                                                
 
212
                                        }       
 
213
                                        
 
214
                         } // for loop end                      
 
215
                                         
 
216
                        count++;                                                        
 
217
                 } // while loop end
 
218
 
 
219
 
 
220
 
 
221
                count = 1;
 
222
                int flag1 = 0;
 
223
                int flag2 = 0;
 
224
                
 
225
                while(count < DECodes.length)
 
226
                 {      
 
227
                
 
228
                        minValue[count] = dataValues[0][count];
 
229
                        maxValue[count] = dataValues[0][count]; 
 
230
                        
 
231
                        minOrgUnitName[count] = "";
 
232
                        maxOrgUnitName[count] = "";
 
233
                                                                        
 
234
                        for(i=0;i<childOrgUnitCount;i++)
 
235
                         {
 
236
                         
 
237
                                String  childOrgUnitName = (String) childOrgUnitNames.get(i);
 
238
                                                                                                
 
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; }
 
244
                                        }  
 
245
                          
 
246
 
 
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;}
 
252
                                                }
 
253
 
 
254
                                                                
 
255
                         } // for loop end                      
 
256
                        count++;                                                        
 
257
                 } // while loop end
 
258
 
 
259
 
 
260
                for(i=0;i<DECodes.length;i++)
 
261
                         {
 
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 parent ="+selectedOrgUnitID+" OR id ="+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 parent ="+selectedOrgUnitID+" OR id ="+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 parentid ="+selectedOrgUnitID+" OR organisationunitid ="+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 parentid ="+selectedOrgUnitID+" OR organisationunitid ="+selectedOrgUnitID+")  AND dataelement.code in ("+DECodes[i]+")";
 
266
                           rs4 = st4.executeQuery(query);
 
267
                           
 
268
                           if(rs4.next())  
 
269
                                {
 
270
                                                try
 
271
                                                 {
 
272
                                                        if(i==0) 
 
273
                                                           {                                                                  
 
274
                                                                population = rs4.getInt(1);
 
275
                                                                double r = ((population * birthRate)/1000 ) ;   
 
276
                                                                        r = (r / 12) * noOfMonths;
 
277
                                                                        int decimalPlace = 2;
 
278
                                                                        BigDecimal bd = new BigDecimal(r);
 
279
                                                                        bd = bd.setScale(decimalPlace,BigDecimal.ROUND_UP);
 
280
                                                                        r = bd.doubleValue();           
 
281
 
 
282
                                                                PHCdataValues[i] = r;                                                                                                                                                                                 
 
283
                                                            }  
 
284
                                                        else 
 
285
                                                          {
 
286
                                                                double r = ( rs4.getInt(1) / PHCdataValues[0]) * 100;   
 
287
                                                                        int decimalPlace = 2;
 
288
                                                                        BigDecimal bd = new BigDecimal(r);
 
289
                                                                        bd = bd.setScale(decimalPlace,BigDecimal.ROUND_UP);
 
290
                                                                        r = bd.doubleValue();           
 
291
 
 
292
                                                                PHCdataValues[i] = r;   
 
293
                                                           } 
 
294
                                                 }
 
295
                                                catch(Exception e) { PHCdataValues[i] = 0.0; }  
 
296
                                                
 
297
                                                PHCsumOfValues[i] +=  PHCdataValues[i];
 
298
                                                
 
299
                                        }       
 
300
                         } // for loop end                      
 
301
 
 
302
                                                        
 
303
         } // try block end
 
304
    catch(Exception e)  { out.println(e.getMessage());  }
 
305
        finally
 
306
                 {
 
307
                        try
 
308
                         {
 
309
                                if(rs1!=null)  rs1.close();             if(st1!=null)  st1.close();
 
310
                                if(rs2!=null)  rs2.close();             if(st2!=null)  st2.close();
 
311
                                if(rs3!=null)  rs3.close();             if(st3!=null)  st3.close();
 
312
                                if(rs4!=null)  rs4.close();             if(st4!=null)  st4.close();
 
313
                                if(rs5!=null)  rs5.close();             if(st5!=null)  st5.close();
 
314
 
 
315
 
 
316
                                if(con!=null)  con.close();
 
317
                         }
 
318
                        catch(Exception e)   {  out.println(e.getMessage());   }
 
319
                 } // finally block end                                 
 
320
 
 
321
%>
 
322
 
 
323
 
 
324
<html>
 
325
<head>
 
326
        <title>Delivery Care</title>
 
327
</head>
 
328
<body>
 
329
        <br><br>
 
330
        <font face="arial" size="4"><b>Delivery Care</b></font>
 
331
        <br><br>
 
332
         <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">
 
333
                        <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%">
 
334
                                <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 PHC&nbsp;:&nbsp;&nbsp;<%=selectedOrgUnitName%></b></font></td>
 
335
                                <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 :&nbsp;&nbsp;<%=monthNames[Integer.parseInt(partsOfStartDate[1])]%> - <%=partsOfStartDate[0]%> </b></font></td>   
 
336
                        </tr>
 
337
                        <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%">
 
338
                                <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&nbsp;:&nbsp;&nbsp;<%=population%></b></font></td>
 
339
                                <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 :&nbsp;&nbsp;<%=monthNames[Integer.parseInt(partsOfEndDate[1])]%> - <%=partsOfEndDate[0]%> </b></font></td>   
 
340
                        </tr>
 
341
 
 
342
                </table>
 
343
                                        
 
344
                <br>
 
345
                <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%">
 
346
                <tr>
 
347
                        <td width="14%" rowspan="2" align="center" height="50"><font face="arial" size="2"><b>Indicators</b></font></td>
 
348
                        <td width="10%" rowspan="2" align="center"><font face="arial" size="2"><b>Expected (In Thousands)</b></font></td>
 
349
                        <td width="10%" rowspan="2" align="center"><font face="arial" size="2"><b>Workload Estimated (as % of Expected)</b></font></td>
 
350
                        <td width="10%" rowspan="2" align="center"><font face="arial" size="2"><b>% Workload Achieved</b></font></td>
 
351
                        <td width="56%" colspan="2" align="center"><font face="arial" size="2"><b>Sub-Centre Performance Range</b></font></td>
 
352
                </tr>
 
353
                <tr>
 
354
                        <td width="28%" align="center"><font face="arial" size="2"><b>Maximum</b></font></td>
 
355
                        <td width="28%" align="center"><font face="arial" size="2"><b>Minimum</b></font></td>
 
356
                </tr>
 
357
                <tr>
 
358
                        <td width="14%" height="50"><font face="arial" size="2"><b>
 
359
                Deliveries</b></font></td>
 
360
                        <td width="10%" align="center"><font face="arial" size="2"><b><%=PHCdataValues[0]%></b></font>&nbsp;</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>&nbsp;</td>
 
363
                        <td width="28%" align="center"><font face="arial" size="2"><b><%=maxOrgUnitName[1]%><br>(<%=maxValue[1]%>)</b></font>&nbsp;</td>
 
364
                        <td width="28%" align="center"><font face="arial" size="2"><b><%=minOrgUnitName[1]%><br>(<%=minValue[1]%>)</b></font>&nbsp;</td>
 
365
                </tr>
 
366
                <tr>
 
367
                        <td width="14%" height="50"><b><font face="arial" size="2">
 
368
                Institutional Deliveries</font></b></td>
 
369
                        <td width="10%" align="center"><font face="arial" size="2"><b><%=PHCdataValues[0]%></b></font>&nbsp;</td>
 
370
                        <td width="10%" align="center"><font face="arial" size="2"><b>100.0</b></font></td>
 
371
                        <td width="10%" align="center"><font face="arial" size="2"><b><%=PHCdataValues[2]%></b></font>&nbsp;</td>
 
372
                        <td width="28%" align="center"><font face="arial" size="2"><b><%=maxOrgUnitName[2]%><br>(<%=maxValue[2]%>)</b></font>&nbsp;</td>
 
373
                        <td width="28%" align="center"><font face="arial" size="2"><b><%=minOrgUnitName[2]%><br>(<%=minValue[2]%>)</b></font>&nbsp;</td>
 
374
                </tr>
 
375
                <tr>
 
376
                        <td width="20%" height="50"><b><font face="arial" size="2">
 
377
                Deliveries by Health Professional</font></b></td>
 
378
                        <td width="10%" align="center"><font face="arial" size="2"><b><%=PHCdataValues[0]%></b></font>&nbsp;</td>
 
379
                        <td width="10%" align="center"><font face="arial" size="2"><b>100.0</b></font></td>
 
380
                        <td width="10%" align="center"><font face="arial" size="2"><b><%=PHCdataValues[3]%></b></font>&nbsp;</td>
 
381
                        <td width="25%" align="center"><font face="arial" size="2"><b><%=maxOrgUnitName[3]%><br>(<%=maxValue[3]%>)</b></font>&nbsp;</td>
 
382
                        <td width="25%" align="center"><font face="arial" size="2"><b><%=minOrgUnitName[3]%><br>(<%=minValue[3]%>)</b></font>&nbsp;</td>
 
383
                </tr>
 
384
                <tr>
 
385
                        <td width="20%" height="50"><b><font face="arial" size="2">3 
 
386
                Postnatal Visits</font></b></td>
 
387
                        <td width="10%" align="center"><font face="arial" size="2"><b><%=PHCdataValues[0]%></b></font>&nbsp;</td>
 
388
                        <td width="10%" align="center"><font face="arial" size="2"><b>100.0</b></font></td>
 
389
                        <td width="10%" align="center"><font face="arial" size="2"><b><%=PHCdataValues[4]%></b></font>&nbsp;</td>
 
390
                        <td width="25%" align="center"><font face="arial" size="2"><b><%=maxOrgUnitName[4]%><br>(<%=maxValue[4]%>)</b></font>&nbsp;</td>
 
391
                        <td width="25%" align="center"><font face="arial" size="2"><b><%=minOrgUnitName[4]%><br>(<%=minValue[4]%>)</b></font>&nbsp;</td>
 
392
                </tr>
 
393
                </table>   
 
394
                
 
395
                
 
396
                <br><br>
 
397
                <font face="arial" size="4"><b>Formulae</b></font>
 
398
                <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%">
 
399
                <tr>
 
400
                        <td width="20%" align="center" height="50"><font face="arial" size="2"><b>Indicators</b></font></td>
 
401
                        <td width="30%" align="center"><font face="arial" size="2"><b>Expected (In Thousands)</b></font></td>
 
402
                        <td width="50%" align="center"><font face="arial" size="2"><b>% Workload Achieved</b></font></td>
 
403
                </tr>
 
404
                <tr>
 
405
                        <td width="20%" height="50"><b><font face="arial" size="2">
 
406
                Deliveries</font></b></td>
 
407
                        <td width="30%" align="center"><font face="arial" size="2"><b>  (Population * Birth Rate) / 1000   </b></font>&nbsp;</td>
 
408
                        <td width="50%" align="center"><font face="arial" size="2"><b>(DataElement For Deliveries / Expected) * 100.0</b></font>&nbsp;</td>
 
409
                </tr>
 
410
                <tr>
 
411
                        <td width="20%"  height="50"><b><font face="arial" size="2">
 
412
                Institutional Deliveries</font></b></td>
 
413
                        <td width="30%" align="center"><font face="arial" size="2"><b>  (Population * Birth Rate) / 1000  </b></font>&nbsp;</td>
 
414
                        <td width="50%" align="center"><font face="arial" size="2"><b>(DataElement For Institutional Deliveries / Expected) * 100.0</b></font>&nbsp;</td>
 
415
                </tr>
 
416
                <tr>
 
417
                        <td width="20%"  height="50"><b><font face="arial" size="2">
 
418
                Deliveries by Health Professional</font></b></td>
 
419
                        <td width="30%" align="center"><font face="arial" size="2"><b>  (Population * Birth Rate) / 1000  </b></font>&nbsp;</td>
 
420
                        <td width="50%" align="center"><font face="arial" size="2"><b>(DataElement For Deliveries by Health Professional / Expected) * 100.0</b></font>&nbsp;</td>
 
421
                </tr>
 
422
                <tr>
 
423
                        <td width="20%"  height="50"><b><font face="arial" size="2">3 
 
424
                Postnatal Visits</font></b></td>
 
425
                        <td width="30%" align="center"><font face="arial" size="2"><b>   (Population * Birth Rate) / 1000   </b></font>&nbsp;</td>
 
426
                        <td width="50%" align="center"><font face="arial" size="2"><b>(DataElement For 3 PostNatal Visits / Expected) * 100.0</b></font>&nbsp;</td>
 
427
                </tr>
 
428
                </table>   
 
429
 
 
430
                <br>
 
431
                <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%">
 
432
                <tr>
 
433
                        <td width="20%" height="50" ><font face="arial" size="2"><b>Numerator For Deliveries : ( Home Deliveries by Doctor + ANM/Nurses/Health Worker + Trained Birth Attendant + Untrained Dai) <br>
 
434
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 
435
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 
436
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 
437
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+<br>
 
438
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 
439
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 
440
                        ( Deliveries at Public Institutions + Sub-Centre + Facilities covered under Public Private Partnership + Other Private/NGO and Charitable Hospitals)</b></font></td>
 
441
                </tr>
 
442
                <tr>
 
443
                        <td width="20%"  height="50"><font face="arial" size="2"><b>Numerator for Institutional Deliveries : Deliveries at Public Institutions + Sub-Centre + Facilities covered under Public Private Partnership + Other Private/NGO and Charitable Hospitals</b></font></td>
 
444
                </tr>
 
445
                <tr>
 
446
                        <td width="20%"  height="50"><font face="arial" size="2"><b>Numerator for Deliveries by Health Professional : ( Home Deliveries by Doctor + ANM/Nurses/Health Worker + Trained Birth Attendant ) <br>
 
447
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 
448
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 
449
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 
450
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+<br>
 
451
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 
452
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 
453
                        ( Deliveries at Public Institutions + Sub-Centre + Facilities covered under Public Private Partnership + Other Private/NGO and Charitable Hospitals)</b></font></td>
 
454
                </tr>
 
455
                <tr>
 
456
                        <td width="20%"  height="50"><font face="arial" size="2"><b>Numerator for 3 PostNatal Visits : Third PostNatal Visit between 11 to 14 days Total</b></font></td>
 
457
                </tr>
 
458
                </table>   
 
459
 
 
460
 
 
461
        </body>
 
462
</html>
 
 
b'\\ No newline at end of file'