Esempio n. 1
0
 void setDemographics(DemographicSet mdo)
 {
     if (mdo.StreetAddresses != null && mdo.StreetAddresses.Count > 0)
     {
         this.addresses = new AddressTO[mdo.StreetAddresses.Count];
         for (int i = 0; i < mdo.StreetAddresses.Count; i++)
         {
             this.addresses[i] = new AddressTO(mdo.StreetAddresses[i]);
         }
     }
     if (mdo.PhoneNumbers != null && mdo.PhoneNumbers.Count > 0)
     {
         this.phones = new PhoneNumTO[mdo.PhoneNumbers.Count];
         for (int i = 0; i < mdo.PhoneNumbers.Count; i++)
         {
             this.phones[i] = new PhoneNumTO(mdo.PhoneNumbers[i]);
         }
     }
     if (mdo.EmailAddresses != null && mdo.EmailAddresses.Count > 0)
     {
         this.emailAddresses = new string[mdo.EmailAddresses.Count];
         for (int i = 0; i < mdo.EmailAddresses.Count; i++)
         {
             this.emailAddresses[i] = mdo.EmailAddresses[i].Address;
         }
     }
     if (mdo.Names != null && mdo.Names.Count > 0)
     {
         this.names = new string[mdo.Names.Count];
         for (int i = 0; i < mdo.Names.Count; i++)
         {
             this.names[i] = mdo.Names[i].getLastNameFirst();;
         }
     }
 }
Esempio n. 2
0
        internal Person toPerson(OracleDataReader rdr)
        {
            Person result = new Person();
            string s      = "";

            if (!rdr.IsDBNull(rdr.GetOrdinal("Id")))
            {
                s = rdr["Id"].ToString().Trim();
                if (s != "")
                {
                    result.Id = s;
                }
            }
            if (!rdr.IsDBNull(rdr.GetOrdinal("FirstName")) &&
                !rdr.IsDBNull(rdr.GetOrdinal("LastName")))
            {
                string name = rdr["LastName"].ToString().Trim() + ',' +
                              rdr["FirstName"].ToString().Trim();
                if (name != ",")
                {
                    if (!rdr.IsDBNull(rdr.GetOrdinal("MiddleName")))
                    {
                        name += ' ' + rdr["MiddleName"].ToString().Trim();
                    }
                    result.Name = new PersonName(name.Trim());
                }
            }
            //if (!rdr.IsDBNull(rdr.GetOrdinal("SSN")))
            //{
            //    result.SSN = new SocSecNum(rdr["SSN"].ToString());
            //}
            if (!rdr.IsDBNull(rdr.GetOrdinal("DOB")))
            {
                s = rdr["DOB"].ToString().Trim();
                if (s != "")
                {
                    result.DOB = s;
                }
            }
            if (!rdr.IsDBNull(rdr.GetOrdinal("Gender")))
            {
                s = rdr["Gender"].ToString().Trim();
                if (s != "")
                {
                    result.Gender = s;
                }
            }
            DemographicSet demoSet = new DemographicSet();

            demoSet.StreetAddresses = addAddresses(rdr);
            demoSet.PhoneNumbers    = addPhones(rdr);
            demoSet.EmailAddresses  = addEmails(rdr);
            result.Demographics     = new Dictionary <string, DemographicSet>();
            result.Demographics.Add(myCxn.DataSource.Protocol, demoSet);
            return(result);
        }
Esempio n. 3
0
        public DemographicSet getDemographics(string sitecode, string patientId)
        {
            PatientDemographicsResponse response = _svc.getPatientDemographics(new mdo.sm.query.Patient()
            {
                ICN = patientId
            }, sitecode);

            if (response == null || response.Patient == null ||
                String.Equals(response.Status, "reject", StringComparison.CurrentCultureIgnoreCase) ||
                String.Equals(response.Status, "error", StringComparison.CurrentCultureIgnoreCase))
            {
                throw new MdoException(MdoExceptionCode.DATA_MISSING_REQUIRED, response.Reason);
            }

            DemographicSet demogs = new DemographicSet();

            demogs.EmailAddresses = new List <EmailAddress>();
            demogs.EmailAddresses.Add(new EmailAddress(response.Patient.EmailAddress));
            demogs.Names = new List <PersonName>();
            demogs.Names.Add(
                new PersonName()
            {
                Firstname = response.Patient.FirstName,
                Lastname  = response.Patient.LastName,
            });
            demogs.PhoneNumbers = new List <PhoneNum>();
            demogs.PhoneNumbers.Add(new PhoneNum(response.Patient.HomePhone));
            if (response.Patient.HomeAddress != null && response.Patient.HomeAddress.Address != null)
            {
                demogs.StreetAddresses = new List <Address>();
                demogs.StreetAddresses.Add(
                    new Address()
                {
                    Street1 = response.Patient.HomeAddress.Address.AddressLine1,
                    Street2 = response.Patient.HomeAddress.Address.AddressLine2,
                    City    = response.Patient.HomeAddress.Address.City,
                    County  = response.Patient.HomeAddress.Address.County,
                    State   = response.Patient.HomeAddress.Address.State,
                    Zipcode = response.Patient.HomeAddress.Address.ZipCode
                });
            }

            return(demogs);
        }
