/*
             * Create a Provider using results from a DataSet
             *
             */
            public Provider CreateProvider(DataRow parent, DataRow[] tx, DataRow[] oth)
            {
                // values
                Provider.NPIType _type = (Provider.NPIType)parent["Type"];
                string           _name;

                // Create a Name field that is either an Individual (i.e. Physician) or a Company/Org
                if (_type == Provider.NPIType.Individual)
                {
                    _name = parent["NamePrefix"] + " "
                            + parent["NameFirst"] + " "
                            + parent["NameLast"] + " "
                            + parent["NameSuffix"];
                    ;
                }
                else
                {
                    _name = parent["OrgName"].ToString();
                }

                // create the Provider using a Builder
                Provider.Builder provbuilder = Provider.CreateBuilder()
                                               .NPI(parent["NPI"].ToString())
                                               .Type(_type)
                                               .Name(_name)
                                               .AddrLine1(parent["AddrLine1"].ToString())
                                               .AddrLine2(parent["AddrLine2"].ToString())
                                               .AddrCity(parent["AddrCity"].ToString())
                                               .AddrState(parent["AddrState"].ToString())
                                               .AddrZip(parent["AddrZip"].ToString());

                // Add the Taxonomy for this Provider
                foreach (DataRow row in tx)
                {
                    provbuilder.AddTx(new Taxonomy()
                    {
                        TxCode         = row["TxCode"].ToString(),
                        Classification = row["Classification"].ToString(),
                        Specialization = row["Specialization"].ToString()
                    }
                                      );
                }

                // Add the Other Provider Relationships
                foreach (DataRow row in oth)
                {
                    provbuilder.AddOth(new OthProvider()
                    {
                        OthId       = row["OthId"].ToString(),
                        OthTypeCode = row["OthTypeCode"].ToString(),
                        OthIssuer   = row["OthIssuer"].ToString(),
                        OthState    = row["OthState"].ToString()
                    }
                                       );
                }

                Provider prov = provbuilder.build();

                return(prov);
            }
 public Builder Type(Provider.NPIType Type)
 {
     _provider.Type = Type;
     return(this);
 }
            /*
             * Create a single Provider using results from a SqlDataReader
             *
             */
            public Provider CreateProvider(SqlDataReader rdr)
            {
                // values
                int _NPI  = rdr.GetOrdinal("NPI");
                int _Type = rdr.GetOrdinal("Type");

                Provider.NPIType _type = (Provider.NPIType)rdr.GetInt32(_Type);
                string           _name;

                // Create a Name field that is either an Individual (i.e. Physician) or a Company/Org
                if (_type == Provider.NPIType.Individual)
                {
                    _name = rdr.GetColString("NamePrefix") + " "
                            + rdr.GetColString("NameFirst") + " "
                            + rdr.GetColString("NameLast") + " "
                            + rdr.GetColString("NameSuffix");
                    ;
                }
                else
                {
                    _name = rdr.GetColString("OrgName");
                }

                // create the Provider using a Builder
                Provider.Builder provbuilder = Provider.CreateBuilder()
                                               .NPI(rdr.GetValue(_NPI).ToString())
                                               .Type(_type)
                                               .Name(_name)
                                               .AddrLine1(rdr.GetColString("AddrLine1"))
                                               .AddrLine2(rdr.GetColString("AddrLine2"))
                                               .AddrCity(rdr.GetColString("AddrCity"))
                                               .AddrState(rdr.GetColString("AddrState"))
                                               .AddrZip(rdr.GetColString("AddrZip"));

                // get Taxonomy
                rdr.NextResult();
                while (rdr.Read())
                {
                    provbuilder.AddTx(new Taxonomy()
                    {
                        TxCode         = rdr.GetColString("TxCode"),
                        Classification = rdr.GetColString("Classification"),
                        Specialization = rdr.GetColString("Specialization")
                    }
                                      );
                }

                // get Other Provider Relationships
                rdr.NextResult();
                while (rdr.Read())
                {
                    provbuilder.AddOth(new OthProvider()
                    {
                        OthId       = rdr.GetColString("OthId"),
                        OthTypeCode = rdr.GetColString("OthTypeCode"),
                        OthIssuer   = rdr.GetColString("OthIssuer"),
                        OthState    = rdr.GetColString("OthState")
                    }
                                       );
                }


                Provider prov = provbuilder.build();

                return(prov);
            }