IList<Patient> getPatientsFromDataReader(SqlDataReader reader)
{
IList<Patient> patients = new List<Patient>();
IDictionary<string, Patient> patientDictionary = new Dictionary<string, Patient>();
while (reader.Read())
{
patients.Add(getNextPatient(reader));
}
foreach (Patient p in patients)
{
if (!patientDictionary.ContainsKey(p.MpiPid))
{
patientDictionary.Add(p.MpiPid, p);
p.SitePids = new System.Collections.Specialized.StringDictionary();
p.SitePids.Add(p.LocalSiteId, p.LocalPid);
}
else
{
if (!(patientDictionary[p.MpiPid].SitePids.ContainsKey(p.LocalSiteId)))
{
patientDictionary[p.MpiPid].SitePids.Add(p.LocalSiteId, p.LocalPid);
}
patientDictionary[p.MpiPid].Demographics.Add(p.LocalSiteId, p.Demographics[p.LocalSiteId]);
}
}
patients.Clear();
foreach (Patient p in patientDictionary.Values)
{
patients.Add(p);
}
return patients;
}