Esempio n. 4
0
        public void testBuildPatientObject()
        {
            DemographicSet patientDemogs = new DemographicSet();
            Address addr = new Address() { City = "Hooville", State = "MI", County = "Eggs and Ham", Street1 = "123 Elm St.", Street2 = "Apt 4", Zipcode = "90210" };
            PhoneNum phone = new PhoneNum() { Description = "Cell phone", AreaCode = "555", Exchange = "867", Number = "5309" };
            EmailAddress email = new EmailAddress() { Address = "*****@*****.**" };
            IList<Address> addresses = new List<Address>() { addr };
            IList<PhoneNum> telephones = new List<PhoneNum>() { phone };
            IList<EmailAddress> emails = new List<EmailAddress>() { email };
            patientDemogs.EmailAddresses = emails.ToList<EmailAddress>();
            patientDemogs.PhoneNumbers = telephones.ToList<PhoneNum>();
            patientDemogs.StreetAddresses = addresses.ToList<Address>();

            CCRHelper helper = new CCRHelper();
            ActorType patient = helper.buildPatientObject("1234567890", "987654321", "USER", "ONE", "O", "0000/12/25", "2011", "M", patientDemogs);

            Assert.IsNotNull(patient);
            Assert.IsTrue(patient.Item is ActorTypePerson);
            Assert.AreEqual(patient.Address.Count, 1);
            Assert.AreEqual(patient.EMail.Count, 1);
            Assert.AreEqual(patient.Telephone.Count, 1);
            Assert.AreEqual(patient.IDs.Count, 2);

            Assert.IsTrue(String.Equals(patient.IDs[0].ID, "1234567890"));
            Assert.IsTrue(String.Equals(patient.IDs[0].Type.Text, "ID"));
            Assert.IsTrue(String.Equals(patient.IDs[1].ID, "987654321"));
            Assert.IsTrue(String.Equals(patient.IDs[1].Type.Text, "SSN"));
            Assert.IsTrue(String.Equals(patient.Address[0].City, "Hooville"));
            Assert.IsTrue(String.Equals(patient.Address[0].County, "Eggs and Ham"));
            Assert.IsTrue(String.Equals(patient.Address[0].Line1, "123 Elm St."));
            Assert.IsTrue(String.Equals(patient.Address[0].Line2, "Apt 4"));
            Assert.IsTrue(String.Equals(patient.Address[0].PostalCode, "90210"));
            Assert.IsTrue(String.Equals(patient.Address[0].State, "MI"));
            Assert.IsTrue(String.Equals(patient.EMail[0].Value, "*****@*****.**"));
            Assert.IsTrue(String.Equals(patient.Telephone[0].Value, "5558675309"));

            ActorTypePerson person = (ActorTypePerson)patient.Item;
            Assert.IsTrue(String.Equals(person.DateOfBirth.ExactDateTime, "0000/12/25"));
            Assert.IsTrue(String.Equals(person.DateOfBirth.Age.Value, "2011"));
            Assert.IsTrue(String.Equals(person.Gender.Text, "M"));
            Assert.IsTrue(String.Equals(person.Name.CurrentName.Family.First(), "ONE"));
            Assert.IsTrue(String.Equals(person.Name.CurrentName.Given.First(), "USER"));
            Assert.IsTrue(String.Equals(person.Name.CurrentName.Middle.First(), "O"));
        }
