public override IEnumerable <IEntity> GetConcepts(Concept concept, IDataRecord reader, KeyMasterOffset keyOffset)
        {
            var  id        = string.IsNullOrEmpty(Id) ? KeyMaster.GetCareSiteId() : reader.GetLong(Id);
            long conceptId = 0;

            if (!string.IsNullOrEmpty(PlaceOfSvcConceptId) && reader.GetLong(PlaceOfSvcConceptId).HasValue)
            {
                conceptId = reader.GetLong(PlaceOfSvcConceptId).Value;
            }

            var locationId          = reader.GetLong(LocationId);
            var careSiteSourceValue = string.IsNullOrEmpty(CareSiteSourceValue)
            ? id.Value.ToString(CultureInfo.InvariantCulture)
            : reader.GetString(CareSiteSourceValue);

            yield return(new CareSite
            {
                Id = id.Value,
                LocationId = locationId.HasValue ? locationId.Value : 0,
                PlaceOfSvcSourceValue = reader.GetString(PlaceOfSvcSourceValue),
                ConceptId = conceptId,
                Name = reader.GetString(Name),
                SourceValue = careSiteSourceValue
            });
        }
Esempio n. 2
0
        public void GenerateSecretKey()
        {
            var       keyMaster = new KeyMaster();
            SecretKey sk        = keyMaster.GenerateSecretKey();

            Assert.IsNotNull(sk);
        }
Esempio n. 3
0
        public void TestPostPublicKeyInterface()
        {
            var       client    = new KeysmithClient("http://localhost:8080");
            var       keyMaster = new KeyMaster();
            PublicKey pk        = keyMaster.GenerateKeyPair().PublicKey;

            Assert.IsNotNull(client.PostPublicKey(pk));
            Assert.IsNull(client.PostPublicKey(null));
        }
Esempio n. 4
0
        public void EncodePublicKey()
        {
            var       keyMaster = new KeyMaster();
            PublicKey pk        = keyMaster.GenerateKeyPair().PublicKey;
            string    encoded   = keyMaster.EncodePublicKey(pk);

            Assert.IsNotNull(encoded);
            Assert.AreNotSame(string.Empty, encoded);
        }
Esempio n. 5
0
        public void EncodeSecretKey()
        {
            var       keyMaster = new KeyMaster();
            SecretKey sk        = keyMaster.GenerateSecretKey();
            string    encoded   = keyMaster.EncodeSecretKey(sk);

            Assert.IsNotNull(encoded);
            Assert.AreNotSame(string.Empty, encoded);
        }
Esempio n. 6
0
        public void DecodeSecretKey()
        {
            var          keyMaster = new KeyMaster();
            const string KeyString =
                "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCb1TXuuj1RESupASrVzk0U51oIPRaZVfdWPZo/VOljHTcfNl1/boHsp+IylC/tcVP9MYwiD5IQye78MjOQZ72rpJZMirmjE1P3mrckDFg1MexxsGn6/JRWWgh/AuN2T4/qkv5FXQvBxtLiaH9p4iV6lgCcTPEWZYMbpF4oiL4FwwIDAQAB";
            SecretKey sk = keyMaster.DecodeSecretKey(KeyString);

            Assert.IsNotNull(sk);
            Assert.IsNotNull(sk.GetBytes());
        }
Esempio n. 7
0
        public override IEnumerable <IEntity> GetConcepts(Concept concept, IDataReader reader, KeyMasterOffset keyMaster)
        {
            var id = string.IsNullOrEmpty(Id) ? KeyMaster.GetLocationId() : int.Parse(reader[Id].ToString());

            yield return(new Location
            {
                Id = id,
                State = reader.GetString(State),
                SourceValue = reader.GetString(SourceValue)
            });
        }
Esempio n. 8
0
        public override IEnumerable <IEntity> GetConcepts(Concept concept, IDataReader reader, KeyMasterOffset keyMaster)
        {
            var id = string.IsNullOrEmpty(Id) ? KeyMaster.GetCareSiteId() : int.Parse(reader[Id].ToString());

            yield return(new CareSite
            {
                Id = id,
                LocationId = reader.GetLong(LocationId).Value,
                PlaceOfSvcSourceValue = reader.GetString(PlaceOfSvcSourceValue),
                SourceValue = id.ToString()
            });
        }
