About Health Care Indices At This Website

This section is based on surveys from visitors of this website. Questions for these surveys are similar to many similar scientific and government surveys.

Each entry in the survey is saved as the number in the range [-2, +2], with -2 having meaning of strongly negative and +2 meaning of strongly positive.

We filter surveys to eliminate potential spam, like people entering a large amount of data which are differentiating from the median value.

To present survey result, we use the scale [0, 100] for values since it is easier to read for users.

To generate a current index (which is always updated) we use data up to 36 months old. We include only cities for which there are at least a certain number of contributors. Our semiannual index is remade twice per year by pushing current index into this historical view.

Health Care Index is an estimation of the overall quality of the health care system, health care professionals, equipment, staff, doctors, cost, etc.

Health Care Exp Index - is aiming to show health care index such that it raises MORE (exponentially) if the health care system is of better quality. It is similar to a health care index, but it raises more exponentially.

Actual formulas to calculate indices are subject to change. At this moment, quite complex empirical formulas are used. Those formulas as written in Java programming language are as follows:

  //assumes all input values are in the range [-2 , 2], where -2 means very low and 2 means very high
  protected void calculateIndex() {
    index = new HealthCareIndex();
    double overall = 0.0;
    overall += getIndexPartPreCalc(skill_and_competency);
    overall += getIndexPartPreCalc(speed);
    overall += getIndexPartPreCalc(modern_equipment);
    overall += getIndexPartPreCalc(accuracy_and_completeness);
    overall += getIndexPartPreCalc(friendliness_and_courtesy);
    overall += getIndexPartPreCalc(responsiveness_waitings);
    overall += getIndexPartPreCalc(location);
    overall += 2 * getIndexPartPreCalc(cost);
    index.main = overall / 9;

    double expScale = 0.0;
    expScale += getIndexPartPreCalcExpScaleStandard(skill_and_competency);
    expScale += getIndexPartPreCalcExpScaleStandard(speed);
    expScale += getIndexPartPreCalcExpScaleStandard(modern_equipment);
    expScale += getIndexPartPreCalcExpScaleStandard(accuracy_and_completeness);
    expScale += getIndexPartPreCalcExpScaleStandard(friendliness_and_courtesy);
    expScale += getIndexPartPreCalcExpScaleStandard(responsiveness_waitings);
    expScale += getIndexPartPreCalcExpScaleStandard(location);
    expScale += 2 * getIndexPartPreCalcExpScaleStandard(cost);
    index.exp = calcScaleStandardIndexFromSum(expScale, 9);

  protected double getIndexPartPreCalc(double internalValue) {
    return (internalValue + 2) * 25;

  protected double getIndexPartPreCalcExpScaleStandard(double internalValue) {
    return getIndexPartPreCalcExpScale(internalValue, Math.E);

  protected double getIndexPartPreCalcExpScale(double internalValue, double exp) {
    return Math.pow((internalValue + 2) * 25, exp);

  protected double calcScaleStandardIndexFromSum(double scaleSum, int elems) {
    return Math.pow(scaleSum / elems, 1 / (Math.E * 8.8 / 10));