Esempio n. 5
0
        public Patient[] match(string target)
        {
            if (!SocSecNum.isValid(target))
            {
                throw new NotImplementedException("non-SSN matches are currently not supported by CDW");
            }

            SqlCommand   cmd         = new SqlCommand("SELECT * FROM SPatient.SPatient WHERE PatientSSN=@target;");
            SqlParameter targetParam = new SqlParameter("@target", System.Data.SqlDbType.VarChar, 9);

            targetParam.Value = target;

            SqlDataAdapter adapter = new SqlDataAdapter(cmd);

            adapter.SelectCommand = new SqlCommand(cmd.CommandText);
            adapter.SelectCommand.Parameters.Add(targetParam);

            IDataReader reader = (IDataReader)_cxn.query(adapter);
            IDictionary <string, Patient> patients = new Dictionary <string, Patient>();

            //if (!reader..HasRows)
            //{
            //    return new Patient[0];
            //}
            while (reader.Read())
            {
                Patient p = new Patient();
                p.LocalSiteId = (reader.GetInt16(reader.GetOrdinal("Sta3n"))).ToString();
                p.LocalPid    = reader.GetString(reader.GetOrdinal("PatientIEN"));

                p.Name = new PersonName(reader.GetString(reader.GetOrdinal("PatientName")));
                if (!reader.IsDBNull(reader.GetOrdinal("PatientSSN")))
                {
                    p.SSN = new SocSecNum(reader.GetString(reader.GetOrdinal("PatientSSN")));
                }

                if (!reader.IsDBNull(reader.GetOrdinal("Gender")))
                {
                    p.Gender = reader.GetString(reader.GetOrdinal("Gender"));
                }
                else
                {
                    p.Gender = "";
                }
                if (!reader.IsDBNull(reader.GetOrdinal("DateOfBirthText")))
                {
                    p.DOB = reader.GetString(reader.GetOrdinal("DateOfBirthText"));
                }
                if (!reader.IsDBNull(reader.GetOrdinal("PatientICN")))
                {
                    p.MpiPid = (reader.GetString(reader.GetOrdinal("PatientICN"))).ToString();
                }
                else
                {
                    // use SSN for patient ICN
                    if (p.SSN == null || String.IsNullOrEmpty(p.SSN.toString()))
                    {
                        throw new MdoException(MdoExceptionCode.DATA_MISSING_REQUIRED, "Unable to process results for " + target + " - CDW record contains no ICN and no SSN");
                    }
                    p.MpiPid = p.SSN.toString();
                }

                p.Demographics = new Dictionary <string, DemographicSet>();
                DemographicSet demogs = new DemographicSet();
                demogs.PhoneNumbers    = new List <PhoneNum>();
                demogs.EmailAddresses  = new List <EmailAddress>();
                demogs.StreetAddresses = new List <Address>();

                if (!reader.IsDBNull(reader.GetOrdinal("PhoneResidence")))
                {
                    demogs.PhoneNumbers.Add(new PhoneNum(reader.GetString(reader.GetOrdinal("PhoneResidence"))));
                }
                if (!reader.IsDBNull(reader.GetOrdinal("PhoneWork")))
                {
                    demogs.PhoneNumbers.Add(new PhoneNum(reader.GetString(reader.GetOrdinal("PhoneWork"))));
                }

                Address address = new Address();
                if (!reader.IsDBNull(reader.GetOrdinal("StreetAddress1")))
                {
                    address.Street1 = reader.GetString(reader.GetOrdinal("StreetAddress1"));
                }
                if (!reader.IsDBNull(reader.GetOrdinal("StreetAddress2")))
                {
                    address.Street2 = reader.GetString(reader.GetOrdinal("StreetAddress2"));
                }
                if (!reader.IsDBNull(reader.GetOrdinal("StreetAddress3")))
                {
                    address.Street3 = reader.GetString(reader.GetOrdinal("StreetAddress3"));
                }
                if (!reader.IsDBNull(reader.GetOrdinal("City")))
                {
                    address.City = reader.GetString(reader.GetOrdinal("City"));
                }
                if (!reader.IsDBNull(reader.GetOrdinal("county")))
                {
                    address.County = reader.GetString(reader.GetOrdinal("county"));
                }
                if (!reader.IsDBNull(reader.GetOrdinal("State")))
                {
                    address.State = reader.GetString(reader.GetOrdinal("State"));
                }
                if (!reader.IsDBNull(reader.GetOrdinal("Zip")))
                {
                    address.Zipcode = reader.GetString(reader.GetOrdinal("Zip"));
                }
                demogs.StreetAddresses.Add(address);

                p.Demographics.Add(p.LocalSiteId, demogs);

                if (!patients.ContainsKey(p.MpiPid))
                {
                    p.SitePids = new System.Collections.Specialized.StringDictionary();
                    p.SitePids.Add(p.LocalSiteId, p.LocalPid);
                    patients.Add(p.MpiPid, p);
                }
                else
                {
                    if (!(patients[p.MpiPid].SitePids.ContainsKey(p.LocalSiteId)))
                    {
                        patients[p.MpiPid].SitePids.Add(p.LocalSiteId, p.LocalPid);
                    }

                    patients[p.MpiPid].Demographics.Add(p.LocalSiteId, p.Demographics[p.LocalSiteId]);
                }
            }

            // cleanup - need to set all temp ICNs back to null
            foreach (string key in patients.Keys)
            {
                if (!(patients[key].SSN == null) && !String.IsNullOrEmpty(patients[key].SSN.toString()) &&
                    !String.IsNullOrEmpty(patients[key].MpiPid) && String.Equals(patients[key].MpiPid, patients[key].SSN.toString()))
                {
                    patients[key].MpiPid = null;
                }
            }

            Patient[] result = new Patient[patients.Count];
            patients.Values.CopyTo(result, 0);
            return(result);
        }
