public void TestMultipleAlternateIdentifiers() { options.Names.Clear(); options.Names.Add(new Name { FirstName = "Walter", LastName = "Gretzky", }); options.OtherIdentifiers.Add(new AlternateIdentifier("1.3.6.1.4.1.33349.3.1.5.100.0", "8385-171-683-CX")); options.OtherIdentifiers.Add(new AlternateIdentifier("1.3.6.1.4.1.33349.3.1.5.101.1", "1192-571-546-CX")); options.OtherIdentifiers.Add(new AlternateIdentifier("1.3.6.1.4.1.33349.3.1.5.102.2", "2115-060-045-CX")); var actual = EverestUtility.GenerateCandidateRegistry(options); Assert.IsInstanceOfType(actual, typeof(PRPA_IN101201CA)); PRPA_IN101201CA message = (PRPA_IN101201CA)actual; Assert.AreEqual("Mohawk College of Applied Arts and Technology", message.Receiver.Device.Id.Extension); Assert.AreEqual("SEEDING", message.Sender.Device.Id.Extension); Assert.AreEqual("Walter", message.controlActEvent.Subject.RegistrationRequest.Subject.registeredRole.IdentifiedPerson.Name.Select(x => x.Part).First().First(x => x.Type == MARC.Everest.DataTypes.EntityNamePartType.Given).Value); Assert.AreEqual("Gretzky", message.controlActEvent.Subject.RegistrationRequest.Subject.registeredRole.IdentifiedPerson.Name.Select(x => x.Part).First().First(x => x.Type == MARC.Everest.DataTypes.EntityNamePartType.Family).Value); Assert.IsNotNull(message.controlActEvent.Subject.RegistrationRequest.Subject.registeredRole.IdentifiedPerson.BirthTime.Value); Assert.AreEqual(7, message.controlActEvent.Subject.RegistrationRequest.Subject.registeredRole.Id.Count); Assert.AreEqual("8385-171-683-CX", message.controlActEvent.Subject.RegistrationRequest.Subject.registeredRole.Id.Where(x => x.Root == "1.3.6.1.4.1.33349.3.1.5.100.0").Select(x => x.Extension).First()); Assert.AreEqual("1192-571-546-CX", message.controlActEvent.Subject.RegistrationRequest.Subject.registeredRole.Id.Where(x => x.Root == "1.3.6.1.4.1.33349.3.1.5.101.1").Select(x => x.Extension).First()); Assert.AreEqual("2115-060-045-CX", message.controlActEvent.Subject.RegistrationRequest.Subject.registeredRole.Id.Where(x => x.Root == "1.3.6.1.4.1.33349.3.1.5.102.2").Select(x => x.Extension).First()); }
public void TestPartialAddress() { options.Addresses.Clear(); options.Addresses.Add(new Address { City = "Chicago", Country = "United States of America", StateProvince = "Illinois" }); options.Names.Clear(); options.Names.Add(new Name { FirstName = "Joel", LastName = "Quinnville", }); var actual = EverestUtility.GenerateCandidateRegistry(options); Assert.IsInstanceOfType(actual, typeof(PRPA_IN101201CA)); PRPA_IN101201CA message = (PRPA_IN101201CA)actual; Assert.AreEqual("Mohawk College of Applied Arts and Technology", message.Receiver.Device.Id.Extension); Assert.AreEqual("SEEDING", message.Sender.Device.Id.Extension); Assert.AreEqual("Joel", message.controlActEvent.Subject.RegistrationRequest.Subject.registeredRole.IdentifiedPerson.Name.Select(x => x.Part).First().First(x => x.Type == MARC.Everest.DataTypes.EntityNamePartType.Given).Value); Assert.AreEqual("Quinnville", message.controlActEvent.Subject.RegistrationRequest.Subject.registeredRole.IdentifiedPerson.Name.Select(x => x.Part).First().First(x => x.Type == MARC.Everest.DataTypes.EntityNamePartType.Family).Value); Assert.IsNotNull(message.controlActEvent.Subject.RegistrationRequest.Subject.registeredRole.IdentifiedPerson.BirthTime.Value); Assert.AreEqual(4, message.controlActEvent.Subject.RegistrationRequest.Subject.registeredRole.Id.Count); Assert.AreEqual("Chicago", message.controlActEvent.Subject.RegistrationRequest.Subject.registeredRole.IdentifiedPerson.Addr.Select(x => x.Part).First().First(x => x.Type == MARC.Everest.DataTypes.AddressPartType.City).Value); Assert.AreEqual("United States of America", message.controlActEvent.Subject.RegistrationRequest.Subject.registeredRole.IdentifiedPerson.Addr.Select(x => x.Part).First().First(x => x.Type == MARC.Everest.DataTypes.AddressPartType.Country).Value); Assert.AreEqual("Illinois", message.controlActEvent.Subject.RegistrationRequest.Subject.registeredRole.IdentifiedPerson.Addr.Select(x => x.Part).First().First(x => x.Type == MARC.Everest.DataTypes.AddressPartType.State).Value); }
public void TestEmptyName() { options.Names.Clear(); var actual = EverestUtility.GenerateCandidateRegistry(options); Assert.IsInstanceOfType(actual, typeof(PRPA_IN101201CA)); PRPA_IN101201CA message = (PRPA_IN101201CA)actual; Assert.AreEqual("Mohawk College of Applied Arts and Technology", message.Receiver.Device.Id.Extension); Assert.AreEqual("SEEDING", message.Sender.Device.Id.Extension); Assert.AreEqual(0, message.controlActEvent.Subject.RegistrationRequest.Subject.registeredRole.IdentifiedPerson.Name.Count); Assert.IsNotNull(message.controlActEvent.Subject.RegistrationRequest.Subject.registeredRole.IdentifiedPerson.BirthTime.Value); }
public void TestGenderUndifferentiated() { options.Gender = "UN"; var actual = EverestUtility.GenerateCandidateRegistry(options); Assert.IsInstanceOfType(actual, typeof(PRPA_IN101201CA)); PRPA_IN101201CA message = (PRPA_IN101201CA)actual; Assert.AreEqual("Mohawk College of Applied Arts and Technology", message.Receiver.Device.Id.Extension); Assert.AreEqual("SEEDING", message.Sender.Device.Id.Extension); Assert.IsNotNull(message.controlActEvent.Subject.RegistrationRequest.Subject.registeredRole.IdentifiedPerson.BirthTime.Value); Assert.AreEqual("undifferentiated", message.controlActEvent.Subject.RegistrationRequest.Subject.registeredRole.IdentifiedPerson.AdministrativeGenderCode.DisplayName.Value); }
public void TestEmptyDateOfBirth() { options.DateOfBirthOptions = null; options.Names.Clear(); options.Names.Add(new Name { FirstName = "Strawberry", LastName = "Shortcake", }); var actual = EverestUtility.GenerateCandidateRegistry(options); Assert.IsInstanceOfType(actual, typeof(PRPA_IN101201CA)); PRPA_IN101201CA message = (PRPA_IN101201CA)actual; Assert.AreEqual("Mohawk College of Applied Arts and Technology", message.Receiver.Device.Id.Extension); Assert.AreEqual("SEEDING", message.Sender.Device.Id.Extension); Assert.AreEqual("Strawberry", message.controlActEvent.Subject.RegistrationRequest.Subject.registeredRole.IdentifiedPerson.Name.Select(x => x.Part).First().First(x => x.Type == MARC.Everest.DataTypes.EntityNamePartType.Given).Value); Assert.AreEqual("Shortcake", message.controlActEvent.Subject.RegistrationRequest.Subject.registeredRole.IdentifiedPerson.Name.Select(x => x.Part).First().First(x => x.Type == MARC.Everest.DataTypes.EntityNamePartType.Family).Value); Assert.IsNull(message.controlActEvent.Subject.RegistrationRequest.Subject.registeredRole.IdentifiedPerson.BirthTime.Value); }
public void TestMultipleAddresses() { options.Addresses.Clear(); options.Addresses.Add(new Address { City = "Chicago", Country = "United States of America", StateProvince = "Illinois" }); options.Addresses.Add(new Address { City = "Brampton", Country = "Canada", StreetAddress = "123 Main Street West", StateProvince = "Ontario" }); options.Addresses.Add(new Address { City = "New York City", Country = "United States of America", StateProvince = "New York" }); options.Addresses.Add(new Address { Country = "Germany", StreetAddress = "Grüner Weg 6", ZipPostalCode = "578233" }); options.Names.Clear(); options.Names.Add(new Name { FirstName = "Joel", LastName = "Quinnville", }); var actual = EverestUtility.GenerateCandidateRegistry(options); Assert.IsInstanceOfType(actual, typeof(PRPA_IN101201CA)); PRPA_IN101201CA message = (PRPA_IN101201CA)actual; Assert.AreEqual("Mohawk College of Applied Arts and Technology", message.Receiver.Device.Id.Extension); Assert.AreEqual("SEEDING", message.Sender.Device.Id.Extension); Assert.AreEqual("Joel", message.controlActEvent.Subject.RegistrationRequest.Subject.registeredRole.IdentifiedPerson.Name.Select(x => x.Part).First().First(x => x.Type == MARC.Everest.DataTypes.EntityNamePartType.Given).Value); Assert.AreEqual("Quinnville", message.controlActEvent.Subject.RegistrationRequest.Subject.registeredRole.IdentifiedPerson.Name.Select(x => x.Part).First().First(x => x.Type == MARC.Everest.DataTypes.EntityNamePartType.Family).Value); Assert.IsNotNull(message.controlActEvent.Subject.RegistrationRequest.Subject.registeredRole.IdentifiedPerson.BirthTime.Value); Assert.AreEqual(4, message.controlActEvent.Subject.RegistrationRequest.Subject.registeredRole.Id.Count); var firstAddress = message.controlActEvent.Subject.RegistrationRequest.Subject.registeredRole.IdentifiedPerson.Addr.Select(x => x.Part).ElementAt(0); Assert.AreEqual("Chicago", firstAddress.First(x => x.Type == MARC.Everest.DataTypes.AddressPartType.City).Value); Assert.AreEqual("United States of America", firstAddress.First(x => x.Type == MARC.Everest.DataTypes.AddressPartType.Country).Value); Assert.AreEqual("Illinois", firstAddress.First(x => x.Type == MARC.Everest.DataTypes.AddressPartType.State).Value); Assert.IsNull(firstAddress.FirstOrDefault(x => x.Type == MARC.Everest.DataTypes.AddressPartType.StreetAddressLine)); Assert.IsNull(firstAddress.FirstOrDefault(x => x.Type == MARC.Everest.DataTypes.AddressPartType.PostalCode)); var secondAddress = message.controlActEvent.Subject.RegistrationRequest.Subject.registeredRole.IdentifiedPerson.Addr.Select(x => x.Part).ElementAt(1); Assert.AreEqual("Brampton", secondAddress.First(x => x.Type == MARC.Everest.DataTypes.AddressPartType.City).Value); Assert.AreEqual("Canada", secondAddress.First(x => x.Type == MARC.Everest.DataTypes.AddressPartType.Country).Value); Assert.AreEqual("Ontario", secondAddress.First(x => x.Type == MARC.Everest.DataTypes.AddressPartType.State).Value); Assert.AreEqual("123 Main Street West", secondAddress.First(x => x.Type == MARC.Everest.DataTypes.AddressPartType.StreetAddressLine).Value); Assert.IsNull(secondAddress.FirstOrDefault(x => x.Type == MARC.Everest.DataTypes.AddressPartType.PostalCode)); var thirdAddress = message.controlActEvent.Subject.RegistrationRequest.Subject.registeredRole.IdentifiedPerson.Addr.Select(x => x.Part).ElementAt(2); Assert.AreEqual("New York City", thirdAddress.First(x => x.Type == MARC.Everest.DataTypes.AddressPartType.City).Value); Assert.AreEqual("United States of America", thirdAddress.First(x => x.Type == MARC.Everest.DataTypes.AddressPartType.Country).Value); Assert.AreEqual("New York", thirdAddress.First(x => x.Type == MARC.Everest.DataTypes.AddressPartType.State).Value); Assert.IsNull(thirdAddress.FirstOrDefault(x => x.Type == MARC.Everest.DataTypes.AddressPartType.StreetAddressLine)); Assert.IsNull(thirdAddress.FirstOrDefault(x => x.Type == MARC.Everest.DataTypes.AddressPartType.PostalCode)); var fourthAddress = message.controlActEvent.Subject.RegistrationRequest.Subject.registeredRole.IdentifiedPerson.Addr.Select(x => x.Part).ElementAt(3); Assert.IsNull(fourthAddress.FirstOrDefault(x => x.Type == MARC.Everest.DataTypes.AddressPartType.City)); Assert.AreEqual("Germany", fourthAddress.First(x => x.Type == MARC.Everest.DataTypes.AddressPartType.Country).Value); Assert.IsNull(fourthAddress.FirstOrDefault(x => x.Type == MARC.Everest.DataTypes.AddressPartType.State)); Assert.AreEqual("Grüner Weg 6", fourthAddress.First(x => x.Type == MARC.Everest.DataTypes.AddressPartType.StreetAddressLine).Value); Assert.AreEqual("578233", fourthAddress.First(x => x.Type == MARC.Everest.DataTypes.AddressPartType.PostalCode).Value); }
/// <summary> /// Generates a HL7v3 PRPA_IN101201CA register patient request. /// </summary> /// <param name="patient">The patient options to be used when creating the demographics for the patient.</param> /// <returns>Returns a PRPA_IN101201CA as an IGraphable.</returns> /// <exception cref="System.InvalidOperationException">Message is not valid v3, cannot send</exception> public static IGraphable GenerateCandidateRegistry(Demographic patient) { var registerPatientRequest = new PRPA_IN101201CA( Guid.NewGuid(), DateTime.Now, ResponseMode.Immediate, PRPA_IN101201CA.GetInteractionId(), PRPA_IN101201CA.GetProfileId(), ProcessingID.Production, AcknowledgementCondition.Always, new MARC.Everest.RMIM.CA.R020402.MCCI_MT002200CA.Receiver( new MARC.Everest.RMIM.CA.R020402.MCCI_MT002200CA.Device2( new II("1.3.6.1.4.1.33349.3.1.1.20.4", patient.Metadata.ReceivingFacility) ) ), new MARC.Everest.RMIM.CA.R020402.MCCI_MT002200CA.Sender( new MARC.Everest.RMIM.CA.R020402.MCCI_MT002200CA.Device1( new II("1.3.6.1.4.1.33349.3.1.2.99121.283", patient.Metadata.SendingFacility) ) ) ); var dob = new TS { NullFlavor = NullFlavor.NoInformation }; if (patient.DateOfBirthOptions?.Exact != null) { dob = new TS(patient.DateOfBirthOptions.Exact.Value, DatePrecision.Day); } registerPatientRequest.controlActEvent = PRPA_IN101201CA.CreateControlActEvent( Guid.NewGuid(), PRPA_IN101201CA.GetTriggerEvent(), new MARC.Everest.RMIM.CA.R020402.MFMI_MT700711CA.Author(), new MARC.Everest.RMIM.CA.R020402.MFMI_MT700711CA.Subject2 <MARC.Everest.RMIM.CA.R020402.PRPA_MT101001CA.IdentifiedEntity>( true, new MARC.Everest.RMIM.CA.R020402.MFMI_MT700711CA.RegistrationRequest <MARC.Everest.RMIM.CA.R020402.PRPA_MT101001CA.IdentifiedEntity>( new MARC.Everest.RMIM.CA.R020402.MFMI_MT700711CA.Subject4 <MARC.Everest.RMIM.CA.R020402.PRPA_MT101001CA.IdentifiedEntity>( new MARC.Everest.RMIM.CA.R020402.PRPA_MT101001CA.IdentifiedEntity( null, RoleStatus.Active, null, x_VeryBasicConfidentialityKind.Normal, new MARC.Everest.RMIM.CA.R020402.PRPA_MT101002CA.Person( BuildNames(patient), BuildTelecoms(patient), Util.Convert <AdministrativeGender>(patient.Gender), dob, false, null, false, null, BuildAddresses(patient), null, null, new MARC.Everest.RMIM.CA.R020402.PRPA_MT101104CA.LanguageCommunication(new CV <string>("eng", "2.16.840.1.113883.6.121"), true) ) ) ), new MARC.Everest.RMIM.CA.R020402.REPC_MT230003CA.Custodian( new MARC.Everest.RMIM.CA.R020402.COCT_MT090310CA.AssignedDevice( new II("2.16.840.1.113883.3.239.18.61", Guid.NewGuid().ToString("N")), new MARC.Everest.RMIM.CA.R020402.COCT_MT090310CA.Repository("KNG"), new MARC.Everest.RMIM.CA.R020402.COCT_MT090310CA.RepositoryJurisdiction("KGHD") ) ) ) ) ); registerPatientRequest.controlActEvent.EffectiveTime = new IVL <TS>(DateTime.Now); // Author registerPatientRequest.controlActEvent.Author.Time = new TS(DateTime.Now); registerPatientRequest.controlActEvent.Author.SetAuthorPerson( new MARC.Everest.RMIM.CA.R020402.COCT_MT090102CA.AssignedEntity( new SET <II>(new II("2.16.840.1.113883.3.239.18.1", Guid.NewGuid().ToString("N"))), new MARC.Everest.RMIM.CA.R020402.COCT_MT090108CA.Person( new PN( EntityNameUse.Legal, new ENXP[] { new ENXP("Fyfe", EntityNamePartType.Family), new ENXP("Justin", EntityNamePartType.Given), new ENXP { Qualifier = new SET <CS <EntityNamePartQualifier> > { new CS <EntityNamePartQualifier>(EntityNamePartQualifier.Prefix) }, Value = "Dr." } } ), new MARC.Everest.RMIM.CA.R020402.COCT_MT090108CA.HealthCareProvider() { NullFlavor = NullFlavor.NoInformation } ) ) ); registerPatientRequest.controlActEvent.Subject.RegistrationRequest.Subject.registeredRole.Id = new SET <II>(); if (patient.OtherIdentifiers.Count == 0) { var alternateIdentifier = new II("1.3.6.1.4.1.33349.3.1.2.99121.283", Guid.NewGuid().ToString("N")); traceSource.TraceEvent(TraceEventType.Information, 0, $"Patient must have at least one alternate identifier, adding alternate identifier:{alternateIdentifier.Root} {alternateIdentifier.Extension}"); registerPatientRequest.controlActEvent.Subject.RegistrationRequest.Subject.registeredRole.Id.Add(alternateIdentifier); } foreach (var otherIdentifier in patient.OtherIdentifiers) { registerPatientRequest.controlActEvent.Subject.RegistrationRequest.Subject.registeredRole.Id.Add(new II(otherIdentifier.AssigningAuthority, otherIdentifier.Value)); } registerPatientRequest.controlActEvent.Subject.RegistrationRequest.Subject.registeredRole.EffectiveTime = new IVL <TS>(DateTime.Now); LogMessage(registerPatientRequest); if (!registerPatientRequest.Validate()) { throw new InvalidOperationException("Message is not valid v3, cannot send"); } return(registerPatientRequest); }