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; }
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(); }