Esempio n. 6
0
 public DemographicSetTO(string key, DemographicSet mdo)
 {
     this.tag = key;
     setDemographics(mdo);
 }
Esempio n. 7
0
        Patient getNextPatient(SqlDataReader reader)
        {
            Patient p = new Patient();

            p.LocalSiteId = (reader.GetInt16(reader.GetOrdinal("sitecode"))).ToString();

            Decimal d = Convert.ToDecimal(reader.GetDecimal(reader.GetOrdinal("localPid")));

            if ((d - Math.Floor(d)) > 0)
            {
                p.LocalPid = (d).ToString();
            }
            else
            {
                p.LocalPid = (Convert.ToInt64(d)).ToString();
            }
            p.Name = new PersonName(reader.GetString(reader.GetOrdinal("name")));
            p.SSN  = new SocSecNum(reader.GetString(reader.GetOrdinal("ssn")));

            if (!reader.IsDBNull(reader.GetOrdinal("gender")))
            {
                p.Gender = reader.GetBoolean(reader.GetOrdinal("gender")) ? "M" : "F"; // 1 or true == male, 0 or false == female
            }
            else
            {
                p.Gender = "";
            }
            if (!reader.IsDBNull(reader.GetOrdinal("vistaDOB")))
            {
                p.DOB = reader.GetString(reader.GetOrdinal("vistaDOB"));
            }
            p.MpiPid      = (reader.GetInt32(reader.GetOrdinal("icn"))).ToString();
            p.MpiChecksum = (reader.GetInt32(reader.GetOrdinal("icnx"))).ToString();

            p.Demographics = new Dictionary <string, DemographicSet>();
            DemographicSet demogs = new DemographicSet();

            demogs.PhoneNumbers    = new List <PhoneNum>();
            demogs.EmailAddresses  = new List <EmailAddress>();
            demogs.StreetAddresses = new List <Address>();

            if (!reader.IsDBNull(reader.GetOrdinal("homePhone")))
            {
                demogs.PhoneNumbers.Add(new PhoneNum(reader.GetString(reader.GetOrdinal("homePhone"))));
            }
            if (!reader.IsDBNull(reader.GetOrdinal("workPhone")))
            {
                demogs.PhoneNumbers.Add(new PhoneNum(reader.GetString(reader.GetOrdinal("workPhone"))));
            }
            if (!reader.IsDBNull(reader.GetOrdinal("cellPhone")))
            {
                demogs.PhoneNumbers.Add(new PhoneNum(reader.GetString(reader.GetOrdinal("cellPhone"))));
            }

            if (!reader.IsDBNull(reader.GetOrdinal("emailAddress")))
            {
                demogs.EmailAddresses.Add(new EmailAddress(reader.GetString(reader.GetOrdinal("emailAddress"))));
            }

            Address address = new Address();

            if (!reader.IsDBNull(reader.GetOrdinal("addressLine1")))
            {
                address.Street1 = reader.GetString(reader.GetOrdinal("addressLine1"));
            }
            if (!reader.IsDBNull(reader.GetOrdinal("addressLine2")))
            {
                address.Street2 = reader.GetString(reader.GetOrdinal("addressLine2"));
            }
            if (!reader.IsDBNull(reader.GetOrdinal("addressLine3")))
            {
                address.Street3 = reader.GetString(reader.GetOrdinal("addressLine3"));
            }
            if (!reader.IsDBNull(reader.GetOrdinal("city")))
            {
                address.City = reader.GetString(reader.GetOrdinal("city"));
            }
            if (!reader.IsDBNull(reader.GetOrdinal("county")))
            {
                address.County = reader.GetString(reader.GetOrdinal("county"));
            }
            if (!reader.IsDBNull(reader.GetOrdinal("state")))
            {
                address.State = reader.GetString(reader.GetOrdinal("state"));
            }
            if (!reader.IsDBNull(reader.GetOrdinal("zipcode")))
            {
                address.Zipcode = reader.GetString(reader.GetOrdinal("zipcode"));
            }
            demogs.StreetAddresses.Add(address);

            p.Demographics.Add(p.LocalSiteId, demogs);

            return(p);
        }
        public void testBuildPatientObject()
        {
            DemographicSet patientDemogs = new DemographicSet();
            Address        addr          = new Address()
            {
                City = "Hooville", State = "MI", County = "Eggs and Ham", Street1 = "123 Elm St.", Street2 = "Apt 4", Zipcode = "90210"
            };
            PhoneNum phone = new PhoneNum()
            {
                Description = "Cell phone", AreaCode = "555", Exchange = "867", Number = "5309"
            };
            EmailAddress email = new EmailAddress()
            {
                Address = "*****@*****.**"
            };
            IList <Address> addresses = new List <Address>()
            {
                addr
            };
            IList <PhoneNum> telephones = new List <PhoneNum>()
            {
                phone
            };
            IList <EmailAddress> emails = new List <EmailAddress>()
            {
                email
            };

            patientDemogs.EmailAddresses  = emails.ToList <EmailAddress>();
            patientDemogs.PhoneNumbers    = telephones.ToList <PhoneNum>();
            patientDemogs.StreetAddresses = addresses.ToList <Address>();

            CCRHelper helper  = new CCRHelper();
            ActorType patient = helper.buildPatientObject("1234567890", "987654321", "USER", "ONE", "O", "0000/12/25", "2011", "M", patientDemogs);

            Assert.IsNotNull(patient);
            Assert.IsTrue(patient.Item is ActorTypePerson);
            Assert.AreEqual(patient.Address.Count, 1);
            Assert.AreEqual(patient.EMail.Count, 1);
            Assert.AreEqual(patient.Telephone.Count, 1);
            Assert.AreEqual(patient.IDs.Count, 2);

            Assert.IsTrue(String.Equals(patient.IDs[0].ID, "1234567890"));
            Assert.IsTrue(String.Equals(patient.IDs[0].Type.Text, "ID"));
            Assert.IsTrue(String.Equals(patient.IDs[1].ID, "987654321"));
            Assert.IsTrue(String.Equals(patient.IDs[1].Type.Text, "SSN"));
            Assert.IsTrue(String.Equals(patient.Address[0].City, "Hooville"));
            Assert.IsTrue(String.Equals(patient.Address[0].County, "Eggs and Ham"));
            Assert.IsTrue(String.Equals(patient.Address[0].Line1, "123 Elm St."));
            Assert.IsTrue(String.Equals(patient.Address[0].Line2, "Apt 4"));
            Assert.IsTrue(String.Equals(patient.Address[0].PostalCode, "90210"));
            Assert.IsTrue(String.Equals(patient.Address[0].State, "MI"));
            Assert.IsTrue(String.Equals(patient.EMail[0].Value, "*****@*****.**"));
            Assert.IsTrue(String.Equals(patient.Telephone[0].Value, "5558675309"));

            ActorTypePerson person = (ActorTypePerson)patient.Item;

            Assert.IsTrue(String.Equals(person.DateOfBirth.ExactDateTime, "0000/12/25"));
            Assert.IsTrue(String.Equals(person.DateOfBirth.Age.Value, "2011"));
            Assert.IsTrue(String.Equals(person.Gender.Text, "M"));
            Assert.IsTrue(String.Equals(person.Name.CurrentName.Family.First(), "ONE"));
            Assert.IsTrue(String.Equals(person.Name.CurrentName.Given.First(), "USER"));
            Assert.IsTrue(String.Equals(person.Name.CurrentName.Middle.First(), "O"));
        }
