コード例 #1
0
        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);
        }
コード例 #2
0
        public void TestErrorLocation()
        {
            AuthenticationContext.Current = new AuthenticationContext(AuthenticationContext.SystemPrincipal);
            var msg        = TestUtil.GetMessage("ADT_INV_GC");
            var errmsg     = new AdtMessageHandler().HandleMessage(new Hl7MessageReceivedEventArgs(msg, new Uri("test://"), new Uri("test://"), DateTime.Now));
            var messageStr = TestUtil.ToString(errmsg);

            var ack = errmsg as ACK;

            Assert.AreNotEqual(0, ack.ERRRepetitionsUsed);
            Assert.AreEqual("204", ack.GetERR(0).HL7ErrorCode.Identifier.Value);
            Assert.AreEqual("8", ack.GetERR(0).GetErrorLocation(0).FieldPosition.Value);
            Assert.AreEqual("PID", ack.GetERR(0).GetErrorLocation(0).SegmentID.Value);
            Assert.AreEqual("1", ack.GetERR(0).GetErrorLocation(0).SegmentSequence.Value);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
ファイル: TestOpenHIE.cs プロジェクト: santedb/santempi
        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);
        }
コード例 #5
0
 public void Initialize()
 {
     this.message        = new ADT_A01();
     this.messageHandler = new AdtMessageHandler();
     this.args           = new Hl7MessageReceivedEventArgs(this.message, new Uri("llp://localhost:2100"), new Uri("llp://localhost:2100"), DateTime.Now);
 }