Esempio n. 9
0
        public void TestUpdatePublicKeyInterface()
        {
            var       client    = new KeysmithClient("http://localhost:8080");
            var       keyMaster = new KeyMaster();
            PublicKey pk        = keyMaster.GenerateKeyPair().PublicKey;

            Assert.IsNull(client.UpdatePublicKey("test", pk));
            client.UpdatePublicKey(string.Empty, pk);
            client.UpdatePublicKey(null, pk);
            Assert.IsNull(client.UpdatePublicKey("test", null));
            Assert.IsNull(client.UpdatePublicKey(string.Empty, null));
            Assert.IsNull(client.UpdatePublicKey(null, null));
        }
Esempio n. 10
0
        public void EncodeDecodePublicKey()
        {
            var       keyMaster = new KeyMaster();
            PublicKey pk        = keyMaster.GenerateKeyPair().PublicKey;
            string    encoded   = keyMaster.EncodePublicKey(pk);

            Assert.IsNotNull(encoded);

            PublicKey pk2 = keyMaster.DecodePublicKey(encoded);

            Assert.IsNotNull(pk2);
            Assert.AreEqual(pk, pk2);
        }
Esempio n. 11
0
        public void EncodeDecodeSecretKey()
        {
            var       keyMaster = new KeyMaster();
            SecretKey sk        = keyMaster.GenerateSecretKey();
            string    encoded   = keyMaster.EncodeSecretKey(sk);

            Assert.IsNotNull(encoded);

            SecretKey sk2 = keyMaster.DecodeSecretKey(encoded);

            Assert.IsNotNull(sk2);
            Assert.AreEqual(sk, sk2);
        }
Esempio n. 12
0
 public void TestDeleteByMultipleKeyObjectWithAttributes()
 {
     using (var connection = GetOpenConnection())
     {
         var keyMaster = new KeyMaster {
             Key1 = 1, Key2 = 2
         };
         connection.Insert(keyMaster);
         var car = connection.Get <KeyMaster>(new { Key1 = 1, Key2 = 2 });
         connection.Delete(car);
         Assert.Null(connection.Get <KeyMaster>(keyMaster));
     }
 }
Esempio n. 13
0
        public override IEnumerable <IEntity> GetConcepts(Concept concept, IDataRecord reader, KeyMasterOffset keyOffset)
        {
            var id = string.IsNullOrEmpty(Id) ? KeyMaster.GetLocationId() : reader.GetLong(Id);

            yield return(new Location
            {
                Id = id.Value,
                State = reader.GetString(State),
                SourceValue = reader.GetString(SourceValue),
                County = reader.GetString(Country),
                Address1 = reader.GetString(Address1),
                Address2 = reader.GetString(Address2)
            });
        }
Esempio n. 14
0
        public override IEnumerable <IEntity> GetConcepts(Concept concept, IDataReader reader, KeyMasterOffset keyMaster)
        {
            var conceptField = Concepts[0].Fields[0];
            var id           = string.IsNullOrEmpty(Id) ? KeyMaster.GetOrganizationId() : int.Parse(reader[Id].ToString());

            yield return(new Organization
            {
                Id = id,
                ConceptId = conceptField.DefaultConceptId.HasValue ? conceptField.DefaultConceptId.Value : 0,
                LocationId = 0,
                SourceValue = reader[conceptField.Key].ToString().Trim(),
                PlaceOfSvcSourceValue = string.IsNullOrEmpty(PlaceOfService) ? "" : reader[PlaceOfService].ToString()
            });
        }
        public override IEnumerable <IEntity> GetConcepts(Concept concept, IDataRecord reader, KeyMasterOffset keyOffset)
        {
            var conceptField = Concepts[0].Fields[0];
            var id           = string.IsNullOrEmpty(Id) ? KeyMaster.GetOrganizationId() : reader.GetLong(Id);

            yield return(new Organization
            {
                Id = id.Value,
                ConceptId = conceptField.DefaultConceptId.HasValue ? conceptField.DefaultConceptId.Value : 0,
                LocationId = 0,
                SourceValue = reader.GetString(conceptField.Key),
                PlaceOfSvcSourceValue = string.IsNullOrEmpty(PlaceOfService) ? "" : reader.GetString(PlaceOfService)
            });
        }
Esempio n. 16
0
        public async Task TestMultipleKeyGetAsync()
        {
            using (var connection = GetOpenConnection())
            {
                var keyMaster = new KeyMaster {
                    Key1 = 1, Key2 = 2
                };
                connection.Insert(keyMaster);
                var result = await connection.GetAsync <KeyMaster>(new { Key1 = 1, Key2 = 2 });

                Assert.Equal(1, result.Key1);
                Assert.Equal(2, result.Key2);
                connection.Delete(keyMaster);
            }
        }
