private void SendMessage(int i, List <Pacient> patients)
        {
            var myBinding = new WSHttpBinding(SecurityMode.None);

            myBinding.MessageEncoding = WSMessageEncoding.Text;

            var myEndpoint = new EndpointAddress("http://medframe.burmiac.ru/rias/service.svc");

            Rias.StatServiceClient client = new StatServiceClient(myBinding, myEndpoint);
            var myEndPointBehavior        = new MyEndpointBehavior();

            client.Endpoint.Behaviors.Add(myEndPointBehavior);


            //токен доступа к сервису
            Guid guid = Guid.Parse("4926c49b-dd05-4ffc-a281-5f134d14a671");

            //идентиификатор организации
            string idOrg = "1.2.643.5.1.13.3.25.3.32";


            var maxCount = 500;

            client.Open();
            Console.WriteLine("Task: " + i);

            var takenPatients = patients.Take((i + 1) * maxCount).Skip(i * maxCount);

            var sb    = new StringBuilder();
            int count = 0;

            foreach (Pacient p in takenPatients)
            {
                Console.WriteLine("Пациент: " + p.FullName);
                Console.WriteLine("Преобразуем нашего пациента к их пациенту.");
                Rias.Patient patient = null; try
                {
                    patient = GetRiasPatient(p);
                    if (patient == null)
                    {
                        Console.WriteLine("Что-то пошло не так!");
                        continue;
                    }
                }
                catch (Exception)
                {
                    continue;
                }


                Console.WriteLine("Добавляем его:");
                try
                {
                    var answer = client.AddPatient(guid, idOrg, patient);

                    if (answer.Success)
                    {
                        Console.WriteLine("Успешно добавлено!");
                    }
                    else
                    {
                        Console.WriteLine("Код ошибки:" + answer.Code);
                        Console.WriteLine("Выполнено с ошибками:");
                        foreach (var entityValidationResult in answer.Errors)
                        {
                            Console.WriteLine(entityValidationResult.ErrorMessage);
                        }

                        var existMsg = "Пациент с такими данными существует";

                        if (answer.Errors.Count() == 1 && answer.Errors[0].ErrorMessage.Equals(existMsg))
                        {
                            Console.WriteLine("Ах так, тогда меняем данные пациента!");

                            // Поменяем фамилию
                            patient.Familyname += "_ADDED_FUST_FOR_TEST!_";

                            var policies = patient.InsurancePolicy.ToList();
                            // Добавим полис с неправильным номером
                            policies.Add(new InsurancePolicy()
                            {
                                CompanyCode = "22001", Isvalid = false, Number = "1234567890123456!"
                            });

                            patient.InsurancePolicy = policies.ToArray();

                            client.UpdatePatient(guid, idOrg, patient);
                        }
                    }
                    count++;
                }
                catch (Exception ex)
                {
                    sb.AppendLine(ex.Message);
                }
            }

            File.WriteAllText(string.Format("log_thread {0}.txt", i), sb.ToString());

            client.Close();

            MessageBox.Show(count.ToString());
        }
        private Rias.Patient GetRiasPatient(Pacient p)
        {
            var patient = new Rias.Patient();

            patient.Familyname = p.LastName;
            patient.Firstname  = p.FirstName;
            patient.Middlename = p.MiddleName;

            patient.BirthDate = p.Birthdate;

            patient.BirthPlaceAddress = new Rias.Address()
            {
                StringAddress = p.BirthPlace
            };

            patient.LocationAddress = new Rias.Address();
            if (p.Address != null)
            {
                patient.LocationAddress.OKATO = p.Address.OKATO;
                var city = new[] { p.Address.Level1, p.Address.Level2, p.Address.Level3, p.Address.Level4 }.FirstOrDefault(t => t != null && t.IsCity == true);
                if (city != null)
                {
                    patient.LocationAddress.City = city.CodeOkato;
                }

                if (p.Address.Street != null)
                {
                    patient.LocationAddress.Street = p.Address.Street.CodeOkato;
                }

                patient.LocationAddress.AddressType = 1;

                patient.LocationAddress.StringAddress = p.Address.ToString();
            }

            patient.IdSex = (int)p.Gender;

            patient.SNILS = p.SNILS;

            var policies = new List <Rias.InsurancePolicy>();

            foreach (var policy in p.Polises)
            {
                policies.Add(new InsurancePolicy()
                {
                    CompanyCode = policy.SMO.Code,
                    Number      = policy.Number,
                    Serial      = policy.Serial,
                    Isvalid     = (policy.DateEnd == null) || (policy.DateEnd > DateTime.Now)
                });
            }

            patient.InsurancePolicy = policies.ToArray();

            var misInfos = new List <Rias.PatientMISInfo>();

            misInfos.Add(new PatientMISInfo()
            {
                IdPatientMIS = p.Oid.ToString()
            });

            patient.MISInfo = misInfos.ToArray();

            return(patient);
        }