示例#1
0
        public bool SendObservation(OruMessage oruMessage)
        {
            // Generate trigger
            Hl7Trigger trigger = new Hl7Trigger(TransactionNameEnum.RAD_4);
            trigger.Trigger = oruMessage;

            // RAD-4 - trigger the ImageManager
            return TriggerActorInstances(ActorTypeEnum.ImageManager, trigger, true);
        }
        public void AddPatientQueryResponse(AdrMessage adrMessage)
        {
            // Generate response trigger
            Hl7Trigger trigger = new Hl7Trigger(TransactionNameEnum.RAD_UNKNOWN);
            trigger.Trigger = adrMessage;

            // Add a response trigger to the DssOrderFiller server
            AddResponseTriggerToActor(ActorTypeEnum.DssOrderFiller, trigger);
        }
示例#3
0
        public bool SendPlacerOrderManagement(OrmMessage ormMessage)
        {
            // Generate trigger
            Hl7Trigger trigger = new Hl7Trigger(TransactionNameEnum.RAD_2);
            trigger.Trigger = ormMessage;

            // RAD-2 - trigger the DssOrderFiller
            return TriggerActorInstances(ActorTypeEnum.DssOrderFiller, trigger, true);
        }
示例#4
0
        public bool SendProcedureUpdated(OrmMessage ormMessage)
        {
            // Generate trigger
            Hl7Trigger trigger = new Hl7Trigger(TransactionNameEnum.RAD_13);

            trigger.Trigger = ormMessage;

            // RAD-13 - trigger the ImageManager
            return(TriggerActorInstances(ActorTypeEnum.ImageManager, trigger, true));
        }
示例#5
0
        public bool SendPatientUpdate(AdtMessage adtMessage)
        {
            // Generate trigger
            Hl7Trigger trigger = new Hl7Trigger(TransactionNameEnum.RAD_12);

            trigger.Trigger = adtMessage;

            // RAD-12 - trigger the ImageManager
            return(TriggerActorInstances(ActorTypeEnum.ImageManager, trigger, true));
        }
示例#6
0
        public bool SendPatientQuery(QryMessage qryMessage)
        {
            // Generate trigger
            Hl7Trigger trigger = new Hl7Trigger(TransactionNameEnum.RAD_UNKNOWN);

            trigger.Trigger = qryMessage;

            // RAD-12 - trigger the AdtPatientRegistration
            return(TriggerActorInstances(ActorTypeEnum.AdtPatientRegistration, trigger, true));
        }
示例#7
0
        public bool SendObservation(OruMessage oruMessage)
        {
            // Generate trigger
            Hl7Trigger trigger = new Hl7Trigger(TransactionNameEnum.RAD_4);

            trigger.Trigger = oruMessage;

            // RAD-4 - trigger the ImageManager
            return(TriggerActorInstances(ActorTypeEnum.ImageManager, trigger, true));
        }
示例#8
0
        public bool SendPlacerOrderManagement(OrmMessage ormMessage)
        {
            // Generate trigger
            Hl7Trigger trigger = new Hl7Trigger(TransactionNameEnum.RAD_2);

            trigger.Trigger = ormMessage;

            // RAD-2 - trigger the DssOrderFiller
            return(TriggerActorInstances(ActorTypeEnum.DssOrderFiller, trigger, true));
        }
        public void AddPatientQueryResponse(AdrMessage adrMessage)
        {
            // Generate response trigger
            Hl7Trigger trigger = new Hl7Trigger(TransactionNameEnum.RAD_UNKNOWN);

            trigger.Trigger = adrMessage;

            // Add a response trigger to the DssOrderFiller server
            AddResponseTriggerToActor(ActorTypeEnum.DssOrderFiller, trigger);
        }
示例#10
0
        public bool SendProcedureScheduled(OrmMessage ormMessage)
        {
            HandlePlacerOrderManagement(ormMessage);

            // Generate trigger
            Hl7Trigger trigger = new Hl7Trigger(TransactionNameEnum.RAD_4);

            trigger.Trigger = ormMessage;

            // RAD-4 - trigger the ImageManager
            return(TriggerActorInstances(ActorTypeEnum.ImageManager, trigger, true));
        }
示例#11
0
        public bool SendPatientUpdate(AdtMessage adtMessage)
        {
            // Generate trigger
            Hl7Trigger trigger = new Hl7Trigger(TransactionNameEnum.RAD_12);
            trigger.Trigger = adtMessage;

            // RAD-12 - trigger the OrderPlacer
            bool triggerResult = TriggerActorInstances(ActorTypeEnum.OrderPlacer, trigger, true);

            // RAD-12 - trigger the DssOrderFiller
            if (triggerResult == true)
            {
                triggerResult = TriggerActorInstances(ActorTypeEnum.DssOrderFiller, trigger, true);
            }

            return triggerResult;
        }
        public bool SendPatientUpdate(AdtMessage adtMessage)
        {
            // Generate trigger
            Hl7Trigger trigger = new Hl7Trigger(TransactionNameEnum.RAD_12);

            trigger.Trigger = adtMessage;

            // RAD-12 - trigger the OrderPlacer
            bool triggerResult = TriggerActorInstances(ActorTypeEnum.OrderPlacer, trigger, true);

            // RAD-12 - trigger the DssOrderFiller
            if (triggerResult == true)
            {
                triggerResult = TriggerActorInstances(ActorTypeEnum.DssOrderFiller, trigger, true);
            }

            return(triggerResult);
        }
