private static PersonRegistryClient CreateClient() { var client = new PersonRegistryClient(); client.ClientCredentials.UserName.UserName = ConfigurationManager.AppSettings["username"]; client.ClientCredentials.UserName.Password = ConfigurationManager.AppSettings["password"]; return(client); }
private static void RevisePersonRecord(PersonRegistryClient client) { var info = ReadPersonalInformation(true, true); var outerPerson = new PRPA_MT101302NO01IdentifiedPerson { id = new[] { new II { root = GetOid(info.FhNumber), extension = info.FhNumber } }, identifiedPerson = new PRPA_MT101302NO01Person() }; var nameItems = CreateNameItems(info); if (nameItems.Count() > 0) { outerPerson.identifiedPerson.name = new[] { new PN(nameItems) } } ; if (IsDateSpecifiedAndValid(info.DateOfBirth)) { outerPerson.identifiedPerson.birthTime = new TS(info.DateOfBirth); } var addressItems = CreateAddressItems(info); if (addressItems.Count() > 0) { outerPerson.identifiedPerson.addr = new[] { new AD(addressItems) } } ; if (info.Gender != "") { outerPerson.identifiedPerson.administrativeGenderCode = CreateAdministrativeGenderCode(info.Gender); } var request = SetTopLevelFields(new PRPA_IN101314NO01 { controlActProcess = new PRPA_IN101314NO01MFMI_MT700721UV01ControlActProcess { subject = new PRPA_IN101314NO01MFMI_MT700721UV01Subject1 { registrationRequest = new PRPA_IN101314NO01MFMI_MT700721UV01RegistrationRequest { subject1 = new PRPA_IN101314NO01MFMI_MT700721UV01Subject2 { identifiedPerson = outerPerson } } } } }); RevisePersonRecordRequestSerializer.Serialize(Console.Out, request); Console.WriteLine("\n"); PRPA_IN101319NO01 response = client.RevisePersonRecord(request); AddPersonOrRevisePersonRecordResponseSerializer.Serialize(Console.Out, response); Console.WriteLine(); }
internal static void UnlinkPersonRecords(PersonRegistryClient client) { Console.Write("Enter child FH-number: "); string obsoleteFhNumber = Console.ReadLine(); Console.Write("Enter parent ID-number or FH-number: "); string survivingIdNumberOrFhNumber = Console.ReadLine(); if (string.IsNullOrWhiteSpace(obsoleteFhNumber) || string.IsNullOrWhiteSpace(survivingIdNumberOrFhNumber)) { return; } var request = SetTopLevelFields(new PRPA_IN101911NO01 { controlActProcess = new PRPA_IN101911NO01MFMI_MT700721UV01ControlActProcess { subject = new PRPA_IN101911NO01MFMI_MT700721UV01Subject1 { registrationRequest = new PRPA_IN101911NO01MFMI_MT700721UV01RegistrationRequest { subject1 = new PRPA_IN101911NO01MFMI_MT700721UV01Subject2 { identifiedPerson = new PRPA_MT101911NO01IdentifiedPerson { id = new[] { new II(GetIdOid(survivingIdNumberOrFhNumber), survivingIdNumberOrFhNumber) }, identifiedBy = new PRPA_MT101911NO01SourceOf2 { //TODO: Is the value of statusCode important? otherIdentifiedPerson = new PRPA_MT101911NO01OtherIdentifiedPerson { id = new II(GetIdOid(obsoleteFhNumber), obsoleteFhNumber) } } } } } } } }); UnlinkPersonRecordsRequestSerializer.Serialize(Console.Out, request); Console.WriteLine("\n"); MCAI_IN000004NO01 response = client.UnlinkPersonRecordsAsync(request).Result; AcknowledgementSerializer.Serialize(Console.Out, response); Console.WriteLine(); }
private static void FindCandidates(PersonRegistryClient client) { var info = ReadPersonalInformation(false, false); var paramList = new PRPA_MT101306NO01ParameterList(); var nameItems = CreateNameItems(info); if (nameItems.Count() > 0) { paramList.personName = CreatePersonNameParameter(nameItems); } if (IsDateSpecifiedAndValid(info.DateOfBirth)) { paramList.personBirthTime = CreatePersonBirthTimeParameter(info.DateOfBirth); } var addressItems = CreateAddressItems(info); if (addressItems.Count() > 0) { paramList.identifiedPersonAddress = CreateIdentifiedPersonAddressParameter(addressItems); } var message = SetTopLevelFields(new PRPA_IN101305NO01 { controlActProcess = new PRPA_IN101305NO01QUQI_MT021001UV01ControlActProcess { queryByParameter = new PRPA_MT101306NO01QueryByParameter { parameterList = paramList } } }); FindCandidatesRequestSerializer.Serialize(Console.Out, message); Console.WriteLine("\n"); PRPA_IN101306NO01 result = client.FindCandidates(message); FindCandidatesResponseSerializer.Serialize(Console.Out, result); Console.WriteLine("\n"); Console.WriteLine("Found {0} persons:", result.controlActProcess.queryAck.resultTotalQuantity.value); if (result.controlActProcess.subject != null) { foreach (var subject in result.controlActProcess.subject) { Console.WriteLine(PersonToString(subject.registrationEvent.subject1.identifiedPerson)); } } }
internal static PersonRegistryClient CreateClient() { var client = new PersonRegistryClient { Endpoint = { Address = new EndpointAddress( new Uri(_configuration["ConnectionStrings:PregHl7Uri"]), new DnsEndpointIdentity(_configuration["ConnectionStrings:PregHl7Dns"])), Binding = new WSHttpBinding(SecurityMode.TransportWithMessageCredential) { Security = { Message = new NonDualMessageSecurityOverHttp { ClientCredentialType = MessageCredentialType.UserName }, Transport = new HttpTransportSecurity { ClientCredentialType = HttpClientCredentialType.None } }, AllowCookies = true, MaxReceivedMessageSize = int.MaxValue, MaxBufferPoolSize = int.MaxValue, CloseTimeout = new TimeSpan(0, 1, 0), OpenTimeout = new TimeSpan(0, 1, 0), ReceiveTimeout = new TimeSpan(0, 10, 0), SendTimeout = new TimeSpan(0, 1, 0) } }, ClientCredentials = { UserName = { UserName = _configuration["ClientCredentials:Username"], Password = _configuration["ClientCredentials:Password"] } } }; //var requestInterceptor = new CustomInspectorBehavior(); //client.Endpoint.EndpointBehaviors.Add(requestInterceptor); return(client); }
public static void RunPerformanceTest(PersonRegistryClient client) { var sw = new Stopwatch(); sw.Start(); client.GetDemographicsAsync(CreateGetDemographicsRequest(new II(IdNumberOid.FhNumber, CreateRandomFhNumber()))); sw.Stop(); Console.WriteLine("Initial request: " + sw.Elapsed); sw.Restart(); const int numRequests = 1000; for (var i = 0; i < numRequests; ++i) { client.GetDemographicsAsync(CreateGetDemographicsRequest(new II(IdNumberOid.FhNumber, CreateRandomFhNumber()))); } sw.Stop(); Console.WriteLine("{0} subsequent requests: {1} ({2} ms per request)", numRequests, sw.Elapsed, sw.ElapsedMilliseconds / numRequests); sw.Restart(); const int numIndividualRequests = 100; for (var i = 0; i < numIndividualRequests; ++i) { using (var c = Program.CreateClient()) { c.GetDemographicsAsync(CreateGetDemographicsRequest(new II(IdNumberOid.FhNumber, CreateRandomFhNumber()))); } } sw.Stop(); Console.WriteLine("{0} individual requests: {1} ({2} ms per request)", numIndividualRequests, sw.Elapsed, sw.ElapsedMilliseconds / numIndividualRequests); const int numThreads = 20; var threads = new Thread[numThreads]; for (int i = 0; i < numThreads; ++i) { threads[i] = new Thread(ThreadTester); threads[i].Start(i); } foreach (var thread in threads) { thread.Join(); } }
internal static void GetDemographics(PersonRegistryClient client) { string idNumber = ReadLineAndTrim("Enter id number: "); if (string.IsNullOrWhiteSpace(idNumber)) { return; } var id = new II { root = GetIdOid(idNumber.Trim()), extension = idNumber.Trim() }; PRPA_IN101307NO01 request = CreateGetDemographicsRequest(id); GetDemographicsRequestSerializer.Serialize(Console.Out, request); Console.WriteLine("\n"); PRPA_IN101308NO01 response = client.GetDemographicsAsync(request).Result; GetDemographicsResponseSerializer.Serialize(Console.Out, response); Console.WriteLine("\n"); string queryResponseCode = response.controlActProcess.queryAck.queryResponseCode.code; switch (queryResponseCode) { case QueryResponseCode.Ok: Console.WriteLine(PersonToString(response.controlActProcess.subject[0].registrationEvent.subject1 .identifiedPerson)); break; case QueryResponseCode.NoResultsFound: Console.WriteLine("No results found"); break; case QueryResponseCode.QueryParameterError: Console.WriteLine("Query parameter error"); break; default: Console.WriteLine($"Unrecognized query response code: '{queryResponseCode}'"); break; } }
internal static void AddPerson(PersonRegistryClient client) { var info = ReadPersonalInformation(false, true, true, true); var innerPerson = new PRPA_MT101311NO01Person(); // Registrerer navn var nameItems = CreateNameItems(info); var enumerable = nameItems.ToList(); if (enumerable.Any()) { innerPerson.name = new[] { new PN(enumerable) } } ; // Registrerer fødselsdato if (IsDateSpecifiedAndValid(info.dateOfBirth)) { innerPerson.birthTime = new TS(info.dateOfBirth); } // Registrerer adresser var addressItems = CreateAddressItems(info); var items = addressItems.ToList(); if (items.Any()) { var addressList = new List <AD>(); foreach (var(key, value) in items) { switch (key) { case "private": addressList.Add(new AD(value, new[] { PostalAddressUse.H })); break; case "temp": addressList.Add(new AD(value, new[] { PostalAddressUse.TMP })); break; } } innerPerson.addr = addressList.ToArray(); } // Registrerer kjønn if (info.gender != "") { innerPerson.administrativeGenderCode = CreateAdministrativeGenderCode(info.gender); } // Registrerer kontaktmåte - mobil var telecomItems = CreateTelecomItems(info); var tel = telecomItems.ToList(); if (tel.Any()) { innerPerson.telecom = tel.ToArray(); } // OtherID if (info.passNr != "") { innerPerson.asOtherIDs = new[] { new PRPA_MT101311NO01OtherIDs() { id = new[] { new II { root = GetNationalityOid(info.passNrIssuerNationality), extension = info.passNr } } } }; } var request = SetTopLevelFields(new PRPA_IN101311NO01 { controlActProcess = new PRPA_IN101311NO01MFMI_MT700721UV01ControlActProcess { subject = new PRPA_IN101311NO01MFMI_MT700721UV01Subject1 { registrationRequest = new PRPA_IN101311NO01MFMI_MT700721UV01RegistrationRequest { subject1 = new PRPA_IN101311NO01MFMI_MT700721UV01Subject2 { identifiedPerson = new PRPA_MT101311NO01IdentifiedPerson { identifiedPerson = innerPerson } } } } } }); AddPersonRequestSerializer.Serialize(Console.Out, request); Console.WriteLine("\n"); PRPA_IN101319NO01 response = client.AddPersonAsync(request).Result; AddPersonOrRevisePersonRecordResponseSerializer.Serialize(Console.Out, response); Console.WriteLine("\n"); var pathToFirstNull = new List <string>(); var subject = NullSafeObjectPathTraverser.Traverse(response, r => r.controlActProcess.subject, pathToFirstNull); if (subject == null || subject.Length <= 0) { return; } var id = NullSafeObjectPathTraverser.Traverse(subject[0], s => s.registrationEvent.subject1.identifiedPerson.id, pathToFirstNull); if (id != null && id.Length > 0) { Console.WriteLine("The person has been given the FH-number " + id[0].extension); } }
private static void AddPerson(PersonRegistryClient client) { var info = ReadPersonalInformation(false, true); var innerPerson = new PRPA_MT101311NO01Person(); var nameItems = CreateNameItems(info); if (nameItems.Count() > 0) { innerPerson.name = new[] { new PN(nameItems) } } ; if (IsDateSpecifiedAndValid(info.DateOfBirth)) { innerPerson.birthTime = new TS(info.DateOfBirth); } var addressItems = CreateAddressItems(info); if (addressItems.Count() > 0) { innerPerson.addr = new[] { new AD(addressItems) } } ; if (info.Gender != "") { innerPerson.administrativeGenderCode = CreateAdministrativeGenderCode(info.Gender); } var request = SetTopLevelFields(new PRPA_IN101311NO01 { controlActProcess = new PRPA_IN101311NO01MFMI_MT700721UV01ControlActProcess { subject = new PRPA_IN101311NO01MFMI_MT700721UV01Subject1 { registrationRequest = new PRPA_IN101311NO01MFMI_MT700721UV01RegistrationRequest { subject1 = new PRPA_IN101311NO01MFMI_MT700721UV01Subject2 { identifiedPerson = new PRPA_MT101311NO01IdentifiedPerson { identifiedPerson = innerPerson } } } } } }); AddPersonRequestSerializer.Serialize(Console.Out, request); Console.WriteLine("\n"); PRPA_IN101319NO01 response = client.AddPerson(request); AddPersonOrRevisePersonRecordResponseSerializer.Serialize(Console.Out, response); Console.WriteLine("\n"); var pathToFirstNull = new List <string>(); var subject = NullSafeObjectPathTraverser.Traverse(response, r => r.controlActProcess.subject, pathToFirstNull); if (subject != null && subject.Length > 0) { var id = NullSafeObjectPathTraverser.Traverse(subject[0], s => s.registrationEvent.subject1.identifiedPerson.id, pathToFirstNull); if (id != null && id.Length > 0) { Console.WriteLine("The person has been given the FH-number " + id[0].extension); } } }
internal static void FindCandidates(PersonRegistryClient client) { var info = ReadPersonalInformation(false, true, false, true); var paramList = new PRPA_MT101306NO01ParameterList(); // Search for people created within specified period //var requestCreation = false; //var resp = ReadLineAndTrim("Søke på creationTime (J/N): "); //if (resp.ToUpper() == "J") requestCreation = true; //if (requestCreation) //{ // var creationFrom = ReadLineAndTrim($"Fra dato ({DateFormat}): "); // var creationTo = ReadLineAndTrim($"Til dato ({DateFormat}): "); // var ds = new PRPA_MT101306NO01QueryByParameter(); // ds. //} var nameItems = CreateNameItems(info); var items = nameItems.ToList(); if (items.Any()) { paramList.personName = CreatePersonNameParameter(items); } if (IsDateSpecifiedAndValid(info.dateOfBirth)) { paramList.personBirthTime = CreatePersonBirthTimeParameter(info.dateOfBirth); } if (info.gender != string.Empty) { paramList.personAdministrativeGender = CreatePersonAdministrativeGenderParameter(info.gender); } var addressItems = CreateAddressItems(info); var addressList = addressItems.ToList(); if (addressList.Any()) { foreach (var addrItem in addressList) { paramList.identifiedPersonAddress = addrItem.Key switch { "private" => CreateIdentifiedPersonAddressParameter(addrItem.Value, PostalAddressUse.H), "temp" => CreateIdentifiedPersonAddressParameter(addrItem.Value, PostalAddressUse.WP), _ => paramList.identifiedPersonAddress }; } } var message = SetTopLevelFields(new PRPA_IN101305NO01 { controlActProcess = new PRPA_IN101305NO01QUQI_MT021001UV01ControlActProcess { queryByParameter = new PRPA_MT101306NO01QueryByParameter { parameterList = paramList } } }); FindCandidatesRequestSerializer.Serialize(Console.Out, message); Console.WriteLine("\n"); PRPA_IN101306NO01 result = client.FindCandidatesAsync(message).Result; FindCandidatesResponseSerializer.Serialize(Console.Out, result); Console.WriteLine("\n"); Console.WriteLine("Found {0} persons:", result.controlActProcess.queryAck.resultTotalQuantity.value); if (result.controlActProcess.subject != null) { foreach (var subject in result.controlActProcess.subject) { Console.WriteLine(PersonToString(subject.registrationEvent.subject1.identifiedPerson)); } } }