Esempio n. 9
0
        public ActorType buildPatientObject(string id, string ssn, string firstname, string lastName, string middleName,
            string dob, string age, string gender, DemographicSet demogs)
        {
            ActorType patient = new ActorType();
            ActorTypePerson person = new ActorTypePerson()
            {
                Name = new ActorTypePersonName()
                {
                    CurrentName = new PersonNameType()
                    {
                        Family = new List<string>() { lastName },
                        Given = new List<string>() { firstname },
                        Middle = new List<string>() { middleName }
                    }
                },
                Gender = new CodedDescriptionType() { Text = gender }
            };
            person.DateOfBirth = new DateTimeType()
            {
                ExactDateTime = dob,
                Age = new MeasureType() { Value = age }
            };
            patient.Item = person;

            patient.Address = new List<ActorTypeAddress>();
            if (demogs != null && demogs.StreetAddresses != null && demogs.StreetAddresses.Count > 0)
            {
                foreach (Address addr in demogs.StreetAddresses)
                {
                    ActorTypeAddress newAddr = new ActorTypeAddress()
                    {
                        City = addr.City,
                        County = addr.County,
                        Line1 = addr.Street1,
                        Line2 = addr.Street2,
                        PostalCode = addr.Zipcode,
                        State = addr.State
                    };
                    patient.Address.Add(newAddr);
                }
            }

            patient.EMail = new List<CommunicationType>();
            if (demogs != null && demogs.EmailAddresses != null && demogs.EmailAddresses.Count > 0)
            {
                foreach (EmailAddress addy in demogs.EmailAddresses)
                {
                    CommunicationType newEmail = new CommunicationType()
                    {
                        Type = new CodedDescriptionType() { Text = "Email" },
                        Value = addy.Address
                    };
                    patient.EMail.Add(newEmail);
                }
            }

            patient.Telephone = new List<CommunicationType>();
            if (demogs != null && demogs.PhoneNumbers != null && demogs.PhoneNumbers.Count > 0)
            {
                foreach (PhoneNum phone in demogs.PhoneNumbers)
                {
                    CommunicationType newPhone = new CommunicationType()
                    {
                        Value = phone.ToString()
                    };
                    if (String.IsNullOrEmpty(phone.Description))
                    {
                        newPhone.Type = new CodedDescriptionType() { Text = "Telephone" };
                    }
                    else
                    {
                        newPhone.Type = new CodedDescriptionType() { Text = phone.Description };
                    }
                    patient.Telephone.Add(newPhone);
                }
            }

            IDType patientId = new IDType() { ID = id, Type = new CodedDescriptionType() { Text = "ID" } };
            IDType patientSSN = new IDType() { ID = ssn, Type = new CodedDescriptionType() { Text = "SSN" } };
            patient.IDs = new List<IDType>() { patientId, patientSSN };

            return patient;
        }
