Skip to content

Commit c0f2264

Browse files
committed
MDE 0.6.0 release
Signed-off-by: Victor Chang <[email protected]>
1 parent 8ebac51 commit c0f2264

File tree

6 files changed

+83
-89
lines changed

6 files changed

+83
-89
lines changed

deploy/monai-deploy-express/.env

+9-9
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
# Container Images
2-
INFORMATICS_GATEWAY_IMAGE=ghcr.io/project-monai/monai-deploy-informatics-gateway:0.4.1
2+
INFORMATICS_GATEWAY_IMAGE=ghcr.io/project-monai/monai-deploy-informatics-gateway:0.5.0-beta.96
33
INFORMATICS_GATEWAY_CONFIG_IMAGE=dwdraju/alpine-curl-jq:latest
4-
WORKFLOW_MANAGER_IMAGE=ghcr.io/project-monai/monai-deploy-workflow-manager:2023.5.0-beta.238
5-
TASK_MANAGER_IMAGE=ghcr.io/project-monai/monai-deploy-task-manager:2023.5.0-beta.238
4+
WORKFLOW_MANAGER_IMAGE=ghcr.io/project-monai/monai-deploy-workflow-manager:2023.5.0-pr0996.410
5+
TASK_MANAGER_IMAGE=ghcr.io/project-monai/monai-deploy-task-manager:2023.5.0-pr0996.410
66

7-
MINIO_IMAGE=minio/minio:RELEASE.2023-10-16T04-13-43Z
8-
MONGODB_IMAGE=mongo:5.0.12
9-
ORTHANC_IMAGE=osimis/orthanc:23.9.2-full
7+
MINIO_IMAGE=minio/minio:RELEASE.2024-06-11T03-13-30Z
8+
MONGODB_IMAGE=mongo:5.0.25
9+
ORTHANC_IMAGE=orthancteam/orthanc:24.6.1-full
1010
RABBITMQ_IMAGE=rabbitmq:3.12.7-management
1111

1212
ELK_VERSION=8.7.0
@@ -96,9 +96,9 @@ KIBANA_IP=172.29.0.103
9696
KIBANA_CFG_IP=172.29.0.104
9797

9898
# Host Data Volume Paths
99-
INFORMATICS_GATEWAY_PAYLOADS=.md/mdig/payloads/
100-
INFORMATICS_GATEWAY_DATABASE=.md/mdig/database/
101-
TASK_MANAGER_DATA=$PWD/.md/mdtm/
99+
INFORMATICS_GATEWAY_PAYLOADS=${PWD}/.md/mdig/payloads/
100+
INFORMATICS_GATEWAY_DATABASE=${PWD}/.md/mdig/database/
101+
TASK_MANAGER_DATA=${PWD}/.md/mdtm/
102102
MONAI_DEPLOY_PLUGINS=plug-ins/ # disabled by default
103103

104104
MINIO_DATA=.md/minio/data/

deploy/monai-deploy-express/configs/informatics-gateway.json

