private  void fisher(String conceptId, HashMap conceptDictionary, HashMap a, HashMap g, HashMap e, HashMap i, boolean isPrivate) throws SQLException
	{

		String compareConceptId = "";
		String compareDictionaryId = "";
		String query = sql.getString("insertFisherStats");
		
		// Local variable declaration
		// *******************************************************************************************************************************************

		int a0 = 0;
		int g0 = 0;
		int e0 = 0;
		int i0 = 0;
		int b = 0;
		int c = 0;
		int d = 0;

		int bz = 0;
		int cz = 0;

		double ax = 0;
		double dx = 0;
		double cx = 0;
		double bx = 0;

		double oddsRatio = 0;
		double pValue = 0;
		double easeScore = 0;
		double kappa = 0;
		int aEase = 0;

		double[] val = new double[8];
		Vector values = new Vector();
		BigDecimal bd;

		// *******************************************************************************************************************************************

		Set set = a.entrySet();
		Iterator it = set.iterator();
		while (it.hasNext())
		{
			Map.Entry m = (Map.Entry) it.next();
			compareConceptId = (String)m.getKey();
			compareDictionaryId = (String)conceptDictionary.get(compareConceptId);
			a0 = (int) Double.parseDouble((String) a.get(compareConceptId));
			
			if (a0 > 1)
			{
				g0 = (int) Double.parseDouble((String) g.get(compareDictionaryId));
				e0 = (int) Double.parseDouble((String) e.get(compareConceptId));	
				i0 = (int) Double.parseDouble((String) i.get(compareDictionaryId));

				
				c = e0 - a0;
				b = g0 - a0;

				bz = b;
				cz = c;

				if (b < 1)
				{
					b = 1;
				}
				if (c < 1)
				{
					c = 1;
				}

				d = i0 - (a0 + b + c);

				if (d < 1)
				{
					d = 1;
				}

				ax = a0;
				dx = d;
				cx = c;
				bx = b;
				aEase = a0;

				oddsRatio = (ax * dx) / (bx * cx);
				bd = new BigDecimal(oddsRatio);
				bd = bd.setScale(2, BigDecimal.ROUND_UP);
				oddsRatio = bd.doubleValue();

				pValue = fisherExactTest.execute(a0, b, c, d);
				easeScore = fisherExactTest.execute((aEase - 1), b, c, d);
				kappa = kp.execute(a0, b, c, d);

				if (pValue < 1)
				{
					val = new double[10];
					val[0] = Double.parseDouble(conceptId);
					val[1] = Double.parseDouble(compareConceptId);
					val[2] = a0;
					val[3] = bz;
					val[4] = cz;
					val[5] = dx;
					val[6] = oddsRatio;
					val[7] = pValue;
					val[8] = easeScore;
					val[9] = kappa;
					values.add(val);
					

					if(isPrivate)
					{
						if(!conceptId.equals(compareConceptId))
						{
							val = new double[10];
							val[0] = Double.parseDouble(compareConceptId);
							val[1] = Double.parseDouble(conceptId);
							val[2] = a0;
							val[3] = bz;
							val[4] = cz;
							val[5] = dx;
							val[6] = oddsRatio;
							val[7] = pValue;
							val[8] = easeScore;
							val[9] = kappa;
							values.add(val);
						}
					}	
			    }	
			}
		}

		db.batchExecQuery(query, values);

	}