in import/src/main/java/com/google/cloud/healthcare/imaging/dicomadapter/ImportAdapter.java [65:151]
public static void main(String[] args) throws IOException, GeneralSecurityException {
Flags flags = new Flags();
JCommander jCommander = new JCommander(flags);
jCommander.parse(args);
String dicomwebAddress = DicomWebValidation.validatePath(flags.dicomwebAddress, DicomWebValidation.DICOMWEB_ROOT_VALIDATION);
if(flags.help){
jCommander.usage();
return;
}
// Adjust logging.
LogUtil.Log4jToStdout(flags.verbose ? "DEBUG" : "ERROR");
// Credentials, use the default service credentials.
GoogleCredentials credentials = GoogleCredentials.getApplicationDefault();
if (!flags.oauthScopes.isEmpty()) {
credentials = credentials.createScoped(Arrays.asList(flags.oauthScopes.split(",")));
}
HttpRequestFactory requestFactory =
new NetHttpTransport().createRequestFactory(new HttpCredentialsAdapter(credentials));
// Initialize Monitoring
if (!flags.monitoringProjectId.isEmpty()) {
MonitoringService.initialize(flags.monitoringProjectId, Event.values(), requestFactory);
MonitoringService.addEvent(Event.STARTED);
} else {
MonitoringService.disable();
}
// Dicom service handlers.
DicomServiceRegistry serviceRegistry = new DicomServiceRegistry();
// Handle C-ECHO (all nodes which accept associations must support this).
serviceRegistry.addDicomService(new BasicCEchoSCP());
// Handle C-STORE
String cstoreDicomwebAddr = dicomwebAddress;
String cstoreDicomwebStowPath = STUDIES;
if (cstoreDicomwebAddr.length() == 0) {
cstoreDicomwebAddr = flags.dicomwebAddr;
cstoreDicomwebStowPath = flags.dicomwebStowPath;
}
String cstoreSubAet = flags.dimseCmoveAET.equals("") ? flags.dimseAET : flags.dimseCmoveAET;
if (cstoreSubAet.isBlank()) {
throw new IllegalArgumentException("--dimse_aet flag must be set.");
}
IDicomWebClient defaultCstoreDicomWebClient = configureDefaultDicomWebClient(
requestFactory, cstoreDicomwebAddr, cstoreDicomwebStowPath, credentials, flags);
DicomRedactor redactor = configureRedactor(flags);
BackupUploadService backupUploadService = configureBackupUploadService(flags, credentials);
IDestinationClientFactory destinationClientFactory = configureDestinationClientFactory(
defaultCstoreDicomWebClient, credentials, flags, backupUploadService != null);
MultipleDestinationUploadService multipleDestinationSendService = configureMultipleDestinationUploadService(
flags, cstoreSubAet, backupUploadService);
CStoreService cStoreService =
new CStoreService(destinationClientFactory, redactor, flags.transcodeToSyntax, multipleDestinationSendService);
serviceRegistry.addDicomService(cStoreService);
// Handle C-FIND
IDicomWebClient dicomWebClient =
new DicomWebClient(requestFactory, dicomwebAddress, STUDIES);
CFindService cFindService = new CFindService(dicomWebClient, flags);
serviceRegistry.addDicomService(cFindService);
// Handle C-MOVE
CMoveSenderFactory cMoveSenderFactory = new CMoveSenderFactory(cstoreSubAet, dicomWebClient);
AetDictionary aetDict = new AetDictionary(flags.aetDictionaryInline, flags.aetDictionaryPath);
CMoveService cMoveService = new CMoveService(dicomWebClient, aetDict, cMoveSenderFactory);
serviceRegistry.addDicomService(cMoveService);
// Handle Storage Commitment N-ACTION
serviceRegistry.addDicomService(new StorageCommitmentService(dicomWebClient, aetDict));
// Start DICOM server
Device device = DeviceUtil.createServerDevice(flags.dimseAET, flags.dimsePort, serviceRegistry);
device.bindConnections();
}