+42-23
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,22 @@
55
"ConnectionStrings": {
66
"Type": "mongodb",
77
"InformaticsGatewayDatabase": "mongodb://root:rootpassword@mongodb:27017",
8-
"DatabaseName": "InformaticsGateway"
8+
"DatabaseOptions": {
9+
"DatabaseName": "InformaticsGateway",
10+
"retries": {
11+
"delays": [
12+
"750",
13+
"1201",
14+
"2500"
15+
]
16+
}
17+
}
918
},
1019
"InformaticsGateway": {
1120
"dicom": {
1221
"scp": {
1322
"port": 104,
23+
"externalAppPort": 105,
1424
"logDimseDatasets": false,
1525
"rejectUnknownSources": false
1626
},
@@ -36,11 +46,17 @@
3646
"password": "admin",
3747
"virtualHost": "monaideploy",
3848
"exchange": "monaideploy",
39-
"exportRequestQueue": "export_tasks",
4049
"deadLetterExchange": "monaideploy-dead-letter",
4150
"deliveryLimit": 3,
42-
"requeueDelay": 30
51+
"requeueDelay": 3,
52+
"prefetchCount": "5"
53+
},
54+
"topics": {
55+
"externalAppRequest": "md.externalapp.request",
56+
"exportHl7": "md.export.hl7",
57+
"exportHl7Complete": "md.export.hl7complete"
4358
}
59+
4460
},
4561
"storage": {
4662
"localTemporaryStoragePath": "/payloads",
@@ -49,16 +65,15 @@
4965
"storageRootPath": "/payloads",
5066
"temporaryBucketName": "monaideploy",
5167
"serviceAssemblyName": "Monai.Deploy.Storage.MinIO.MinIoStorageService, Monai.Deploy.Storage.MinIO",
52-
"watermarkPercent": 75,
68+
"watermarkPercent": 95,
5369
"reserveSpaceGB": 5,
54-
"concurrentUploads": 4,
5570
"settings": {
5671
"endpoint": "minio:9000",
5772
"accessKey": "minioadmin",
5873
"accessToken": "minioadmin",
5974
"securedConnection": false,
6075
"region": "local",
61-
"executableLocation": "mc",
76+
"executableLocation": "/bin/mc",
6277
"serviceName": "MinIO",
6378
"createBuckets": "monaideploy"
6479
}
@@ -68,23 +83,27 @@
6883
"maximumNumberOfConnections": 10,
6984
"clientTimeout": 60000,
7085
"sendAck": true
71-
}
72-
},
73-
"Kestrel": {
74-
"EndPoints": {
75-
"Http": {
76-
"Url": "http://+:5000"
86+
},
87+
"dicomWeb": {
88+
"plugins": []
89+
},
90+
91+
"Kestrel": {
92+
"EndPoints": {
93+
"Http": {
94+
"Url": "http://+:5000"
95+
}
7796
}
97+
},
98+
"AllowedHosts": "*",
99+
"Cli": {
100+
"Runner": "Docker",
101+
"HostDataStorageMount": "~/.mig/data",
102+
"HostPlugInsStorageMount": "~/.mig/plug-ins",
103+
"HostDatabaseStorageMount": "~/.mig/database",
104+
"HostLogsStorageMount": "~/.mig/logs",
105+
"InformaticsGatewayServerEndpoint": "http://localhost:5000",
106+
"DockerImagePrefix": "ghcr.io/project-monai/monai-deploy-informatics-gateway"
78107
}
79-
},
80-
"AllowedHosts": "*",
81-
"Cli": {
82-
"Runner": "Docker",
83-
"HostDataStorageMount": "~/.mig/data",
84-
"HostPlugInsStorageMount": "~/.mig/plug-ins",
85-
"HostDatabaseStorageMount": "~/.mig/database",
86-
"HostLogsStorageMount": "~/.mig/logs",
87-
"InformaticsGatewayServerEndpoint": "http://localhost:5000",
88-
"DockerImagePrefix": "ghcr.io/project-monai/monai-deploy-informatics-gateway"
89108
}
90-
}
109+
}

deploy/monai-deploy-express/configs/task-manager.json

+16-50
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
"docker": "Monai.Deploy.WorkflowManager.TaskManager.Docker.DockerPlugin, Monai.Deploy.WorkflowManager.TaskManager.Docker"
1919
},
2020
"meta-data": {
21-
},
21+
}
2222
},
2323
"messaging": {
2424
"retries": {
@@ -28,7 +28,8 @@
2828
"workflowRequest": "md.workflow.request",
2929
"exportComplete": "md.export.complete",
3030
"exportRequestPrefix": "md.export.request",
31-
"taskCallback": "md.tasks.callback"
31+
"taskCallback": "md.tasks.callback",
32+
"exportHl7": "md.export.hl7"
3233
},
3334
"dicomAgents": {
3435
"dicomWebAgentName": "monaidicomweb",
@@ -42,7 +43,7 @@
4243
"virtualHost": "monaideploy",
4344
"exchange": "monaideploy",
4445
"deadLetterExchange": "deadLetterExchange",
45-
"deliveryLimit": "5",
46+
"deliveryLimit": "3",
4647
"requeueDelay": "0"
4748
},
4849
"subscriberServiceAssemblyName": "Monai.Deploy.Messaging.RabbitMQ.RabbitMQMessageSubscriberService, Monai.Deploy.Messaging.RabbitMQ",
@@ -55,7 +56,8 @@
5556
"deadLetterExchange": "monaideploy-dead-letter",
5657
"exportRequestQueue": "export_tasks",
5758
"deliveryLimit": 3,
58-
"requeueDelay": 30
59+
"requeueDelay": 3,
60+
"prefetchCount": 5
5961
}
6062
},
6163
"storage": {
@@ -72,51 +74,15 @@
7274
}
7375
}
7476
},
75-
"Logging": {
76-
"LogLevel": {
77-
"Default": "Information",
78-
"System": "Warning",
79-
"Microsoft": "Warning",
80-
"Microsoft.EntityFrameworkCore": "Warning",
81-
"Microsoft.Hosting.Lifetime": "Information",
82-
"Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker": "Error",
83-
"Monai": "Debug"
84-
},
85-
"Console": {
86-
"FormatterOptions": {
87-
"ColorBehavior": "Enabled",
88-
"IncludeScopes": true,
89-
"SingleLine": false,
90-
"TimestampFormat": " HH:mm:ss ",
91-
"UseUtcTimestamp": true
77+
"Kestrel": {
78+
"EndPoints": {
79+
"Http": {
80+
"Url": "http://+:5002"
9281
}
93-
}
94-
},
95-
"Serilog": {
96-
"Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ],
97-
"Properties": {
98-
"enviroment": "Production",
99-
"serviceName": "MTM"
10082
},
101-
"WriteTo": [
102-
{
103-
"Name": "File",
104-
"Args": {
105-
"path": "logs/MTM-.log",
106-
"rollingInterval": "Day",
107-
"rollOnFileSizeLimit": true,
108-
"fileSizeLimitBytes": "10485760",
109-
"retainedFileCountLimit": 30,
110-
"formatter": "Serilog.Formatting.Json.JsonFormatter, Serilog"
111-
}
112-
},
113-
{
114-
"Name": "Http",
115-
"Args": {
116-
"requestUri": "http://logstash:50000",
117-
"queueLimitBytes": null
118-
}
119-
}
120-
]
121-
}
122-
}
83+
"LogHttpRequestQuery": false,
84+
"LogHttpRequestBody": false,
85+
"LogHttpResponseBody": true
86+
},
87+
"AllowedHosts": "*"
88+
}