Esempio n. 17
0
        public async Task TestInsertWithMultiplePrimaryKeysAsync()
        {
            using (var connection = GetOpenConnection())
            {
                var keyMaster = new KeyMaster {
                    Key1 = 1, Key2 = 2
                };
                await connection.InsertAsync(keyMaster);

                var result = await connection.GetAsync <KeyMaster>(new { Key1 = 1, Key2 = 2 });

                Assert.Equal(1, result.Key1);
                Assert.Equal(2, result.Key2);
                connection.Execute($"Delete from {_fixture.Encapsulate("KeyMaster")}");
            }
        }
Esempio n. 18
0
        public void DecodePublicKey()
        {
            var          km        = new KeyMaster();
            const string keyString =
                "MIIBCgKCAQEAr3a1JDZOo6oo6HGEhmFmkwmV6UNPdB4ZTZnv5KHI2j9Cc90h9aZvRkzd28NSh0fPP"
                + "/RxRMzAb5r08QgqcHWK5reBQGcj3k+f1gTyUlDssIBlbbP2Z/7VJsHPXoU53MLUZ4K/BPEKYkZV"
                + "CsWmVB07sWV4ThTsX934pxT+ybNH8FDdjGfLFwU3fINXQHVf34iwYcSJPWbtPb6dSrXD8c0h/X/"
                + "3WCaMjLhyvuXi4jdBLGAAP/UXBobqwFDcrW1CO5RSyEIjKcR2A6fvN1Kx6zGLzaZjWdb5miBU73"
                + "b6C0vjVjlIarK/+EYBrVUDLl3yBPfJn29SOoyQeejY8pTQ9XzgAwIDAQAB";
            PublicKey publicKey = km.DecodePublicKey(keyString);

            Assert.IsNotNull(publicKey);

            string encoded = km.EncodePublicKey(publicKey);

            Assert.IsNotNull(encoded);
        }
Esempio n. 19
0
        public void DecodePublicKeys2048Bit()
        {
            var km         = new KeyMaster();
            var keyStrings = new[]
            {
                "MIIBCgKCAQEAot5O95MHKNI5r7WUqt2wmgnZ4WqeOF4PKuL00cI+dfltJYXFxFdDHEZZ+g6Gs7tP1q19HfZhLP1E6MyE6y+RvU4xSR6Q4nIBWUo0KS7ehZwWCSmtIIC12r2OuofznMdbStRInpyTVikP2u9tna4mmJo8H2UVKRtXSqM63jMPx9fF/ndODfjxsaNvzG5BDgm/zZCEZaW9OEXxJNctTwKcAucNDOPocIYRp1RuJpL93knhB5byhRIg3deYiXVkXRvrsmynMIK9BHg1NEhWvGdimTThhWxyHjHo6O1FuiYoZ1zSc6AfOc88c6Ya/kXq+7rXVrNcwSoyyb8Ppr8n3zhEDQIDAQAB",
                "MIIBCgKCAQEAqkEdekpxLEI0j7GTOhFuOQoyyT8zv83zLxVAb2GJ9VqwdnZ3CDpZ7m+ukfiXDf6jLVAJg/vzSWFTTA/fbrh4nLIrjIobBHGGzr/8I6ZhhnYm05MApkGCoe4Efe5OniR4UxvnjwgLD3lxBGeOTEPF4k1nCdbJg1jn4vnQ5K2XsyiwydynsYPWJtbTTMYMldLb+NH2WMrMBHq6K8FEmddRYkBGZfVpVSpGm4UiHIbeqW/2oyiaF11kF6+TmnlTeRxdEvJb1RG+/ed7gP7RJdTGdVATKj+t6kUCvfuhALGIOCYNw4TAc75PgMGCv6851sX7lMc3ACw5yeoKempIhBXrpQIDAQAB",
                "MIIBCgKCAQEAr6Yr57hTk7vbNQqmTWhxfqAAuIe44ug9A/Z/Tn+8t3Gc+liu1GyTdse5LpuxfwGTHmHTWUDR/7em49UqKGjHuOePVF9lhQ2oeyayCV4h3YePAwWk4/mmXMPMftficN1AyIQ8T0Xug54Nz/gCnJb/nVmYc8Z78dFTyuERaowIoLVpkeU5uW22eRRPi1sl96mTYh6eN578uhV1pIBl8ksjyWw5osarCyv+XLriarCWTnNDYBpXwCEvmFCp4+DcoVEQigO1ckQSDoP6RX9iMYw9PsPH+kMCKtePiGcBNgMCkagiJzQ0eLZ0p7swk3NP6KvYijYkaG8kQPR5XRcVS3hd6wIDAQAB",
            };

            foreach (PublicKey publicKey in keyStrings.Select(km.DecodePublicKey))
            {
                Assert.IsNotNull(publicKey);

                string encoded = km.EncodePublicKey(publicKey);
                Assert.IsNotNull(encoded);
            }
        }