Esempio n. 10
0
        public Patient[] match(string target)
        {
            if (!SocSecNum.isValid(target))
            {
                throw new NotImplementedException("non-SSN matches are currently not supported by CDW");
            }

            SqlCommand cmd = new SqlCommand("SELECT * FROM SPatient.SPatient WHERE PatientSSN=@target;");
            SqlParameter targetParam = new SqlParameter("@target", System.Data.SqlDbType.VarChar, 9);
            targetParam.Value = target;

            SqlDataAdapter adapter = new SqlDataAdapter(cmd);
            adapter.SelectCommand = new SqlCommand(cmd.CommandText);
            adapter.SelectCommand.Parameters.Add(targetParam);

            SqlDataReader reader = (SqlDataReader)_cxn.query(adapter);
            IDictionary<string, Patient> patients = new Dictionary<string, Patient>();

            if (!reader.HasRows)
            {
                return new Patient[0];
            }
            while (reader.Read())
            {
                Patient p = new Patient();
                p.LocalSiteId = (reader.GetInt16(reader.GetOrdinal("Sta3n"))).ToString();
                p.LocalPid = reader.GetString(reader.GetOrdinal("PatientIEN"));

                p.Name = new PersonName(reader.GetString(reader.GetOrdinal("PatientName")));
                if (!reader.IsDBNull(reader.GetOrdinal("PatientSSN")))
                {
                    p.SSN = new SocSecNum(reader.GetString(reader.GetOrdinal("PatientSSN")));
                }

                if (!reader.IsDBNull(reader.GetOrdinal("gender")))
                {
                    p.Gender = reader.GetString(reader.GetOrdinal("gender"));
                }
                else
                {
                    p.Gender = "";
                }
                if (!reader.IsDBNull(reader.GetOrdinal("DateOfBirthText")))
                {
                    p.DOB = reader.GetString(reader.GetOrdinal("DateOfBirthText"));
                }
                if (!reader.IsDBNull(reader.GetOrdinal("PatientICN")))
                {
                    p.MpiPid = (reader.GetString(reader.GetOrdinal("PatientICN"))).ToString();
                }
                else
                {
                    // use SSN for patient ICN
                    if (p.SSN == null || String.IsNullOrEmpty(p.SSN.toString()))
                    {
                        throw new MdoException(MdoExceptionCode.DATA_MISSING_REQUIRED, "Unable to process results for " + target + " - CDW record contains no ICN and no SSN");
                    }
                    p.MpiPid = p.SSN.toString();
                }

                p.Demographics = new Dictionary<string, DemographicSet>();
                DemographicSet demogs = new DemographicSet();
                demogs.PhoneNumbers = new List<PhoneNum>();
                demogs.EmailAddresses = new List<EmailAddress>();
                demogs.StreetAddresses = new List<Address>();

                if (!reader.IsDBNull(reader.GetOrdinal("PhoneResidence")))
                {
                    demogs.PhoneNumbers.Add(new PhoneNum(reader.GetString(reader.GetOrdinal("PhoneResidence"))));
                }
                if (!reader.IsDBNull(reader.GetOrdinal("PhoneWork")))
                {
                    demogs.PhoneNumbers.Add(new PhoneNum(reader.GetString(reader.GetOrdinal("PhoneWork"))));
                }

                Address address = new Address();
                if (!reader.IsDBNull(reader.GetOrdinal("StreetAddress1")))
                {
                    address.Street1 = reader.GetString(reader.GetOrdinal("StreetAddress1"));
                }
                if (!reader.IsDBNull(reader.GetOrdinal("StreetAddress2")))
                {
                    address.Street2 = reader.GetString(reader.GetOrdinal("StreetAddress2"));
                }
                if (!reader.IsDBNull(reader.GetOrdinal("StreetAddress3")))
                {
                    address.Street3 = reader.GetString(reader.GetOrdinal("StreetAddress3"));
                }
                if (!reader.IsDBNull(reader.GetOrdinal("City")))
                {
                    address.City = reader.GetString(reader.GetOrdinal("City"));
                }
                if (!reader.IsDBNull(reader.GetOrdinal("county")))
                {
                    address.County = reader.GetString(reader.GetOrdinal("county"));
                }
                if (!reader.IsDBNull(reader.GetOrdinal("State")))
                {
                    address.State = reader.GetString(reader.GetOrdinal("State"));
                }
                if (!reader.IsDBNull(reader.GetOrdinal("Zip")))
                {
                    address.Zipcode = reader.GetString(reader.GetOrdinal("Zip"));
                }
                demogs.StreetAddresses.Add(address);

                p.Demographics.Add(p.LocalSiteId, demogs);

                if (!patients.ContainsKey(p.MpiPid))
                {
                    p.SitePids = new System.Collections.Specialized.StringDictionary();
                    p.SitePids.Add(p.LocalSiteId, p.LocalPid);
                    patients.Add(p.MpiPid, p);
                }
                else
                {
                    if (!(patients[p.MpiPid].SitePids.ContainsKey(p.LocalSiteId)))
                    {
                        patients[p.MpiPid].SitePids.Add(p.LocalSiteId, p.LocalPid);
                    }

                    patients[p.MpiPid].Demographics.Add(p.LocalSiteId, p.Demographics[p.LocalSiteId]);
                }
            }

            // cleanup - need to set all temp ICNs back to null
            foreach (string key in patients.Keys)
            {
                if (!(patients[key].SSN == null) && !String.IsNullOrEmpty(patients[key].SSN.toString()) &&
                    !String.IsNullOrEmpty(patients[key].MpiPid) && String.Equals(patients[key].MpiPid, patients[key].SSN.toString()))
                {
                    patients[key].MpiPid = null;
                }
            }

            Patient[] result = new Patient[patients.Count];
            patients.Values.CopyTo(result, 0);
            return result;
        }