deploy/monai-deploy-express/configs/workflow-manager.json

+13-5
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@
1414
"TaskManager": {
1515
"concurrency": 1,
1616
"taskTimeoutMinutes": 60,
17+
"perTaskTypeTimeoutMinutes": {
18+
"aide_clinical_review": 5760
19+
},
1720
"plug-ins": {
1821
"docker": "Monai.Deploy.WorkflowManager.TaskManager.Docker.DockerPlugin, Monai.Deploy.WorkflowManager.TaskManager.Docker"
1922
},
@@ -28,7 +31,10 @@
2831
"workflowRequest": "md.workflow.request",
2932
"exportComplete": "md.export.complete",
3033
"exportRequestPrefix": "md.export.request",
31-
"callbackRequest": "md.tasks.callback"
34+
"callbackRequest": "md.tasks.callback",
35+
"aideClinicalReviewRequest": "aide.clinical_review.request",
36+
"exportHl7": "md.export.hl7",
37+
"exportHl7Complete": "md.export.hl7complete"
3238
},
3339
"dicomAgents": {
3440
"dicomWebAgentName": "monaidicomweb",
@@ -42,7 +48,7 @@
4248
"virtualHost": "monaideploy",
4349
"exchange": "monaideploy",
4450
"deadLetterExchange": "deadLetterExchange",
45-
"deliveryLimit": "5",
51+
"deliveryLimit": "3",
4652
"requeueDelay": "0"
4753
},
4854
"subscriberServiceAssemblyName": "Monai.Deploy.Messaging.RabbitMQ.RabbitMQMessageSubscriberService, Monai.Deploy.Messaging.RabbitMQ",
@@ -55,7 +61,8 @@
5561
"deadLetterExchange": "monaideploy-dead-letter",
5662
"exportRequestQueue": "export_tasks",
5763
"deliveryLimit": 3,
58-
"requeueDelay": 30
64+
"requeueDelay": 3,
65+
"prefetchCount": "5"
5966
}
6067
},
6168
"storage": {
@@ -72,7 +79,8 @@
7279
}
7380
},
7481
"dicomTagsDisallowed": "PatientName,PatientID,IssuerOfPatientID,TypeOfPatientID,IssuerOfPatientIDQualifiersSequence,SourcePatientGroupIdentificationSequence,GroupOfPatientsIdentificationSequence,SubjectRelativePositionInImage,PatientBirthDate,PatientBirthTime,PatientBirthDateInAlternativeCalendar,PatientDeathDateInAlternativeCalendar,PatientAlternativeCalendar,PatientSex,PatientInsurancePlanCodeSequence,PatientPrimaryLanguageCodeSequence,PatientPrimaryLanguageModifierCodeSequence,QualityControlSubject,QualityControlSubjectTypeCodeSequence,StrainDescription,StrainNomenclature,StrainStockNumber,StrainSourceRegistryCodeSequence,StrainStockSequence,StrainSource,StrainAdditionalInformation,StrainCodeSequence,GeneticModificationsSequence,GeneticModificationsDescription,GeneticModificationsNomenclature,GeneticModificationsCodeSequence,OtherPatientIDsRETIRED,OtherPatientNames,OtherPatientIDsSequence,PatientBirthName,PatientAge,PatientSize,PatientSizeCodeSequence,PatientBodyMassIndex,MeasuredAPDimension,MeasuredLateralDimension,PatientWeight,PatientAddress,InsurancePlanIdentificationRETIRED,PatientMotherBirthName,MilitaryRank,BranchOfService,MedicalRecordLocatorRETIRED,ReferencedPatientPhotoSequence,MedicalAlerts,Allergies,CountryOfResidence,RegionOfResidence,PatientTelephoneNumbers,PatientTelecomInformation,EthnicGroup,Occupation,SmokingStatus,AdditionalPatientHistory,PregnancyStatus,LastMenstrualDate,PatientReligiousPreference,PatientSpeciesDescription,PatientSpeciesCodeSequence,PatientSexNeutered,AnatomicalOrientationType,PatientBreedDescription,PatientBreedCodeSequence,BreedRegistrationSequence,BreedRegistrationNumber,BreedRegistryCodeSequence,ResponsiblePerson,ResponsiblePersonRole,ResponsibleOrganization,PatientComments,ExaminedBodyThickness",
75-
"migExternalAppPlugins": [ "Monai.Deploy.InformaticsGateway.PlugIns.RemoteAppExecution.DicomDeidentifier, Monai.Deploy.InformaticsGateway.PlugIns.RemoteAppExecution, Version=0.0.0.0" ]
82+
"migExternalAppPlugins": [ "Monai.Deploy.InformaticsGateway.PlugIns.RemoteAppExecution.DicomDeidentifier, Monai.Deploy.InformaticsGateway.PlugIns.RemoteAppExecution, Version=0.0.0.0" ],
83+
"dataRetentionDays": 10 // note. -1 = never delete
7684
},
7785
"InformaticsGateway": {
7886
"apiHost": "http://informatics-gateway:5000",
@@ -90,4 +98,4 @@
9098
"LogHttpResponseBody": true
9199
},
92100
"AllowedHosts": "*"
93-
}
101+
}

