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); }