public List<Candidate> getCandidatesForResponse(MedicFormResponse response) {
    Log.info("Attempting to map response");
    // get the CHW that submitted the form
    CommunityHealthWorker chw = (CommunityHealthWorker) response.getSubmitter();
    // get the list of patients that the CHW cares for
    ArrayList<Patient> patients = (ArrayList<Patient>) patientDao.getPatientsForCHW(chw);
    ArrayList<Candidate> candidates = new ArrayList<Candidate>();
    // iterate through all fields on the form, seeing if they are mapped to patient identifying
    // fields
    // e.g. Birthdate, Name, and Patient ID
    for (Patient patient : patients) {
      candidates.add(new Candidate(patient));
    }
    List<MedicFormFieldResponse> responses = response.getResponses();
    try {
      responses.get(0).getDateSubmitted();
    } catch (Exception e) {
      responses = formFieldResponseDao.getResponsesForFormResponse(response);
    }

    for (MedicFormFieldResponse fieldResponse : responses) {
      // if it is mapped to a namefield, score it as a name
      if (fieldResponse.getField().getMapping() == PatientFieldMapping.NAMEFIELD) {
        for (Candidate c : candidates) {
          c.setNameScore(
              getNameDistance(c.getName().toLowerCase(), fieldResponse.getValue().toLowerCase()));
        }
        // if it is mapped to an id field, score it as an ID
      } else if (fieldResponse.getField().getMapping() == PatientFieldMapping.IDFIELD) {
        for (Candidate c : candidates) {
          c.setIdScore(getEditDistance(c.getStringID(), fieldResponse.getValue()));
        }
        // if it is mapped as a bday field, score it as a bday
      } else if (fieldResponse.getField().getMapping() == PatientFieldMapping.BIRTHDATEFIELD) {
        for (Candidate c : candidates) {
          if (fieldResponse.getValue().length() <= 8) {
            c.setBirthdateScore(
                getEditDistance(
                    shortFormatter.format(c.getPatient().getBirthdate()),
                    fieldResponse.getValue()));
          } else {
            c.setBirthdateScore(
                getEditDistance(
                    longFormatter.format(c.getPatient().getBirthdate()), fieldResponse.getValue()));
          }
        }
      }
    }
    Collections.sort(candidates);
    return candidates.subList(0, 5);
  }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

      Candidate c = clist.get(position);

      LayoutInflater linf = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
      View v = linf.inflate(R.layout.customview, null);

      TextView tvName = (TextView) v.findViewById(R.id.tvName);
      TextView tvMobileno = (TextView) v.findViewById(R.id.tvMobileno);

      tvName.setText(c.getName());
      tvMobileno.setText(c.getMobileno());

      return v;
    }
Example #3
0
  public synchronized void vote(String name, InetAddress ip) throws UserException {
    if (isClosed()) {
      throw new UserException("The votes are closed");
    }

    if (ips.contains(ip)) {
      throw new UserException("IP " + ip + " has already voted");
    }
    ips.add(ip);

    Candidate theCandidate = null;
    for (Candidate candidate : this) {
      if (candidate.getName().equals(name)) {
        theCandidate = candidate;
        break;
      }
    }

    if (theCandidate == null) {
      throw new UserException("Candidate " + name + " doesn't exist");
    }

    theCandidate.vote();
  }