/// <summary> /// Class Constructor. /// </summary> /// <param name="profileName">Integration Profile Name.</param> public IheFrameworkConfig(System.String profileName) { _profileName = profileName; _commonConfig = new CommonConfig(); _actorConfigCollection = new ActorConfigCollection(); _peerToPeerConfigCollection = new BasePeerToPeerConfigCollection(); }
/// <summary> /// Apply the Actor Configuration. /// </summary> /// <param name="commonConfig">Common Configuration.</param> /// <param name="peerToPeerConfigCollection">Peer to Peer Configuration collection.</param> protected override void ApplyConfig(CommonConfig commonConfig, BasePeerToPeerConfigCollection peerToPeerConfigCollection) { // for receiving Retrieve Images [RAD-16] AddDicomServer(DicomServerTypeEnum.DicomStorageServer, ActorTypeEnum.ImageArchive, commonConfig, peerToPeerConfigCollection); // for sending Query Images [RAD-14] // for sending Retrieve Images [RAD-16] AddDicomClient(DicomClientTypeEnum.DicomQueryRetrieveClient, ActorTypeEnum.ImageArchive, commonConfig, peerToPeerConfigCollection); }
/// <summary> /// Apply the Actor Configuration. /// </summary> /// <param name="commonConfig">Common Configuration.</param> /// <param name="peerToPeerConfigCollection">Peer to Peer Configuration collection.</param> protected override void ApplyConfig(CommonConfig commonConfig, BasePeerToPeerConfigCollection peerToPeerConfigCollection) { // for sending Patient Registration [RAD-1] // for sending Patient Update [Rad-12] AddHl7Client(Hl7ClientTypeEnum.Hl7Client, ActorTypeEnum.OrderPlacer, commonConfig, peerToPeerConfigCollection); // for sending Patient Registration [RAD-1] // for sending Patient Update [Rad-12] AddHl7Client(Hl7ClientTypeEnum.Hl7Client, ActorTypeEnum.DssOrderFiller, commonConfig, peerToPeerConfigCollection); // for receiving Patient Query AddHl7Server(Hl7ServerTypeEnum.Hl7QueryServer, ActorTypeEnum.DssOrderFiller, commonConfig, peerToPeerConfigCollection); }
/// <summary> /// Apply the Actor Configuration. /// </summary> /// <param name="commonConfig">Common Configuration.</param> /// <param name="peerToPeerConfigCollection">Peer to Peer Configuration collection.</param> protected override void ApplyConfig(CommonConfig commonConfig, BasePeerToPeerConfigCollection peerToPeerConfigCollection) { // for receiving Patient Registration [RAD-1] // for receiving Patient Update [RAD-12] AddHl7Server(Hl7ServerTypeEnum.Hl7Server, ActorTypeEnum.AdtPatientRegistration, commonConfig, peerToPeerConfigCollection); // for receiving Filler Order Management [RAD-3] // for receiving Appointment Notification [RAD-48] AddHl7Server(Hl7ServerTypeEnum.Hl7Server, ActorTypeEnum.DssOrderFiller, commonConfig, peerToPeerConfigCollection); // for sending Placer Order Management [RAD-2] AddHl7Client(Hl7ClientTypeEnum.Hl7Client, ActorTypeEnum.DssOrderFiller, commonConfig, peerToPeerConfigCollection); }
/// <summary> /// Apply the Actor Configuration. /// </summary> /// <param name="commonConfig">Common Configuration.</param> /// <param name="peerToPeerConfigCollection">Peer to Peer Configuration collection.</param> protected override void ApplyConfig(CommonConfig commonConfig, BasePeerToPeerConfigCollection peerToPeerConfigCollection) { // for receiving Storage Commitment [RAD-10] AddDicomServer(DicomServerTypeEnum.DicomStorageCommitServer, ActorTypeEnum.ImageManager, commonConfig, peerToPeerConfigCollection); // for sending Creator Procedure Step In Progress [RAD-20] // for sending Creator Procedure Step Completed [RAD-21] AddDicomClient(DicomClientTypeEnum.DicomMppsClient, ActorTypeEnum.PerformedProcedureStepManager, commonConfig, peerToPeerConfigCollection); // for sending Creator Images Stored [RAD-18] AddDicomClient(DicomClientTypeEnum.DicomStorageClient, ActorTypeEnum.ImageArchive, commonConfig, peerToPeerConfigCollection); // for sending Storage Commitment [RAD-10] AddDicomClient(DicomClientTypeEnum.DicomStorageCommitClient, ActorTypeEnum.ImageManager, commonConfig, peerToPeerConfigCollection); }
/// <summary> /// Apply the Actor Configuration. /// </summary> /// <param name="commonConfig">Common Configuration.</param> /// <param name="peerToPeerConfigCollection">Peer to Peer Configuration collection.</param> protected override void ApplyConfig(CommonConfig commonConfig, BasePeerToPeerConfigCollection peerToPeerConfigCollection) { // for receiving Modality Images Stored [RAD-8] AddDicomServer(DicomServerTypeEnum.DicomStorageServer, ActorTypeEnum.AcquisitionModality, commonConfig, peerToPeerConfigCollection); // for receiving Creator Images Stored [RAD-18] AddDicomServer(DicomServerTypeEnum.DicomStorageServer, ActorTypeEnum.EvidenceCreator, commonConfig, peerToPeerConfigCollection); // for receiving Query Images [RAD-14] // for receiving Retrieve Images [RAD-16] AddDicomServer(DicomServerTypeEnum.DicomQueryRetrieveServer, ActorTypeEnum.ImageDisplay, commonConfig, peerToPeerConfigCollection); // for sending Retrieve Images [RAD-16] UpdateDicomServer(this.ActorName, ActorTypeEnum.ImageDisplay, commonConfig, peerToPeerConfigCollection); }
/// <summary> /// Apply the Actor Configuration. /// </summary> /// <param name="commonConfig">Common Configuration.</param> /// <param name="peerToPeerConfigCollection">Peer to Peer Configuration collection.</param> protected override void ApplyConfig(CommonConfig commonConfig, BasePeerToPeerConfigCollection peerToPeerConfigCollection) { // for receiving Storage Commitment [RAD-10] AddDicomServer(DicomServerTypeEnum.DicomStorageCommitServer, ActorTypeEnum.ImageManager, commonConfig, peerToPeerConfigCollection); // for sending Query Modality Worklist [RAD-5] AddDicomClient(DicomClientTypeEnum.DicomWorklistClient, ActorTypeEnum.DssOrderFiller, commonConfig, peerToPeerConfigCollection); // for sending Modality Procedure Step In Progress [RAD-6] // for sending Modality Procedure Step Completed [RAD-7] AddDicomClient(DicomClientTypeEnum.DicomMppsClient, ActorTypeEnum.PerformedProcedureStepManager, commonConfig, peerToPeerConfigCollection); // for sending Modality Images Stored [RAD-8] AddDicomClient(DicomClientTypeEnum.DicomStorageClient, ActorTypeEnum.ImageArchive, commonConfig, peerToPeerConfigCollection); // for sending Storage Commitment [RAD-10] AddDicomClient(DicomClientTypeEnum.DicomStorageCommitClient, ActorTypeEnum.ImageManager, commonConfig, peerToPeerConfigCollection); }
/// <summary> /// Apply the Actor Configuration. /// </summary> /// <param name="commonConfig">Common Configuration.</param> /// <param name="peerToPeerConfigCollection">Peer to Peer Configuration collection.</param> protected override void ApplyConfig(CommonConfig commonConfig, BasePeerToPeerConfigCollection peerToPeerConfigCollection) { // for receiving Modality Procedure Step In Progress [RAD-6] // for receiving Modality Procedure Step Completed [RAD-7] AddDicomServer(DicomServerTypeEnum.DicomMppsServer, ActorTypeEnum.AcquisitionModality, commonConfig, peerToPeerConfigCollection); // for receiving Creator Procedure Step In Progress [RAD-20] // for receiving Creator Procedure Step Completed [RAD-21] AddDicomServer(DicomServerTypeEnum.DicomMppsServer, ActorTypeEnum.EvidenceCreator, commonConfig, peerToPeerConfigCollection); // for sending Modality Procedure Step In Progress [RAD-6] // for sending Modality Procedure Step Completed [RAD-7] // for sending Creator Procedure Step In Progress [RAD-20] // for sending Creator Procedure Step Completed [RAD-21] AddDicomClient(DicomClientTypeEnum.DicomMppsClient, ActorTypeEnum.DssOrderFiller, commonConfig, peerToPeerConfigCollection); // for sending Modality Procedure Step In Progress [RAD-6] // for sending Modality Procedure Step Completed [RAD-7] // for sending Creator Procedure Step In Progress [RAD-20] // for sending Creator Procedure Step Completed [RAD-21] AddDicomClient(DicomClientTypeEnum.DicomMppsClient, ActorTypeEnum.ImageManager, commonConfig, peerToPeerConfigCollection); }
/// <summary> /// Apply the Actor Configuration. /// </summary> /// <param name="commonConfig">Common Configuration.</param> /// <param name="peerToPeerConfigCollection">Peer to Peer Configuration collection.</param> protected override void ApplyConfig(CommonConfig commonConfig, BasePeerToPeerConfigCollection peerToPeerConfigCollection) { // for receiving Patient Registration [RAD-1] // for receiving Patient Update [RAD-12] AddHl7Server(Hl7ServerTypeEnum.Hl7Server, ActorTypeEnum.AdtPatientRegistration, commonConfig, peerToPeerConfigCollection); // for receiving Placer Order Management [RAD-2] AddHl7Server(Hl7ServerTypeEnum.Hl7Server, ActorTypeEnum.OrderPlacer, commonConfig, peerToPeerConfigCollection); // for receiving Query Modality Worklist [RAD-5] AddDicomServer(DicomServerTypeEnum.DicomWorklistServer, ActorTypeEnum.AcquisitionModality, commonConfig, peerToPeerConfigCollection); // for receiving Modality Procedure Step In Progress [RAD-6] // for receiving Modality Procedure Step Completed [RAD-7] // for receiving Creator Procedure Step In Progress [RAD-20] // for receiving Creator Procedure Step Completed [RAD-21] AddDicomServer(DicomServerTypeEnum.DicomMppsServer, ActorTypeEnum.PerformedProcedureStepManager, commonConfig, peerToPeerConfigCollection); // for receiving Instance Availability Notification [RAD-49] // AddDicomServer(DicomServerTypeEnum., ActorTypeEnum.ImageManager, commonConfig, peerToPeerConfigCollection); // for sending Filler Order Management [RAD-3] // for sending Appointment Notification [RAD-48] AddHl7Client(Hl7ClientTypeEnum.Hl7Client, ActorTypeEnum.OrderPlacer, commonConfig, peerToPeerConfigCollection); // for sending Procedure Scheduled [RAD-4] // for sending Patient Update [Rad-12] // for sending Procedure Updated [RAD-13] AddHl7Client(Hl7ClientTypeEnum.Hl7Client, ActorTypeEnum.ImageManager, commonConfig, peerToPeerConfigCollection); // for sending Image Availability Query [RAD-11] // for sending Performed Work Status Update [RAD-42] // AddDicomClient(DicomClientTypeEnum., ActorTypeEnum.ImageManager, commonConfig, peerToPeerConfigCollection); // for sending Patient Query AddHl7Client(Hl7ClientTypeEnum.Hl7Client, ActorTypeEnum.AdtPatientRegistration, commonConfig, peerToPeerConfigCollection); }
/// <summary> /// Apply the Actor Configuration. /// </summary> /// <param name="commonConfig">Common Configuration.</param> /// <param name="peerToPeerConfigCollection">Peer to Peer Configuration collection.</param> protected override void ApplyConfig(CommonConfig commonConfig, BasePeerToPeerConfigCollection peerToPeerConfigCollection) { // for receiving Procedure Scheduled [RAD-4] // for receiving Patient Update [Rad-12] // for receiving Procedure Updated [RAD-13] AddHl7Server(Hl7ServerTypeEnum.Hl7Server, ActorTypeEnum.DssOrderFiller, commonConfig, peerToPeerConfigCollection); // for receiving Image Availability Query [RAD-11] // for receiving Performed Work Status Update [RAD-42] // AddDicomServer(DicomServerTypeEnum., ActorTypeEnum.DssOrderFiller, commonConfig, peerToPeerConfigCollection); // for receiving Modality Procedure Step In Progress [RAD-6] // for receiving Modality Procedure Step Completed [RAD-7] // for receiving Creator Procedure Step In Progress [RAD-20] // for receiving Creator Procedure Step Completed [RAD-21] AddDicomServer(DicomServerTypeEnum.DicomMppsServer, ActorTypeEnum.PerformedProcedureStepManager, commonConfig, peerToPeerConfigCollection); // for receiving Storage Commitment [RAD-10] AddDicomServer(DicomServerTypeEnum.DicomStorageCommitServer, ActorTypeEnum.AcquisitionModality, commonConfig, peerToPeerConfigCollection); // for receiving Storage Commitment [RAD-10] AddDicomServer(DicomServerTypeEnum.DicomStorageCommitServer, ActorTypeEnum.EvidenceCreator, commonConfig, peerToPeerConfigCollection); // for receiving Image Availability Query [RAD-11] AddDicomServer(DicomServerTypeEnum.DicomQueryRetrieveServer, ActorTypeEnum.ReportManager, commonConfig, peerToPeerConfigCollection); // for sending Performed Work Status Update [RAD-42] // for sending Instance Availability Notification [RAD-49] // AddDicomClient(DicomClientTypeEnum., ActorTypeEnum.DssOrderFiller, commonConfig, peerToPeerConfigCollection); // for sending Storage Commitment [RAD-10] AddDicomClient(DicomClientTypeEnum.DicomStorageCommitClient, ActorTypeEnum.AcquisitionModality, commonConfig, peerToPeerConfigCollection); // for sending Storage Commitment [RAD-10] AddDicomClient(DicomClientTypeEnum.DicomStorageCommitClient, ActorTypeEnum.EvidenceCreator, commonConfig, peerToPeerConfigCollection); }
/// <summary> /// Apply the Actor Configuration. /// </summary> /// <param name="commonConfig">Common Configuration.</param> /// <param name="peerToPeerConfigCollection">Peer to Peer Configuration collection.</param> protected override void ApplyConfig(CommonConfig commonConfig, BasePeerToPeerConfigCollection peerToPeerConfigCollection) { // for receiving Print Request with Presentation LUT [RAD-23] AddDicomServer(DicomServerTypeEnum.DicomPrintServer, ActorTypeEnum.PrintComposer, commonConfig, peerToPeerConfigCollection); }
/// <summary> /// Update the given DicomServer using the Destination Actor Configuration. /// </summary> /// <param name="serverActorName">DicomServer Actor Name.</param> /// <param name="clientActorType">DicomClient Actor Type.</param> /// <param name="commonConfig">Common Configuration.</param> /// <param name="peerToPeerConfigCollection">Peer to Peer Configuration collection.</param> protected void UpdateDicomServer(ActorName serverActorName, ActorTypeEnum clientActorType, CommonConfig commonConfig, BasePeerToPeerConfigCollection peerToPeerConfigCollection) { foreach (BasePeerToPeerConfig basePeerToPeerConfig in peerToPeerConfigCollection) { if ((basePeerToPeerConfig is DicomPeerToPeerConfig) && (basePeerToPeerConfig.FromActorName.TypeId == serverActorName.TypeId) && (basePeerToPeerConfig.ToActorName.Type == clientActorType)) { DicomServer dicomServer = GetDicomServer(basePeerToPeerConfig.ToActorName); if (dicomServer != null) { dicomServer.UpdateConfig(commonConfig, (DicomPeerToPeerConfig)basePeerToPeerConfig); } } } }
/// <summary> /// Apply the Actor Configuration. /// </summary> /// <param name="commonConfig">Common Configuration.</param> /// <param name="peerToPeerConfigCollection">Peer to Peer Configuration collection.</param> protected abstract void ApplyConfig(CommonConfig commonConfig, BasePeerToPeerConfigCollection peerToPeerConfigCollection);
/// <summary> /// Load the Actor Configuration into the Integration Profile. /// </summary> /// <param name="configurationFilename">Configuration Filename</param> public void Load(System.String configurationFilename) { _actorConfigCollection = new ActorConfigCollection(); _peerToPeerConfigCollection = new BasePeerToPeerConfigCollection(); try { XmlTextReader reader = new XmlTextReader(configurationFilename); while (reader.EOF == false) { reader.ReadStartElement("IheIntegrationProfile"); _profileName = reader.ReadElementString("IntegrationProfileName"); _commonConfig.RootedBaseDirectory = reader.ReadElementString("RootedBaseDirectory"); _commonConfig.ResultsDirectory = reader.ReadElementString("ResultsDirectory"); // read OverwriteResults - added later - some config files may not contain this parameter reader.ReadString(); if (reader.Name == "OverwriteResults") { System.String overwriteResults = reader.ReadElementString("OverwriteResults"); if (overwriteResults == "True") { _commonConfig.OverwriteResults = true; } else { _commonConfig.OverwriteResults = false; } } _commonConfig.CredentialsFilename = reader.ReadElementString("CredentialsFilename"); _commonConfig.CertificateFilename = reader.ReadElementString("CertificateFilename"); _commonConfig.NistWebServiceUrl = reader.ReadElementString("NistWebServiceUrl"); _commonConfig.Hl7ProfileDirectory = reader.ReadElementString("Hl7ProfileDirectory"); _commonConfig.Hl7ProfileStoreName = reader.ReadElementString("Hl7ProfileStoreName"); _commonConfig.Hl7ValidationContextFilename = reader.ReadElementString("Hl7ValidationContextFilename"); System.String interactive = reader.ReadElementString("Interactive"); if (interactive == "True") { _commonConfig.Interactive = true; } else { _commonConfig.Interactive = false; } while ((reader.IsStartElement()) && (reader.Name == "ActorConfiguration")) { reader.ReadStartElement("ActorConfiguration"); reader.ReadStartElement("ActorName"); ActorTypeEnum actorType = ActorTypes.TypeEnum(reader.ReadElementString("ActorType")); System.String id = reader.ReadElementString("ActorId"); ActorName actorName = new ActorName(actorType, id); reader.ReadEndElement(); ActorConfigStateEnum configState = ActorConfigState.ConfigStateEnum(reader.ReadElementString("ConfigState")); ActorConfig actorConfig = new ActorConfig(actorName, configState); _actorConfigCollection.Add(actorConfig); reader.ReadEndElement(); } while ((reader.IsStartElement()) && ((reader.Name == "DicomPeerToPeerConfiguration") || (reader.Name == "Hl7PeerToPeerConfiguration"))) { if (reader.Name == "DicomPeerToPeerConfiguration") { DicomPeerToPeerConfig dicomPeerToPeerConfig = new DicomPeerToPeerConfig(); reader.ReadStartElement("DicomPeerToPeerConfiguration"); reader.ReadStartElement("FromActor"); reader.ReadStartElement("ActorName"); ActorTypeEnum actorType = ActorTypes.TypeEnum(reader.ReadElementString("ActorType")); System.String id = reader.ReadElementString("ActorId"); ActorName actorName = new ActorName(actorType, id); dicomPeerToPeerConfig.FromActorName = actorName; reader.ReadEndElement(); dicomPeerToPeerConfig.FromActorAeTitle = reader.ReadElementString("AeTitle"); reader.ReadEndElement(); reader.ReadStartElement("ToActor"); reader.ReadStartElement("ActorName"); actorType = ActorTypes.TypeEnum(reader.ReadElementString("ActorType")); id = reader.ReadElementString("ActorId"); actorName = new ActorName(actorType, id); dicomPeerToPeerConfig.ToActorName = actorName; reader.ReadEndElement(); dicomPeerToPeerConfig.ToActorAeTitle = reader.ReadElementString("AeTitle"); dicomPeerToPeerConfig.ToActorIpAddress = reader.ReadElementString("IpAddress"); reader.ReadEndElement(); dicomPeerToPeerConfig.PortNumber = UInt16.Parse(reader.ReadElementString("PortNumber")); System.String secureConnection = reader.ReadElementString("SecureConnection"); if (secureConnection == "True") { dicomPeerToPeerConfig.SecureConnection = true; } else { dicomPeerToPeerConfig.SecureConnection = false; } // read AutoValidate - added later - some config files may not contain this parameter reader.ReadString(); if (reader.Name == "AutoValidate") { System.String autoValidate = reader.ReadElementString("AutoValidate"); if (autoValidate == "True") { dicomPeerToPeerConfig.AutoValidate = true; } else { dicomPeerToPeerConfig.AutoValidate = false; } } dicomPeerToPeerConfig.ActorOption1 = reader.ReadElementString("ActorOption1"); dicomPeerToPeerConfig.ActorOption2 = reader.ReadElementString("ActorOption2"); dicomPeerToPeerConfig.ActorOption3 = reader.ReadElementString("ActorOption3"); dicomPeerToPeerConfig.SessionId = UInt16.Parse(reader.ReadElementString("SessionId")); dicomPeerToPeerConfig.SourceDataDirectory = reader.ReadElementString("SourceDataDirectory"); dicomPeerToPeerConfig.StoreDataDirectory = reader.ReadElementString("StoreDataDirectory"); System.String storeData = reader.ReadElementString("StoreData"); if (storeData == "True") { dicomPeerToPeerConfig.StoreData = true; } else { dicomPeerToPeerConfig.StoreData = false; } reader.ReadStartElement("DefinitionFiles"); bool readingDefinitionFiles = true; while (readingDefinitionFiles == true) { dicomPeerToPeerConfig.AddDefinitionFile(reader.ReadElementString("DefinitionFile")); reader.Read(); if ((reader.NodeType == XmlNodeType.EndElement) && (reader.Name == "DefinitionFiles")) { reader.Read(); readingDefinitionFiles = false; } } _peerToPeerConfigCollection.Add(dicomPeerToPeerConfig); reader.ReadEndElement(); } else { Hl7PeerToPeerConfig hl7PeerToPeerConfig = new Hl7PeerToPeerConfig(); reader.ReadStartElement("Hl7PeerToPeerConfiguration"); reader.ReadStartElement("FromActor"); reader.ReadStartElement("ActorName"); ActorTypeEnum actorType = ActorTypes.TypeEnum(reader.ReadElementString("ActorType")); System.String id = reader.ReadElementString("ActorId"); ActorName actorName = new ActorName(actorType, id); hl7PeerToPeerConfig.FromActorName = actorName; reader.ReadEndElement(); hl7PeerToPeerConfig.FromActorAeTitle = reader.ReadElementString("AeTitle"); reader.ReadEndElement(); reader.ReadStartElement("ToActor"); reader.ReadStartElement("ActorName"); actorType = ActorTypes.TypeEnum(reader.ReadElementString("ActorType")); id = reader.ReadElementString("ActorId"); actorName = new ActorName(actorType, id); hl7PeerToPeerConfig.ToActorName = actorName; reader.ReadEndElement(); hl7PeerToPeerConfig.ToActorAeTitle = reader.ReadElementString("AeTitle"); hl7PeerToPeerConfig.ToActorIpAddress = reader.ReadElementString("IpAddress"); reader.ReadEndElement(); hl7PeerToPeerConfig.PortNumber = UInt16.Parse(reader.ReadElementString("PortNumber")); hl7PeerToPeerConfig.MessageDelimiters.FromString(reader.ReadElementString("MessageDelimiters")); System.String secureConnection = reader.ReadElementString("SecureConnection"); if (secureConnection == "True") { hl7PeerToPeerConfig.SecureConnection = true; } else { hl7PeerToPeerConfig.SecureConnection = false; } // read AutoValidate - added later - some config files may not contain this parameter reader.ReadString(); if (reader.Name == "AutoValidate") { System.String autoValidate = reader.ReadElementString("AutoValidate"); if (autoValidate == "True") { hl7PeerToPeerConfig.AutoValidate = true; } else { hl7PeerToPeerConfig.AutoValidate = false; } } hl7PeerToPeerConfig.ActorOption1 = reader.ReadElementString("ActorOption1"); hl7PeerToPeerConfig.ActorOption2 = reader.ReadElementString("ActorOption2"); hl7PeerToPeerConfig.ActorOption3 = reader.ReadElementString("ActorOption3"); hl7PeerToPeerConfig.SessionId = UInt16.Parse(reader.ReadElementString("SessionId")); _peerToPeerConfigCollection.Add(hl7PeerToPeerConfig); reader.ReadEndElement(); } } reader.ReadEndElement(); } reader.Close(); } catch (System.Exception e) { System.String message = System.String.Format("Failed to read configuration file: \"{0}\". Error: \"{1}\"", configurationFilename, e.Message); throw new System.SystemException(message, e); } }
/// <summary> /// Configure the Actor /// </summary> /// <param name="commonConfig">Common Configuration.</param> /// <param name="peerToPeerConfigCollection">Peer to Peer Configuration collection.</param> public void ConfigActor(CommonConfig commonConfig, BasePeerToPeerConfigCollection peerToPeerConfigCollection) { switch (_actorState) { case ActorStateEnum.ActorCreated: case ActorStateEnum.ActorStopped: // initialize the actor - this allows an actor to be re-configured after being used InitActor(); // call sub-class method to apply the actor specific config ApplyConfig(commonConfig, peerToPeerConfigCollection); // set state to stopped _actorState = ActorStateEnum.ActorStopped; break; default: // actor is started - so cannot be (re)configured break; } }
/// <summary> /// Add the given DicomClient using the Destination Actor Configuration. /// </summary> /// <param name="dicomClientType">Dicom Client Type.</param> /// <param name="toActorType">To Actor Type.</param> /// <param name="commonConfig">Common Configuration.</param> /// <param name="peerToPeerConfigCollection">Peer to Peer Configuration collection.</param> protected void AddDicomClient(DicomClientTypeEnum dicomClientType, ActorTypeEnum toActorType, CommonConfig commonConfig, BasePeerToPeerConfigCollection peerToPeerConfigCollection) { foreach (BasePeerToPeerConfig basePeerToPeerConfig in peerToPeerConfigCollection) { if ((basePeerToPeerConfig is DicomPeerToPeerConfig) && (basePeerToPeerConfig.FromActorName.TypeId == _actorName.TypeId) && (basePeerToPeerConfig.ToActorName.Type == toActorType)) { DicomClient dicomClient = ClientServerFactory.CreateDicomClient(dicomClientType, this, basePeerToPeerConfig.ToActorName); if (dicomClient != null) { dicomClient.ApplyConfig(commonConfig, (DicomPeerToPeerConfig)basePeerToPeerConfig); SubscribeEvent(dicomClient); _dicomClients.Add(dicomClient.ActorName.TypeId, dicomClient); // Initialize the connection with the to actor as being active. // - this can always be overruled by the application later. SetActorDefaultConnectionActive(basePeerToPeerConfig.ToActorName); } } } }
/// <summary> /// Apply the Actor Configuration. /// </summary> /// <param name="commonConfig">Common Configuration.</param> /// <param name="peerToPeerConfigCollection">Peer to Peer Configuration collection.</param> protected override void ApplyConfig(CommonConfig commonConfig, BasePeerToPeerConfigCollection peerToPeerConfigCollection) { // for sending Print Request with Presentation LUT [RAD-23] AddDicomClient(DicomClientTypeEnum.DicomPrintClient, ActorTypeEnum.PrintServer, commonConfig, peerToPeerConfigCollection); }
/// <summary> /// Add an HL7Server for the given Destination Actor Name and Configuration. /// </summary> /// <param name="hl7ServerType">Hl7 Server Type.</param> /// <param name="fromActorType">From Actor Type.</param> /// <param name="commonConfig">Common Configuration.</param> /// <param name="peerToPeerConfigCollection">Peer to Peer Configuration collection.</param> protected void AddHl7Server(Hl7ServerTypeEnum hl7ServerType, ActorTypeEnum fromActorType, CommonConfig commonConfig, BasePeerToPeerConfigCollection peerToPeerConfigCollection) { foreach (BasePeerToPeerConfig basePeerToPeerConfig in peerToPeerConfigCollection) { if ((basePeerToPeerConfig is Hl7PeerToPeerConfig) && (basePeerToPeerConfig.ToActorName.TypeId == _actorName.TypeId) && (basePeerToPeerConfig.FromActorName.Type == fromActorType)) { Hl7Server hl7Server = ClientServerFactory.CreateHl7Server(hl7ServerType, this, basePeerToPeerConfig.FromActorName, commonConfig, (Hl7PeerToPeerConfig)basePeerToPeerConfig); if (hl7Server != null) { SubscribeEvent(hl7Server); _hl7Servers.Add(hl7Server.ActorName.TypeId, hl7Server); // Initialize the connection with the from actor as being active. // - this can always be overruled by the application later. SetActorDefaultConnectionActive(basePeerToPeerConfig.FromActorName); } } } }