deploy/monai-deploy-express/docker-compose.yml

+1
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ services:
112112
image: $INFORMATICS_GATEWAY_IMAGE
113113
hostname: $INFORMATICS_GATEWAY_HOSTNAME
114114
container_name: $INFORMATICS_GATEWAY_CONTAINERNAME
115+
user: root:root
115116
volumes:
116117
- ./configs/informatics-gateway.json:/opt/monai/ig/appsettings.json
117118
- ./configs/nlog.config:/opt/monai/ig/nlog.config

deploy/monai-deploy-express/init.sh

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,14 @@ RUNDIR=$PWD/.md
1717

1818
echo "Initializing directories..."
1919
[ -d $RUNDIR ] && echo "Removing existin $RUNDIR" && sudo rm -r $RUNDIR
20-
mkdir -p $RUNDIR/esdata/ && echo "Created $RUNDIR/"
20+
mkdir -p $RUNDIR/esdata/ && echo "Created $RUNDIR/esdata/"
2121
mkdir -p $RUNDIR/minio/ && echo "Created $RUNDIR/minio/"
2222
mkdir -p $RUNDIR/rabbitmq/ && echo "Created $RUNDIR/rabbitmq/"
2323
mkdir -p $RUNDIR/orthanc/ && echo "Created $RUNDIR/orthanc/"
2424
mkdir -p $RUNDIR/mongodb/ && echo "Created $RUNDIR/mongodb/"
2525
mkdir -p $RUNDIR/mdwm/ && echo "Created $RUNDIR/mdwm/"
2626
mkdir -p $RUNDIR/mdtm/ && echo "Created $RUNDIR/mdtm/"
2727
mkdir -p $RUNDIR/mdig/ && echo "Created $RUNDIR/mdig/"
28-
sudo chown $(id -u):$(id -g) -R $RUNDIR/esdata && echo "Permission updated"
28+
sudo chown $(id -u):$(id -g) -R $RUNDIR/ && echo "Permission updated"
2929
echo "Directories setup"
3030
echo "Ready to run docker compose up"

0 commit comments

Comments
 (0)