Esempio n. 20
0
        public void SymmetricEncryptDecrypt()
        {
            var km = new KeyMaster();
            var c  = new Cryptographer(km);

            SecretKey key = km.GenerateSecretKey();

            var msg = c.SymmetricEncrypt("test", key);

            Assert.IsNotNull(msg);
            Assert.IsNotNull(msg.Data);
            Assert.IsNotNull(msg.Key);

            var test = c.SymmetricDecrypt(msg);

            Assert.IsNotNull(test);
            Assert.AreEqual("test", test);
        }
Esempio n. 21
0
        public void HybridEncryptDecrypt()
        {
            var km = new KeyMaster();
            var c  = new Cryptographer(km);

            KeyPair kp = km.GenerateKeyPair();

            var msg = c.HybridEncrypt("test", kp.PublicKey);

            Assert.IsNotNull(msg);
            Assert.IsNotNull(msg.Data);
            Assert.IsNotNull(msg.Key);

            var test = c.HybridDecrypt(msg, kp.PrivateKey);

            Assert.IsNotNull(test);
            Assert.AreEqual("test", test);
        }
Esempio n. 22
0
        public void EncryptWithIosPublicKey()
        {
            var km = new KeyMaster();
            var c  = new Cryptographer(km);

            const string KeyString =
                "MIIBCgKCAQEAr3a1JDZOo6oo6HGEhmFmkwmV6UNPdB4ZTZnv5KHI2j9Cc90h9aZvRkzd28NSh0fPP"
                + "/RxRMzAb5r08QgqcHWK5reBQGcj3k+f1gTyUlDssIBlbbP2Z/7VJsHPXoU53MLUZ4K/BPEKYkZV"
                + "CsWmVB07sWV4ThTsX934pxT+ybNH8FDdjGfLFwU3fINXQHVf34iwYcSJPWbtPb6dSrXD8c0h/X/"
                + "3WCaMjLhyvuXi4jdBLGAAP/UXBobqwFDcrW1CO5RSyEIjKcR2A6fvN1Kx6zGLzaZjWdb5miBU73"
                + "b6C0vjVjlIarK/+EYBrVUDLl3yBPfJn29SOoyQeejY8pTQ9XzgAwIDAQAB";
            PublicKey publicKey = km.DecodePublicKey(KeyString);

            Message msg = c.HybridEncrypt("test", publicKey);

            Assert.IsNotNull(msg);
            Assert.IsNotNull(msg.Key);
            Assert.IsNotNull(msg.Data);
            Log.Info("Key  : " + msg.Key);
            Log.Info("Data : " + msg.Data);
        }
Esempio n. 23
0
        public void DecodePublicKeys1024Bit()
        {
            var km         = new KeyMaster();
            var keyStrings = new[]
            {
                "MIGJAoGBALoIV6AH3gC3KbTE8mAXTricCf2qNZqR/6qbcjxwbKqEBk9Hak/pfpX7MbPOJNZP+gxpAvK1t74EiQ8RYFmXnzaruX9k4HFeRj6m2CmOVD5gzuY41zvKKsE1rr0CWASD7M9XiOrwIyw0CW4ZNSl7wRT6uLMVclpX+tVVKTjc2o7dAgMBAAE="
                ,
                "MIGJAoGBALnNs5r1GX25qYPWTh8R64MVF2Y/+DywL2urxTavkQpsGoehLlGV9DtBv0CFqmfhrVMkLvSWYq/TpCOik9nXRqtFCyplbWmIv8X8ecbK5T5lHzE1GlYU1ulrMWKOT8f0XHWoOTlXJG8cQxoVpBsCejnuYnRevQ/IRKYJmAN0RzNdAgMBAAE="
                ,
                "MIGJAoGBALx7/FFCf6GteaW+uv30xIdfrcUSGqs2KuRlLoG3+2QZR7pk1xDLnldoz/aj1fZrg15RCYe/ckp0Drevgmt7IOIpkHeoHGtv0yyfdNOWp0rlC3Ma1fWJ70p/Ch8lkqNtCHxts2fjpncDSTbE8VQ59dDktYTPpIhVKROm5lMGe9cHAgMBAAE="
                ,
                "MIGJAoGBANXUeKhgG/9I2LHbv0qBPihawfdB+uupRBMWXUjYKCutS4Ono2ikpZaoZUupda0useouv4ZXLStRzsZnVQAKjjTng0prAEVb+HAsvh8h8vbxNievzqnB4azVkPL+tcgZda7ay7ooYdidODgpfn4HqQsSu0j79fs7r1jcZvPxGiUDAgMBAAE="
                ,
            };

            foreach (PublicKey publicKey in keyStrings.Select(km.DecodePublicKey))
            {
                Assert.IsNotNull(publicKey);

                string encoded = km.EncodePublicKey(publicKey);
                Assert.IsNotNull(encoded);
            }
        }
