public void TestUpdateAdt() { AuthenticationContext.Current = new AuthenticationContext(AuthenticationContext.SystemPrincipal); var msg = TestUtil.GetMessage("ADT_SIMPLE"); var message = new AdtMessageHandler().HandleMessage(new Hl7MessageReceivedEventArgs(msg, new Uri("test://"), new Uri("test://"), DateTime.Now)); var messageStr = TestUtil.ToString(message); Assert.AreEqual("CA", (message.GetStructure("MSA") as MSA).AcknowledgmentCode.Value); var patientOriginal = ApplicationServiceContext.Current.GetService <IDataPersistenceService <Patient> >().Query(o => o.Identifiers.Any(i => i.Value == "HL7-1"), AuthenticationContext.Current.Principal).SingleOrDefault(); msg = TestUtil.GetMessage("ADT_UPDATE"); message = new AdtMessageHandler().HandleMessage(new Hl7MessageReceivedEventArgs(msg, new Uri("test://"), new Uri("test://"), DateTime.Now)); messageStr = TestUtil.ToString(message); Assert.AreEqual("CA", (message.GetStructure("MSA") as MSA).AcknowledgmentCode.Value); // Ensure that the patient actually was persisted var patientNew = ApplicationServiceContext.Current.GetService <IDataPersistenceService <Patient> >().Query(o => o.Identifiers.Any(i => i.Value == "HL7-1"), AuthenticationContext.Current.Principal).SingleOrDefault(); Assert.IsNotNull(patientNew); Assert.IsTrue(messageStr.Contains(patientNew.Key.ToString())); Assert.AreEqual(1, patientNew.Names.Count); Assert.AreEqual("JOHNSTON", patientNew.Names.First().Component.First(o => o.ComponentTypeKey == NameComponentKeys.Family).Value); Assert.AreEqual("ROBERTA", patientNew.Names.First().Component.First(o => o.ComponentTypeKey == NameComponentKeys.Given).Value); }
public void TestParseComplexADTMessage() { AuthenticationContext.Current = new AuthenticationContext(AuthenticationContext.SystemPrincipal); var msg = TestUtil.GetMessage("ADT_PD1"); var message = new AdtMessageHandler().HandleMessage(new Hl7MessageReceivedEventArgs(msg, new Uri("test://"), new Uri("test://"), DateTime.Now)); var messageStr = TestUtil.ToString(message); Assert.AreEqual("CA", (message.GetStructure("MSA") as MSA).AcknowledgmentCode.Value); // Ensure that the patient actually was persisted var patient = ApplicationServiceContext.Current.GetService <IDataPersistenceService <Patient> >().Query(o => o.Identifiers.Any(i => i.Value == "HL7-2"), AuthenticationContext.Current.Principal).SingleOrDefault(); Assert.IsNotNull(patient); Assert.IsTrue(messageStr.Contains(patient.Key.ToString())); Assert.AreEqual(1, patient.Names.Count); Assert.AreEqual("JOHNSTON", patient.Names.First().Component.First(o => o.ComponentTypeKey == NameComponentKeys.Family).Value); Assert.AreEqual("ROBERT", patient.Names.First().Component.First(o => o.ComponentTypeKey == NameComponentKeys.Given).Value); Assert.AreEqual(1, patient.Relationships.Count(o => o.RelationshipTypeKey == EntityRelationshipTypeKeys.Birthplace)); Assert.AreEqual(1, patient.Relationships.Count(o => o.RelationshipTypeKey == EntityRelationshipTypeKeys.Father)); Assert.AreEqual(1, patient.Relationships.Count(o => o.RelationshipTypeKey == EntityRelationshipTypeKeys.Mother)); Assert.AreEqual(2, patient.Relationships.Count(o => o.RelationshipTypeKey == EntityRelationshipTypeKeys.Citizen)); Assert.AreEqual(1, patient.Policies.Count); }
public void TestOhieCr02() { // Pre-Conditions: Setup receiver so that OID is configured AuthenticationContext.Current = new AuthenticationContext(AuthenticationContext.SystemPrincipal); var aaService = ApplicationServiceContext.Current.GetService <IAssigningAuthorityRepositoryService>(); TestUtil.CreateAuthority("TEST", "2.16.840.1.113883.3.72.5.9.1", "TEST_HARNESS", DeviceSecretA); var aa = aaService.Get("TEST"); if (aa == null) { aaService.Insert(new SanteDB.Core.Model.DataTypes.AssigningAuthority("TEST", "TEST", "2.16.840.1.113883.3.72.5.9.1")); } // Test harness sends ADT^A01 Message where CX.4.1 of PID is missing by message containss 4.2 and 4.3 var message = TestUtil.GetMessageEvent("OHIE-CR-02-10", DeviceSecretA); var result = new PixAdtMessageHandler().HandleMessage(message); // Response is ACK A01 Assert.AreEqual("ACK", (result.GetStructure("MSH") as MSH).MessageType.MessageCode.Value); Assert.AreEqual("A01", (result.GetStructure("MSH") as MSH).MessageType.TriggerEvent.Value); TestUtil.AssertOutcome(result, "AA", "CA"); // MSH-5 and MSH-6 match Assert.AreEqual("TEST_HARNESS", (result.GetStructure("MSH") as MSH).ReceivingApplication.NamespaceID.Value); Assert.AreEqual("TEST", (result.GetStructure("MSH") as MSH).ReceivingFacility.NamespaceID.Value); // Test harness ensures that patient was registered and receiver has populated 4.1, 4.2, and 4.3 message = TestUtil.GetMessageEvent("OHIE-CR-02-20", DeviceSecretA); result = new QbpMessageHandler().HandleMessage(message); // Response is RSP K23 Assert.AreEqual("RSP", (result.GetStructure("MSH") as MSH).MessageType.MessageCode.Value); Assert.AreEqual("K23", (result.GetStructure("MSH") as MSH).MessageType.TriggerEvent.Value); TestUtil.AssertOutcome(result, "AA", "CA"); // Exactly one PID segment var resp = result as RSP_K23; Assert.IsNotNull(resp.QUERY_RESPONSE); Assert.AreEqual("TEST", resp.QUERY_RESPONSE.PID.GetPatientIdentifierList().Last().AssigningAuthority.NamespaceID.Value); Assert.AreEqual("2.16.840.1.113883.3.72.5.9.1", resp.QUERY_RESPONSE.PID.GetPatientIdentifierList().Last().AssigningAuthority.UniversalID.Value); Assert.AreEqual("ISO", resp.QUERY_RESPONSE.PID.GetPatientIdentifierList().Last().AssigningAuthority.UniversalIDType.Value); // Test hanress sneds ADT A01 with OID missing but namespace message = TestUtil.GetMessageEvent("OHIE-CR-02-30", DeviceSecretA); result = new AdtMessageHandler().HandleMessage(message); // Response is ACK A01 Assert.AreEqual("ACK", (result.GetStructure("MSH") as MSH).MessageType.MessageCode.Value); Assert.AreEqual("A01", (result.GetStructure("MSH") as MSH).MessageType.TriggerEvent.Value); TestUtil.AssertOutcome(result, "AA", "CA"); // MSH-5 and MSH-6 match Assert.AreEqual("TEST_HARNESS", (result.GetStructure("MSH") as MSH).ReceivingApplication.NamespaceID.Value); Assert.AreEqual("TEST", (result.GetStructure("MSH") as MSH).ReceivingFacility.NamespaceID.Value); // Test harnerss validates patient was registrered and populated segments properly message = TestUtil.GetMessageEvent("OHIE-CR-02-40", DeviceSecretA); result = new QbpMessageHandler().HandleMessage(message); // Response is RSP K23 Assert.AreEqual("RSP", (result.GetStructure("MSH") as MSH).MessageType.MessageCode.Value); Assert.AreEqual("K23", (result.GetStructure("MSH") as MSH).MessageType.TriggerEvent.Value); TestUtil.AssertOutcome(result, "AA", "CA"); // Exactly one PID segment resp = result as RSP_K23; Assert.IsNotNull(resp.QUERY_RESPONSE); Assert.AreEqual("TEST", resp.QUERY_RESPONSE.PID.GetPatientIdentifierList().Skip(1).First().AssigningAuthority.NamespaceID.Value); Assert.AreEqual("2.16.840.1.113883.3.72.5.9.1", resp.QUERY_RESPONSE.PID.GetPatientIdentifierList().Skip(1).First().AssigningAuthority.UniversalID.Value); Assert.AreEqual("ISO", resp.QUERY_RESPONSE.PID.GetPatientIdentifierList().Skip(1).First().AssigningAuthority.UniversalIDType.Value); }