示例#13
0
        public bool SendProcedureUpdated(OrmMessage ormMessage)
        {
            // Generate trigger
            Hl7Trigger trigger = new Hl7Trigger(TransactionNameEnum.RAD_13);
            trigger.Trigger = ormMessage;

            // RAD-13 - trigger the ImageManager
            return TriggerActorInstances(ActorTypeEnum.ImageManager, trigger, true);
        }
示例#14
0
        public bool SendProcedureScheduled(OrmMessage ormMessage)
        {
            HandlePlacerOrderManagement(ormMessage);

            // Generate trigger
            Hl7Trigger trigger = new Hl7Trigger(TransactionNameEnum.RAD_4);
            trigger.Trigger = ormMessage;

            // RAD-4 - trigger the ImageManager
            return TriggerActorInstances(ActorTypeEnum.ImageManager, trigger, true);
        }
示例#15
0
        public bool SendPatientUpdate(AdtMessage adtMessage)
        {
            // Generate trigger
            Hl7Trigger trigger = new Hl7Trigger(TransactionNameEnum.RAD_12);
            trigger.Trigger = adtMessage;

            // RAD-12 - trigger the ImageManager
            return TriggerActorInstances(ActorTypeEnum.ImageManager, trigger, true);
        }
示例#16
0
        public bool SendPatientQuery(QryMessage qryMessage)
        {
            // Generate trigger
            Hl7Trigger trigger = new Hl7Trigger(TransactionNameEnum.RAD_UNKNOWN);
            trigger.Trigger = qryMessage;

            // RAD-12 - trigger the AdtPatientRegistration
            return TriggerActorInstances(ActorTypeEnum.AdtPatientRegistration, trigger, true);
        }
示例#17
0
        /// <summary>
        /// Handle an HL7 Transation from the given Actor Name.
        /// </summary>
        /// <param name="actorName">Source Actor Name.</param>
        /// <param name="hl7Transaction">HL7 Transaction.</param>
        protected override void HandleTransactionFrom(ActorName actorName, Hl7Transaction hl7Transaction)
        {
            Hl7Message request = hl7Transaction.Request;

            switch (actorName.Type)
            {
                case ActorTypeEnum.AdtPatientRegistration:
                    // received Patient Registration [RAD-1] or
                    // received Patient Update [RAD-12]
                    if (request.MessageType == "ADT")
                    {
                        switch(request.MessageSubType)
                        {
                            case "A01" :
                                {
            //									HandlePatientRegistration(request);
                                }
                                break;

                            case "A08" :
                                {
                                    HandlePatientUpdate(request);

                                    // Generate trigger
                                    Hl7Trigger trigger = new Hl7Trigger(TransactionNameEnum.RAD_12);
                                    trigger.Trigger = request;

                                    // RAD-12 - trigger the ImageManager
                                    bool triggerResult = TriggerActorInstances(ActorTypeEnum.ImageManager, trigger, false);
                                }
                                break;

                            case "A40" :
                                {
                                    HandlePatientMerge(request);

                                    // Generate trigger
                                    Hl7Trigger trigger = new Hl7Trigger(TransactionNameEnum.RAD_12);
                                    trigger.Trigger = request;

                                    // RAD-12 - trigger the ImageManager
                                    bool triggerResult = TriggerActorInstances(ActorTypeEnum.ImageManager, trigger, false);
                                }
                                break;
                        }
                    }
                    break;
                case ActorTypeEnum.OrderPlacer:
                    // received Placer Order Management [RAD-2]
                    if (request.MessageType == "ORM")
                    {
                        switch(request.MessageSubType)
                        {
                            case "O01" :
                                HandlePlacerOrderManagement(request);
                                break;
                        }
                    }
                    break;
                default:
                    break;
            }
        }