Esempio n. 24
0
 void Awake()
 {
     km_scr = this;
 }
Esempio n. 25
0
        public override IEnumerable <IEntity> GetConcepts(Concept concept, IDataReader reader, KeyMasterOffset keyMaster)
        {
            long id;
            var  idUndefined = false;

            if (string.IsNullOrEmpty(Id))
            {
                id          = KeyMaster.GetProviderId();
                idUndefined = true;
            }
            else
            {
                id = reader.GetLong(Id).Value;
            }

            if (concept == null)
            {
                yield return(new Provider
                {
                    Id = id,
                    CareSiteId = reader.GetInt(CareSiteId) ?? 0,
                    ProviderSourceValue = reader.GetString(ProviderSourceValue),
                    SourceValue = reader.GetString(SpecialtySourceValue)
                });
            }
            else
            {
                var conceptField = concept.Fields[0];


                var source = reader.GetString(conceptField.Key) ?? reader.GetString(conceptField.SourceKey);

                if (source != null && source.Length == 0)
                {
                    source = null;
                }

                var  specialtyConceptIds = concept.GetValues(Vocabulary, conceptField, reader).ToList();
                long?specialtyConcept    = null;

                //(Unknown Physician Specialty)
                long defaultConceptId = 38004514;

                if (conceptField.DefaultConceptId.HasValue)
                {
                    defaultConceptId = conceptField.DefaultConceptId.Value;
                }

                if (specialtyConceptIds.Count > 0)
                {
                    specialtyConcept = specialtyConceptIds[0].ConceptId;
                }

                yield return(new Provider
                {
                    Id = id,
                    IdUndefined = idUndefined,
                    CareSiteId = reader.GetInt(CareSiteId) ?? 0,
                    ConceptId = specialtyConcept.HasValue ? specialtyConcept.Value : defaultConceptId,
                    ProviderSourceValue = reader.GetString(ProviderSourceValue),
                    SourceValue =
                        string.IsNullOrEmpty(conceptField.SourceKey) ? source : reader.GetString(conceptField.SourceKey)
                });
            }
        }
Esempio n. 26
0
        public override IEnumerable <IEntity> GetConcepts(Concept concept, IDataRecord reader, KeyMasterOffset keyOffset)
        {
            var  id        = string.IsNullOrEmpty(Id) ? KeyMaster.GetCareSiteId() : reader.GetLong(Id);
            long conceptId = 0;

            if (!string.IsNullOrEmpty(PlaceOfSvcConceptId) && reader.GetLong(PlaceOfSvcConceptId).HasValue)
            {
                conceptId = reader.GetLong(PlaceOfSvcConceptId).Value;
            }

            var locationId          = reader.GetLong(LocationId);
            var careSiteSourceValue = string.IsNullOrEmpty(CareSiteSourceValue)
            ? id.Value.ToString(CultureInfo.InvariantCulture)
            : reader.GetString(CareSiteSourceValue);

            if (concept == null)
            {
                yield return(new CareSite
                {
                    Id = id.Value,
                    LocationId = locationId.HasValue ? locationId.Value : 0,
                    PlaceOfSvcSourceValue = reader.GetString(PlaceOfSvcSourceValue),
                    ConceptId = conceptId,
                    Name = reader.GetString(Name),
                    SourceValue = careSiteSourceValue
                });
            }
            else
            {
                var conceptField = concept.Fields[0];

                var source = reader.GetString(conceptField.Key) ?? reader.GetString(conceptField.SourceKey);
                if (source != null && source.Length == 0)
                {
                    source = null;
                }

                var  placeOfSvcConceptIds = concept.GetConceptIdValues(Vocabulary, conceptField, reader).ToList();
                long?placeOfSvcConceptId  = null;

                long defaultConceptId = 0;
                if (conceptField.DefaultConceptId.HasValue)
                {
                    defaultConceptId = conceptField.DefaultConceptId.Value;
                }

                if (placeOfSvcConceptIds.Count > 0 && placeOfSvcConceptIds[0].ConceptId != 0)
                {
                    placeOfSvcConceptId = placeOfSvcConceptIds[0].ConceptId;
                }

                yield return(new CareSite
                {
                    Id = id.Value,
                    LocationId = locationId.HasValue ? locationId.Value : 0,
                    PlaceOfSvcSourceValue = source,
                    ConceptId = placeOfSvcConceptId.HasValue ? placeOfSvcConceptId.Value : defaultConceptId,
                    Name = reader.GetString(Name),
                    SourceValue = careSiteSourceValue
                });
            }
        }
