@Override
 public void reloadConfiguration() throws Exception {
   device.reconfigure(dicomConfiguration.findDevice(device.getDeviceName()));
   setConfigurationStaleTimeout();
   loadRejectionNoteCodes();
   device.rebindConnections();
 }
 public Archive(
     HL7Configuration dicomConfiguration,
     String deviceName,
     CodeService codeService,
     PatientService patientService,
     StgCmtService stgCmtService,
     MPPSService mppsService,
     RetrieveService retrieveService,
     JMSService jmsService,
     Queue mppsSCUQueue,
     Queue ianSCUQueue,
     Queue stgcmtSCPQueue)
     throws ConfigurationException, Exception {
   this.dicomConfiguration = dicomConfiguration;
   this.codeService = codeService;
   this.aeCache = new ApplicationEntityCache(dicomConfiguration);
   this.hl7AppCache = new HL7ApplicationCache(dicomConfiguration);
   this.pixConsumer = new PIXConsumer(hl7AppCache);
   this.jmsService = jmsService;
   this.mppsSCU = new MPPSSCU(aeCache, jmsService, mppsSCUQueue);
   this.ianSCU = new IANSCU(aeCache, jmsService, ianSCUQueue);
   this.storeSCP = new CStoreSCP(aeCache, ianSCU);
   this.stgCmtSCP = new StgCmtSCP(aeCache, stgCmtService, jmsService, stgcmtSCPQueue);
   this.mppsSCP = new MPPSSCP(aeCache, mppsSCU, ianSCU, mppsService);
   this.patientRootFindSCP =
       new CFindSCP(
           UID.PatientRootQueryRetrieveInformationModelFIND,
           aeCache,
           pixConsumer,
           PATIENT,
           STUDY,
           SERIES,
           IMAGE);
   this.studyRootFindSCP =
       new CFindSCP(
           UID.StudyRootQueryRetrieveInformationModelFIND,
           aeCache,
           pixConsumer,
           STUDY,
           SERIES,
           IMAGE);
   this.patientStudyOnlyFindSCP =
       new CFindSCP(
           UID.PatientStudyOnlyQueryRetrieveInformationModelFINDRetired,
           aeCache,
           pixConsumer,
           PATIENT,
           STUDY);
   this.patientRootMoveSCP =
       new CMoveSCP(
           UID.PatientRootQueryRetrieveInformationModelMOVE,
           aeCache,
           pixConsumer,
           retrieveService,
           PATIENT,
           STUDY,
           SERIES,
           IMAGE);
   this.studyRootMoveSCP =
       new CMoveSCP(
           UID.StudyRootQueryRetrieveInformationModelMOVE,
           aeCache,
           pixConsumer,
           retrieveService,
           STUDY,
           SERIES,
           IMAGE);
   this.patientStudyOnlyMoveSCP =
       new CMoveSCP(
           UID.PatientStudyOnlyQueryRetrieveInformationModelMOVERetired,
           aeCache,
           pixConsumer,
           retrieveService,
           PATIENT,
           STUDY);
   this.patientRootGetSCP =
       new CGetSCP(
           UID.PatientRootQueryRetrieveInformationModelGET,
           aeCache,
           pixConsumer,
           retrieveService,
           PATIENT,
           STUDY,
           SERIES,
           IMAGE);
   this.studyRootGetSCP =
       new CGetSCP(
           UID.StudyRootQueryRetrieveInformationModelGET,
           aeCache,
           pixConsumer,
           retrieveService,
           STUDY,
           SERIES,
           IMAGE);
   this.patientStudyOnlyGetSCP =
       new CGetSCP(
           UID.PatientStudyOnlyQueryRetrieveInformationModelGETRetired,
           aeCache,
           pixConsumer,
           retrieveService,
           PATIENT,
           STUDY);
   this.withoutBulkDataGetSCP =
       new CGetSCP(
               UID.CompositeInstanceRetrieveWithoutBulkDataGET,
               aeCache,
               pixConsumer,
               retrieveService,
               IMAGE)
           .withoutBulkData(true);
   this.mwlFindSCP =
       new MWLCFindSCP(UID.ModalityWorklistInformationModelFIND, aeCache, pixConsumer);
   init((ArchiveDevice) dicomConfiguration.findDevice(deviceName));
   device.setHL7MessageListener(hl7ServiceRegistry(patientService));
   setConfigurationStaleTimeout();
   loadRejectionNoteCodes();
 }