Esempio n. 11
0
        public ActorType buildPatientObject(string id, string ssn, string firstname, string lastName, string middleName,
                                            string dob, string age, string gender, DemographicSet demogs)
        {
            ActorType       patient = new ActorType();
            ActorTypePerson person  = new ActorTypePerson()
            {
                Name = new ActorTypePersonName()
                {
                    CurrentName = new PersonNameType()
                    {
                        Family = new List <string>()
                        {
                            lastName
                        },
                        Given = new List <string>()
                        {
                            firstname
                        },
                        Middle = new List <string>()
                        {
                            middleName
                        }
                    }
                },
                Gender = new CodedDescriptionType()
                {
                    Text = gender
                }
            };

            person.DateOfBirth = new DateTimeType()
            {
                ExactDateTime = dob,
                Age           = new MeasureType()
                {
                    Value = age
                }
            };
            patient.Item = person;

            patient.Address = new List <ActorTypeAddress>();
            if (demogs != null && demogs.StreetAddresses != null && demogs.StreetAddresses.Count > 0)
            {
                foreach (Address addr in demogs.StreetAddresses)
                {
                    ActorTypeAddress newAddr = new ActorTypeAddress()
                    {
                        City       = addr.City,
                        County     = addr.County,
                        Line1      = addr.Street1,
                        Line2      = addr.Street2,
                        PostalCode = addr.Zipcode,
                        State      = addr.State
                    };
                    patient.Address.Add(newAddr);
                }
            }

            patient.EMail = new List <CommunicationType>();
            if (demogs != null && demogs.EmailAddresses != null && demogs.EmailAddresses.Count > 0)
            {
                foreach (EmailAddress addy in demogs.EmailAddresses)
                {
                    CommunicationType newEmail = new CommunicationType()
                    {
                        Type = new CodedDescriptionType()
                        {
                            Text = "Email"
                        },
                        Value = addy.Address
                    };
                    patient.EMail.Add(newEmail);
                }
            }

            patient.Telephone = new List <CommunicationType>();
            if (demogs != null && demogs.PhoneNumbers != null && demogs.PhoneNumbers.Count > 0)
            {
                foreach (PhoneNum phone in demogs.PhoneNumbers)
                {
                    CommunicationType newPhone = new CommunicationType()
                    {
                        Value = phone.ToString()
                    };
                    if (String.IsNullOrEmpty(phone.Description))
                    {
                        newPhone.Type = new CodedDescriptionType()
                        {
                            Text = "Telephone"
                        };
                    }
                    else
                    {
                        newPhone.Type = new CodedDescriptionType()
                        {
                            Text = phone.Description
                        };
                    }
                    patient.Telephone.Add(newPhone);
                }
            }

            IDType patientId = new IDType()
            {
                ID = id, Type = new CodedDescriptionType()
                {
                    Text = "ID"
                }
            };
            IDType patientSSN = new IDType()
            {
                ID = ssn, Type = new CodedDescriptionType()
                {
                    Text = "SSN"
                }
            };

            patient.IDs = new List <IDType>()
            {
                patientId, patientSSN
            };


            return(patient);
        }