示例#18
0
        /// <summary>
        /// Handle an HL7 Transation from the given Actor Name.
        /// </summary>
        /// <param name="actorName">Source Actor Name.</param>
        /// <param name="hl7Transaction">HL7 Transaction.</param>
        protected override void HandleTransactionFrom(ActorName actorName, Hl7Transaction hl7Transaction)
        {
            Hl7Message request = hl7Transaction.Request;

            switch (actorName.Type)
            {
            case ActorTypeEnum.AdtPatientRegistration:
                // received Patient Registration [RAD-1] or
                // received Patient Update [RAD-12]
                if (request.MessageType == "ADT")
                {
                    switch (request.MessageSubType)
                    {
                    case "A01":
                    {
//									HandlePatientRegistration(request);
                    }
                    break;

                    case "A08":
                    {
                        HandlePatientUpdate(request);

                        // Generate trigger
                        Hl7Trigger trigger = new Hl7Trigger(TransactionNameEnum.RAD_12);
                        trigger.Trigger = request;

                        // RAD-12 - trigger the ImageManager
                        bool triggerResult = TriggerActorInstances(ActorTypeEnum.ImageManager, trigger, false);
                    }
                    break;

                    case "A40":
                    {
                        HandlePatientMerge(request);

                        // Generate trigger
                        Hl7Trigger trigger = new Hl7Trigger(TransactionNameEnum.RAD_12);
                        trigger.Trigger = request;

                        // RAD-12 - trigger the ImageManager
                        bool triggerResult = TriggerActorInstances(ActorTypeEnum.ImageManager, trigger, false);
                    }
                    break;
                    }
                }
                break;

            case ActorTypeEnum.OrderPlacer:
                // received Placer Order Management [RAD-2]
                if (request.MessageType == "ORM")
                {
                    switch (request.MessageSubType)
                    {
                    case "O01":
                        HandlePlacerOrderManagement(request);
                        break;
                    }
                }
                break;

            default:
                break;
            }
        }
示例#19
0
文件: Hl7Client.cs 项目: ewcasas/DVTK
        private void ProcessTrigger(Hl7Trigger trigger)
        {
            _hl7Mllp = new Hl7Mllp();

            // get the next transaction number - needed to sort the
            // transactions correctly
            int transactionNumber = TransactionNumber.GetNextTransactionNumber();

            System.String message = System.String.Format("HL7 Client thread - connecting to \"{0}\" on port {1}...", _config.ToActorIpAddress, _config.PortNumber);
            _hl7ThreadForHl7Client.LogInformation(message);

            if (_hl7Mllp.Connect(_config.ToActorIpAddress, _config.PortNumber))
            {
                Hl7Message hl7RequestMessage = trigger.Trigger;

                // Set the sending and receiving applications
                hl7RequestMessage.SendingApplication = _config.FromActorAeTitle;
                hl7RequestMessage.ReceivingApplication = _config.ToActorAeTitle;

                // Add the control id and date/time of message
                hl7RequestMessage.MessageControlId = _messageControlId.ToString();
                _messageControlId++;
                hl7RequestMessage.DateTimeOfMessage = System.DateTime.Now.ToString("yyyyMMddhhmmss", System.Globalization.CultureInfo.InvariantCulture);

                // get initial HL7 message delimiters from the config
                Hl7MessageDelimiters messageDelimiters = _config.MessageDelimiters;

                System.String messageType = hl7RequestMessage.Value(Hl7SegmentEnum.MSH, 9);
                _hl7ThreadForHl7Client.LogInformation(System.String.Format("HL7 Client thread - send message \"{0}\".", messageType));
                _hl7ThreadForHl7Client.LogInformation(hl7RequestMessage.ToString(messageDelimiters));

                if (_hl7Mllp.SendMessage(hl7RequestMessage, messageDelimiters) == true)
                {
                    Hl7Message hl7ResponseMessage = _hl7Mllp.ReceiveMessage(out messageDelimiters);

                    if (hl7ResponseMessage != null)
                    {
                        messageType = hl7ResponseMessage.Value(Hl7SegmentEnum.MSH, 9);
                        _hl7ThreadForHl7Client.LogInformation(System.String.Format("HL7 Client thread - received message \"{0}\".", messageType));
                        _hl7ThreadForHl7Client.LogInformation(hl7ResponseMessage.ToString(messageDelimiters));

                        // Validate the message
                        if (_config.AutoValidate == true)
                        {
                            ValidateMessage(hl7ResponseMessage, messageDelimiters);
                        }

                        // save the transaction
                        Hl7Transaction transaction = new Hl7Transaction(TransactionNameEnum.RAD_1, TransactionDirectionEnum.TransactionSent);
                        transaction.Request = hl7RequestMessage;
                        transaction.Response = hl7ResponseMessage;

                        ActorsTransaction actorsTransaction = new ActorsTransaction(transactionNumber,
                            ActorName, // from actor
                            ParentActor.ActorName,  // to actor
                            transaction,
                            _hl7ThreadForHl7Client.Options.ResultsFileNameOnly,
                            _hl7ThreadForHl7Client.Options.ResultsFullFileName,
                            (uint)_hl7ThreadForHl7Client.NrErrors,
                            (uint)_hl7ThreadForHl7Client.NrWarnings);

                        // save the transaction in the Actor log
                        ParentActor.ActorsTransactionLog.Add(actorsTransaction);

                        // publish the transaction event to any interested parties
                        PublishTransactionAvailableEvent(ActorName, actorsTransaction);
                    }
                }

                _hl7Mllp.Stop();

                _hl7ThreadForHl7Client.StopResultsGathering();
                _hl7ThreadForHl7Client.StartResultsGathering();
            }

            if (_awaitCompletion == true)
            {
                _semaphore.Signal();
            }
        }