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); }
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 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)); }
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)); }
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)); }
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 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 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)); }
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); }
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); }
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); }
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); }
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); }
/// <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; } }
/// <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; } }
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(); } }