gov.va.medora.mdo.dao.sql.npt.NptPatientDao.getPatientsFromDataReader C# (CSharp) Method

getPatientsFromDataReader() private method

private getPatientsFromDataReader ( System.Data.SqlClient.SqlDataReader reader ) : IList
reader System.Data.SqlClient.SqlDataReader
return IList
        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;
        }