Esempio n. 12
0
 internal Person toPerson(OracleDataReader rdr)
 {
     Person result = new Person();
     string s = "";
     if (!rdr.IsDBNull(rdr.GetOrdinal("Id")))
     {
         s = rdr["Id"].ToString().Trim();
         if (s != "")
         {
             result.Id = s;
         }
     }
     if (!rdr.IsDBNull(rdr.GetOrdinal("FirstName")) &&
         !rdr.IsDBNull(rdr.GetOrdinal("LastName")))
     {
         string name = rdr["LastName"].ToString().Trim() + ',' +
                       rdr["FirstName"].ToString().Trim();
         if (name != ",")
         {
             if (!rdr.IsDBNull(rdr.GetOrdinal("MiddleName")))
             {
                 name += ' ' + rdr["MiddleName"].ToString().Trim();
             }
             result.Name = new PersonName(name.Trim());
         }
     }
     //if (!rdr.IsDBNull(rdr.GetOrdinal("SSN")))
     //{
     //    result.SSN = new SocSecNum(rdr["SSN"].ToString());
     //}
     if (!rdr.IsDBNull(rdr.GetOrdinal("DOB")))
     {
         s = rdr["DOB"].ToString().Trim();
         if (s != "")
         {
             result.DOB = s;
         }
     }
     if (!rdr.IsDBNull(rdr.GetOrdinal("Gender")))
     {
         s = rdr["Gender"].ToString().Trim();
         if (s != "")
         {
             result.Gender = s;
         }
     }
     DemographicSet demoSet = new DemographicSet();
     demoSet.StreetAddresses = addAddresses(rdr);
     demoSet.PhoneNumbers = addPhones(rdr);
     demoSet.EmailAddresses = addEmails(rdr);
     result.Demographics = new Dictionary<string, DemographicSet>();
     result.Demographics.Add(myCxn.DataSource.Protocol, demoSet);
     return result;
 }
Esempio n. 13
0
        internal DemographicSet toDemographicSet(string[] response)
        {
            if (response == null || response.Length == 0)
            {
                return null;
            }
            DemographicSet result = new DemographicSet();
            string[] flds = response[0].Split(new char[] { '^' });
            Address addr = new Address();
            if (flds.Length > 0 && flds[1] != "")
            {
                addr.Street1 = flds[1];
            }
            if (flds.Length > 1 && flds[2] != "")
            {
                addr.Street2 = flds[2];
            }
            if (flds.Length > 2 && flds[3] != "")
            {
                addr.Street3 = flds[3];
            }
            if (flds.Length > 3 && flds[4] != "")
            {
                addr.City = flds[4];
            }
            if (flds.Length > 4 && flds[5] != "")
            {
                addr.State = flds[5];
            }
            if (flds.Length > 5 && flds[6] != "")
            {
                addr.Zipcode = flds[6];
            }
            if (flds.Length > 6 && flds[7] != "")
            {
                addr.County = flds[7];
            }
            result.StreetAddresses.Add(addr);

            if (flds.Length > 7 && flds[8] != "")
            {
                PhoneNum p = new PhoneNum(flds[8]);
                p.Description = "Home Phone";
                result.PhoneNumbers.Add(p);
            }
            if (flds.Length > 8 && flds[9] != "")
            {
                PhoneNum p = new PhoneNum(flds[9]);
                p.Description = "Work Phone";
                result.PhoneNumbers.Add(p);
            }
            if (flds.Length > 9 && flds[10] != "")
            {
                PhoneNum p = new PhoneNum(flds[10]);
                p.Description = "Cell Phone";
                result.PhoneNumbers.Add(p);
            }
            if (flds.Length > 10)
            {
                if (flds[11] != "")
                {
                    result.EmailAddresses.Add(new EmailAddress(flds[11]));
                }
            }
            return result;
        }