Esempio n. 27
0
        public override IEnumerable <IEntity> GetConcepts(Concept concept, IDataRecord reader, KeyMasterOffset keyOffset)
        {
            long id;
            var  idUndefined     = false;
            int  genderConceptId = 0;

            if (string.IsNullOrEmpty(Id))
            {
                id          = KeyMaster.GetProviderId();
                idUndefined = true;
            }
            else
            {
                id = reader.GetLong(Id).Value;
            }

            if (string.IsNullOrEmpty(GenderConceptId) && Vocabulary != null)
            {
                genderConceptId = Vocabulary.LookupGender(GenderSourceValue) ?? 0;
            }
            else if (reader.GetInt(GenderConceptId).HasValue)
            {
                genderConceptId = reader.GetInt(GenderConceptId).Value;
            }

            if (concept == null)
            {
                yield return(new Provider
                {
                    Id = id,
                    CareSiteId = reader.GetInt(CareSiteId) ?? 0,
                    ProviderSourceValue = reader.GetString(ProviderSourceValue),
                    SourceValue = reader.GetString(SpecialtySourceValue),
                    NPI = reader.GetString(NPI),
                    DEA = reader.GetString(DEA),
                    Name = reader.GetString(Name),
                    YearOfBirth = reader.GetInt(YearOfBirth),
                    GenderConceptId = genderConceptId,
                    GenderSourceValue = reader.GetString(GenderSourceValue),
                    GenderSourceConceptId = reader.GetInt(GenderSourceConceptId) ?? 0,
                    SpecialtySourceConceptId = reader.GetInt(SpecialtySourceConceptId) ?? 0,
                    LookupKey = reader.GetString(LookupKey)
                });
            }
            else
            {
                var conceptField = concept.Fields[0];


                var source = reader.GetString(conceptField.Key) ?? reader.GetString(conceptField.SourceKey);

                if (source != null && source.Length == 0)
                {
                    source = null;
                }

                var  specialtyConceptIds = concept.GetConceptIdValues(Vocabulary, conceptField, reader).ToList();
                long?specialtyConcept    = null;

                //(Unknown Physician Specialty)
                long defaultConceptId = 38004514;

                if (conceptField.DefaultConceptId.HasValue)
                {
                    defaultConceptId = conceptField.DefaultConceptId.Value;
                }

                if (specialtyConceptIds.Count > 0 && specialtyConceptIds[0].ConceptId != 0)
                {
                    specialtyConcept = specialtyConceptIds[0].ConceptId;
                }

                yield return(new Provider
                {
                    Id = id,
                    IdUndefined = idUndefined,
                    CareSiteId = reader.GetInt(CareSiteId) ?? 0,
                    ConceptId = specialtyConcept.HasValue ? specialtyConcept.Value : defaultConceptId,
                    ProviderSourceValue = reader.GetString(ProviderSourceValue),
                    SourceValue = source,
                    Name = reader.GetString(Name),
                    YearOfBirth = reader.GetInt(YearOfBirth),
                    GenderConceptId = genderConceptId,
                    GenderSourceValue = reader.GetString(GenderSourceValue),
                    NPI = reader.GetString(NPI),
                    DEA = reader.GetString(DEA),
                    GenderSourceConceptId = reader.GetInt(GenderSourceConceptId) ?? 0,
                    SpecialtySourceConceptId = reader.GetInt(SpecialtySourceConceptId) ?? 0,
                    LookupKey = reader.GetString(LookupKey)
                });
            }
        }