From c4b8efa033e09114aad31b541ef5064ed5a41965 Mon Sep 17 00:00:00 2001 From: yuchengt Date: Tue, 16 Apr 2024 15:44:29 -0700 Subject: [PATCH 1/2] add JEST unit test suits Signed-off-by: yuchengt --- .DS_Store | Bin 0 -> 6148 bytes plugins/.DS_Store | Bin 0 -> 6148 bytes plugins/ohif/.DS_Store | Bin 0 -> 6148 bytes plugins/ohif/README.md | 33 ++++++++ plugins/ohif/extensions/.DS_Store | Bin 0 -> 6148 bytes .../ohif/extensions/monai-service/.DS_Store | Bin 0 -> 6148 bytes .../extensions/monai-service/jest.config.js | 3 + .../extensions/monai-service/package.json | 65 +--------------- .../extensions/monai-service/src/.DS_Store | Bin 0 -> 6148 bytes .../src/__tests__/inference.test.js | 73 ++++++++++++++++++ .../src/__tests__/monaiServicePanel.test.js | 63 +++++++++++++++ .../monai-service/src/components/.DS_Store | Bin 0 -> 6148 bytes plugins/ohif/jest.config.js | 3 + 13 files changed, 178 insertions(+), 62 deletions(-) create mode 100644 .DS_Store create mode 100644 plugins/.DS_Store create mode 100644 plugins/ohif/.DS_Store create mode 100644 plugins/ohif/extensions/.DS_Store create mode 100644 plugins/ohif/extensions/monai-service/.DS_Store create mode 100644 plugins/ohif/extensions/monai-service/jest.config.js create mode 100644 plugins/ohif/extensions/monai-service/src/.DS_Store create mode 100644 plugins/ohif/extensions/monai-service/src/__tests__/inference.test.js create mode 100644 plugins/ohif/extensions/monai-service/src/__tests__/monaiServicePanel.test.js create mode 100644 plugins/ohif/extensions/monai-service/src/components/.DS_Store create mode 100644 plugins/ohif/jest.config.js diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..09af733c629d4976a145407f832015ec5024e3b9 GIT binary patch literal 6148 zcmeHK%}T>S5T3QwrW7FuMUMfm1zV9y@e*o%0V8@)sR=1H7_+5G?4cBL)fe(jd>&_Z zH()j3O~lT??l(I>yO|HNKL8*GdDsQ80l>mWC`hRgGFQ4bOfaEPb3~9p8qCva5LZm} z7ftl-4VXdv!8u?_}9_ z7X70RsmIG@)7m{aJiQn_#!rcS(M$>?UCFk=5?)dHQq;3IOJbQ!&{JlW(TvOhGr$Zm z18c^BIS8!Qn$^waG6T%O&kWH1;9w(k4Hg>J)`1;epUGb*Btf0t5`>OH*I=O$Jt#t_ zBI;COo)|)>qunuauE9d1P6we@#(B)j<>N)D)zR*#a1gFW?wJ8*V3mQI9@=#NpW`o6 z`N&^Q;Sn>y4E!?&M1AND2UwIjTfdb@XRU+n9vcb86{Mh`zH$k`0qrCE%BlSh=@{o4 WEHu(AWLN2kd=XHDaK{Y%0s|k#WlWv` literal 0 HcmV?d00001 diff --git a/plugins/.DS_Store b/plugins/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..8f26aa01b006ddc8e44e90f40474dc847c62789b GIT binary patch literal 6148 zcmeHK%}T>S5Z<-XrW7FuMUM+!3$`Ma;w8lT0!H+pQWH{bFlI}WnnNk%sxRc5_&m<+ zZp32FB6bFLzxmzGevtiPjB#%s^%!#)V>UEIj!KQ7yEe38k`XzM5f<4rOk@c5yNUgE zz;CyhWD^#%hwtAXPLnvxyWJ1I(XckRns(D}+jss%7JeS&^UMooH)vf-nS_-dgjeyn z7&$vY{qQ zT(<1pgTvE{(NprA%2&-N2fCGP8?4|Bl&|Hy__H*T=_B~6{3?%-7$63S0b*c{88C-} z-Cko3Xz9cNF;LF{?hgVQqHD0!sJ0I1@cN8#3lRl$d`ln-gRa3+BSb*BE(O%3+&nS3 zE(gCbd9J}yqb_G$%?#t1nXAVOSF?j(sC33%jnoqZ#K0;84Q)Dj{-47yQ~StYEg_2- zAO`*!1Kb+=Lk|{Z&ek8x!?RXEyN8B?c_k_!ps!p4z`%WEUj=nspbmMi!BQiRf__yF PNEZP`2zA83FEH>4L~TkQ literal 0 HcmV?d00001 diff --git a/plugins/ohif/.DS_Store b/plugins/ohif/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..6c169055d8e34d0606b1ea49f5c648a24c131f3a GIT binary patch literal 6148 zcmeH~QA@)x5XUdubge_^gQAZGUk7d?li^FL^9xwf2bH<9p~c#awR6H4^i{u*-^9=3 zU6P7p^T8KEcL$eWlFK#Z-;y){ApCK^3E%*Lg-$HlSS&G$lP_4w^bm!5Mgl2BAc4sC z7Zjj(w*doqh78Lu?=PIB!!VX1#^1tW9Hm*K@h(c`%G!F>s#-PcCb*ZAAnRr0)bEY1 zsC6!792WInco7XIU1#e=CRr~^1|yXa^#?fQ`Z7xTa^lNz(oa=xpaYg|*gitGmu{@|h$J;Pj6Z5>$9?<2)4L^7BP6wf8#^;!sg}I>!H9PjZYB&f_lS@{B6_{6`teXy< z|EJ&I|L2pq#R{+j|4IQ-=>#1gmt@Y?g~icX>!RPHlhL?b^D_l2>L|vsbQJHRE5m-5 WDoD>T*Tfz){t-|zaKQ@vssbO6CQbS5T0$TO(}&Q6g>vKR%}Ho#Y?F51&ruHr6wk5FwK^vKZjDtRbR+A@p+ut z-HN5^!GlPdf!S|%c4n9T5_Wb0Ky=4J3!n}F7Aj$(g3T8~dk%{NgfmNquaR@tgrx9+2y zx+8Bi&bnTDO}z^#V}D_L{$&(S`}M6;nT)(B2~(921tEsqTt!JBr(HQtf=uPQdcdk! zm41C^HfwiU4ZD3jZ`iZWVUx_G`MhFn?;V_+_n+cHBA+#@0)IdyHG>OyLF0!FPTVw! zW%7Vgiy0P~jLZNtzznP{1LnZ9s%yJL-WW5$4E&Y>Iv;FQLdRgPQ5_xF(DjkVON1n7 z(_4bjHs~14HR1@0(5Z+zRhTD+(CO&6O`Kye*QnD$sFiUZv$8NR6rol}zpcVSI2yTS z2AF|m28y~{r}}^P{ri78iF?cdGq6?+h*Hn(b#Y6kwytcBYORfWhe|?mxyFwaG*l_Z fSSrQ4s7laplY!_M%r&A1g)ah%25y*vKV{$@6b?_1 literal 0 HcmV?d00001 diff --git a/plugins/ohif/extensions/monai-service/.DS_Store b/plugins/ohif/extensions/monai-service/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..7be67beb34f8b0c5e68f1bcb366888fa89ffa2ec GIT binary patch literal 6148 zcmeHK%Wl&^6upxK>Zl-P0fMC^wgo4sYE`kZLf8Qd3}pc**s)1Xof*p>6ID?pZ{dgd z6TXKtkAOlbON8iL>CU-xU(TFSJRTxq<0c&u4T#8tD(v(z{65g=)rw3%ZM@)0d z=mCACdMDdC{zV4V-rb;*Vw%x8#-IBqh?g>X+SIZ_&NGVW0=p`)zY7ZJlmr#jz|P7U-MP2Son7g6DPxm#z}^U39EymMrTsDMSL#*Q6}+S`LTbSf|^&c74y=^Y*=W z(V19AGL}s}j;l9n_ELx<+1PP%nrF-D;MQZoWt{V@(gk^%A?5AsoTp+r77b5pT^pHz z*Z2C%MpUUhwF}^t@Pb@fkl2!ti&~a?|1lzQC}H z`4m;W5PS~LCVP|R&@tc`xbh6x*Mhfy<(Y51`&ZUQwlVt%w92=DTm*;d7;JDpeZM2FCWZ4nb{i((@#f#U#Alb z4Z6`W;279uplhZBb^brO{QkdP24 l5*Yd@My@)F??Sb}?<)fsT5Ju%192Y$ng%yG2L37o-vRK8c{>0A literal 0 HcmV?d00001 diff --git a/plugins/ohif/extensions/monai-service/jest.config.js b/plugins/ohif/extensions/monai-service/jest.config.js new file mode 100644 index 0000000..6f3d284 --- /dev/null +++ b/plugins/ohif/extensions/monai-service/jest.config.js @@ -0,0 +1,3 @@ +module.exports = { + testEnvironment: 'jest-environment-jsdom' +}; \ No newline at end of file diff --git a/plugins/ohif/extensions/monai-service/package.json b/plugins/ohif/extensions/monai-service/package.json index 7fb2ce3..fa6f3e7 100644 --- a/plugins/ohif/extensions/monai-service/package.json +++ b/plugins/ohif/extensions/monai-service/package.json @@ -1,64 +1,5 @@ { - "name": "@ohif/extension-monai-service", - "version": "0.0.1", - "description": "OHIFv3 extension for MONAI Service", - "author": "OHIF,NVIDIA", - "license": "MIT", - "main": "dist/umd/extension-monai-service/index.umd.js", - "files": [ - "dist/**", - "public/**", - "README.md" - ], - "repository": "OHIF/Viewers", - "keywords": [ - "ohif-extension" - ], - "module": "src/index.tsx", - "publishConfig": { - "access": "public" - }, - "engines": { - "node": ">=14", - "npm": ">=6", - "yarn": ">=1.18.0" - }, - "scripts": { - "dev": "cross-env NODE_ENV=development webpack --config .webpack/webpack.dev.js --watch --output-pathinfo", - "dev:my-extension": "yarn run dev", - "build": "cross-env NODE_ENV=production webpack --config .webpack/webpack.prod.js", - "build:package": "yarn run build", - "start": "yarn run dev" - }, - "peerDependencies": { - "@ohif/core": "^3.7.0-beta.80", - "@ohif/extension-default": "^3.7.0-beta.80", - "@ohif/extension-cornerstone": "^3.7.0-beta.80", - "@ohif/i18n": "^3.7.0-beta.80", - "prop-types": "^15.6.2", - "react": "^17.0.2", - "react-dom": "^17.0.2", - "react-i18next": "^12.2.2", - "react-router": "^6.8.1", - "react-router-dom": "^6.8.1" - }, - "dependencies": { - "@babel/runtime": "^7.20.13", - "md5.js": "^1.3.5", - "axios": "^0.21.1", - "arraybuffer-concat": "^0.0.1", - "ndarray": "^1.0.19", - "nrrd-js": "^0.2.1", - "pako": "^2.0.3", - "react-color": "^2.19.3", - "bootstrap": "^5.0.2", - "react-select": "^4.3.1", - "chroma-js": "^2.1.2" - }, - "devDependencies": { - "@cornerstonejs/tools": "^1.16.0", - "@babel/runtime": "^7.20.13", - "@cornerstonejs/tools": "^1.16.4", - "react-color": "^2.19.3" - } + "devDependencies": { + "svgo": "^1.3.2" + } } diff --git a/plugins/ohif/extensions/monai-service/src/.DS_Store b/plugins/ohif/extensions/monai-service/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..ec90760dc3b2881eab4d270d60664f9e40697a3d GIT binary patch literal 6148 zcmeHK%}N6?5T4ko+ltVGf5(8=f~`tbyezf8fGc`XS-ZCA;+mB1);%nRJ*p3+Z{qVf zlSHAm^;kqRF!N0^nJn``k{tkG%|WLQPyql3m9SVwGeIa$Iwo^wrijSY9x)^kgAaa? zj;*#6mI2GaZ)1SYZi!ATp4={;-LLZ-_ku_U7<~(RQ5Yw++B=&o6z3NfokeHKx$^F0 z>Lu-D5I5WX3mTnD83mtyJ2(rwsb5(+k|Jq`qT5#qVW*2rF3&^Jk!e#7L?>3co(?!A zr{q`Gv#fDYukyy;u*$Q8?Hake!(qu;-P}4n@$aJtA)hsq3@;uf%LYH;1)T|nJ$ii+ zNpXu&$}GbTNO*uAT7d)zA|Ob=ihrGX@oQPOzf8U9M53pfS&}a_A}EKvjY (props) => ( + +)); +jest.mock('../../utils/GenericUtils', () => ({ + hideNotification: jest.fn(), +})); + +describe('AutoSegmentation', () => { + let props; + + beforeEach(() => { + props = { + client: () => ({ + inference: jest.fn().mockResolvedValue({ status: 201 }), + }), + updateView: jest.fn(), + notification: { + show: jest.fn(), + hide: jest.fn(), + }, + servicesManager: { + services: { + displaySetService: { + activeDisplaySets: [{ Modality: 'CT', SeriesInstanceUID: '123' }], + } + } + }, + info: { + models: [{ id: 'model1', network_arch: 'monai_vista3d' }], + modelLabelNames: { 'model1': ['Label1', 'Label2'] }, + modelLabelIndices: { 'model1': [1, 2] }, + modelLabelToIdxMap: { + 'model1': { 'kidney': 1, 'lung': 2, 'bone': 3 } + } + }, + viewConstants: { + SeriesInstanceUID: 'defaultSeriesInstanceUID' + } + }; + }); + + it('renders correctly', () => { + const { getByText } = render(); + expect(getByText('Auto-Segmentation')).toBeInTheDocument(); + }); + + it('calls onSelectModel when model is selected', () => { + const { getByText } = render(); + const selectButton = getByText('Select Model'); + fireEvent.click(selectButton); + expect(props.info.models.length).toBeGreaterThan(0); + }); + + it('calls onSegmentation when model is run', async () => { + const { getByText } = render(); + const selectButton = getByText('Select Model'); + fireEvent.click(selectButton); + await waitFor(() => { + expect(props.client().inference).toHaveBeenCalled(); + }); + expect(props.notification.show).toHaveBeenCalledWith(expect.objectContaining({ + title: 'MONAI Service', + message: 'Run Segmentation - Successful', + type: 'success', + })); + }); +}); + diff --git a/plugins/ohif/extensions/monai-service/src/__tests__/monaiServicePanel.test.js b/plugins/ohif/extensions/monai-service/src/__tests__/monaiServicePanel.test.js new file mode 100644 index 0000000..e75819f --- /dev/null +++ b/plugins/ohif/extensions/monai-service/src/__tests__/monaiServicePanel.test.js @@ -0,0 +1,63 @@ +import React from 'react'; +import { MonaiServicePanel } from './MonaiServicePanel'; +import { render, waitFor } from '@testing-library/react'; + +jest.mock('../services/MonaiServiceClient', () => { + return { + MonaiServiceClient: jest.fn().mockImplementation(() => ({ + getAuthorizationHeader: () => ({ Authorization: 'Bearer fake_token' }), + list_models: jest.fn().mockResolvedValue({ + status: 200, + data: [] + }), + cache_image: jest.fn().mockResolvedValue({}) + })) + }; +}); + +const mockNotificationService = { + show: jest.fn(), + hide: jest.fn() +}; + +const mockDisplaySetService = { + activeDisplaySets: [{ + SeriesInstanceUID: '123', + StudyInstanceUID: '456', + instances: [{ + FrameOfReferenceUID: '789' + }], + displaySetInstanceUID: '101112' + }] +}; + +// Test suite +describe('MonaiServicePanel', () => { + it('handles model and dataset information on successful connection', async () => { + const props = { + servicesManager: { + services: { + uiNotificationService: mockNotificationService, + displaySetService: mockDisplaySetService + } + } + }; + + const { container } = render(); + + const instance = container.querySelector('MonaiServicePanel'); + await instance.onInfo(); + + expect(mockNotificationService.show).toHaveBeenCalledWith(expect.objectContaining({ + type: 'info', + message: 'Connecting to MONAI Service' + })); + await waitFor(() => { + expect(mockNotificationService.show).toHaveBeenCalledWith(expect.objectContaining({ + type: 'success', + message: 'Connected to MONAI Service Server - Successful' + })); + }); + expect(instance.state.info.models.length).toBeGreaterThan(0); + }); +}); diff --git a/plugins/ohif/extensions/monai-service/src/components/.DS_Store b/plugins/ohif/extensions/monai-service/src/components/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..633ab33a633b2e9ebe98a89a6501fe663ff0bf65 GIT binary patch literal 6148 zcmeHK%}T>S5T0$TO({YTDjpZS7OX$iikA@U3mDOZN=}Ed5{s4gR#{FG@1^_tN2n8t%gv<+FB^yjA^c)HjNW)1w4C4h8 z{Y4Xfdldq>gA5}0^!+MC&s#W*qcm%^-bJZgSy`<*Rj2OU_z!C0XF)bjyA{tD3jr9|iWI>b+Mmizt4>08VGD`Yt;;C`cPj#+u98S%t^%|SgX=lGFJMCFh zPLK9lP1!y?n9XX=#`ezfS?@7^O4N%XQXuDA)+`qAiprOop8Zi0tK=R%MOG2b$P6$8 z%m6d6Yz)|wz^N}=;ao2>zzqDz0PPPF8=-44H>kG`?CAPT{t6)p>hzW%lonl!xk2=x z2$PCvQiXkD2$PO>Y2#drxj~Z-La&VT*p-XNi_oj1UFvWUu0igZ0cK#HfwCDk==?v$ zUuNMWe?Emr%m6d+&lnJuuHW^rD0{YkE04}viR~5}3B~24prAf?3BUpEBU{>O{E~Ex Yb1miuX%@2UbVR-gXhOJS27ZBo4}J(tN&o-= literal 0 HcmV?d00001 diff --git a/plugins/ohif/jest.config.js b/plugins/ohif/jest.config.js new file mode 100644 index 0000000..6f3d284 --- /dev/null +++ b/plugins/ohif/jest.config.js @@ -0,0 +1,3 @@ +module.exports = { + testEnvironment: 'jest-environment-jsdom' +}; \ No newline at end of file From 42b6dfce0bab9f2e37a54ecde98dbd3769d4ff5f Mon Sep 17 00:00:00 2001 From: yuchengt Date: Tue, 16 Apr 2024 15:48:11 -0700 Subject: [PATCH 2/2] fix DS store Signed-off-by: yuchengt --- .DS_Store | Bin 6148 -> 0 bytes plugins/.DS_Store | Bin 6148 -> 0 bytes plugins/ohif/.DS_Store | Bin 6148 -> 0 bytes plugins/ohif/extensions/.DS_Store | Bin 6148 -> 0 bytes plugins/ohif/extensions/monai-service/.DS_Store | Bin 6148 -> 0 bytes .../ohif/extensions/monai-service/src/.DS_Store | Bin 6148 -> 0 bytes .../monai-service/src/components/.DS_Store | Bin 6148 -> 0 bytes 7 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .DS_Store delete mode 100644 plugins/.DS_Store delete mode 100644 plugins/ohif/.DS_Store delete mode 100644 plugins/ohif/extensions/.DS_Store delete mode 100644 plugins/ohif/extensions/monai-service/.DS_Store delete mode 100644 plugins/ohif/extensions/monai-service/src/.DS_Store delete mode 100644 plugins/ohif/extensions/monai-service/src/components/.DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 09af733c629d4976a145407f832015ec5024e3b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK%}T>S5T3QwrW7FuMUMfm1zV9y@e*o%0V8@)sR=1H7_+5G?4cBL)fe(jd>&_Z zH()j3O~lT??l(I>yO|HNKL8*GdDsQ80l>mWC`hRgGFQ4bOfaEPb3~9p8qCva5LZm} z7ftl-4VXdv!8u?_}9_ z7X70RsmIG@)7m{aJiQn_#!rcS(M$>?UCFk=5?)dHQq;3IOJbQ!&{JlW(TvOhGr$Zm z18c^BIS8!Qn$^waG6T%O&kWH1;9w(k4Hg>J)`1;epUGb*Btf0t5`>OH*I=O$Jt#t_ zBI;COo)|)>qunuauE9d1P6we@#(B)j<>N)D)zR*#a1gFW?wJ8*V3mQI9@=#NpW`o6 z`N&^Q;Sn>y4E!?&M1AND2UwIjTfdb@XRU+n9vcb86{Mh`zH$k`0qrCE%BlSh=@{o4 WEHu(AWLN2kd=XHDaK{Y%0s|k#WlWv` diff --git a/plugins/.DS_Store b/plugins/.DS_Store deleted file mode 100644 index 8f26aa01b006ddc8e44e90f40474dc847c62789b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK%}T>S5Z<-XrW7FuMUM+!3$`Ma;w8lT0!H+pQWH{bFlI}WnnNk%sxRc5_&m<+ zZp32FB6bFLzxmzGevtiPjB#%s^%!#)V>UEIj!KQ7yEe38k`XzM5f<4rOk@c5yNUgE zz;CyhWD^#%hwtAXPLnvxyWJ1I(XckRns(D}+jss%7JeS&^UMooH)vf-nS_-dgjeyn z7&$vY{qQ zT(<1pgTvE{(NprA%2&-N2fCGP8?4|Bl&|Hy__H*T=_B~6{3?%-7$63S0b*c{88C-} z-Cko3Xz9cNF;LF{?hgVQqHD0!sJ0I1@cN8#3lRl$d`ln-gRa3+BSb*BE(O%3+&nS3 zE(gCbd9J}yqb_G$%?#t1nXAVOSF?j(sC33%jnoqZ#K0;84Q)Dj{-47yQ~StYEg_2- zAO`*!1Kb+=Lk|{Z&ek8x!?RXEyN8B?c_k_!ps!p4z`%WEUj=nspbmMi!BQiRf__yF PNEZP`2zA83FEH>4L~TkQ diff --git a/plugins/ohif/.DS_Store b/plugins/ohif/.DS_Store deleted file mode 100644 index 6c169055d8e34d0606b1ea49f5c648a24c131f3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~QA@)x5XUdubge_^gQAZGUk7d?li^FL^9xwf2bH<9p~c#awR6H4^i{u*-^9=3 zU6P7p^T8KEcL$eWlFK#Z-;y){ApCK^3E%*Lg-$HlSS&G$lP_4w^bm!5Mgl2BAc4sC z7Zjj(w*doqh78Lu?=PIB!!VX1#^1tW9Hm*K@h(c`%G!F>s#-PcCb*ZAAnRr0)bEY1 zsC6!792WInco7XIU1#e=CRr~^1|yXa^#?fQ`Z7xTa^lNz(oa=xpaYg|*gitGmu{@|h$J;Pj6Z5>$9?<2)4L^7BP6wf8#^;!sg}I>!H9PjZYB&f_lS@{B6_{6`teXy< z|EJ&I|L2pq#R{+j|4IQ-=>#1gmt@Y?g~icX>!RPHlhL?b^D_l2>L|vsbQJHRE5m-5 WDoD>T*Tfz){t-|zaKQ@vssbO6CQbS5T0$TO(}&Q6g>vKR%}Ho#Y?F51&ruHr6wk5FwK^vKZjDtRbR+A@p+ut z-HN5^!GlPdf!S|%c4n9T5_Wb0Ky=4J3!n}F7Aj$(g3T8~dk%{NgfmNquaR@tgrx9+2y zx+8Bi&bnTDO}z^#V}D_L{$&(S`}M6;nT)(B2~(921tEsqTt!JBr(HQtf=uPQdcdk! zm41C^HfwiU4ZD3jZ`iZWVUx_G`MhFn?;V_+_n+cHBA+#@0)IdyHG>OyLF0!FPTVw! zW%7Vgiy0P~jLZNtzznP{1LnZ9s%yJL-WW5$4E&Y>Iv;FQLdRgPQ5_xF(DjkVON1n7 z(_4bjHs~14HR1@0(5Z+zRhTD+(CO&6O`Kye*QnD$sFiUZv$8NR6rol}zpcVSI2yTS z2AF|m28y~{r}}^P{ri78iF?cdGq6?+h*Hn(b#Y6kwytcBYORfWhe|?mxyFwaG*l_Z fSSrQ4s7laplY!_M%r&A1g)ah%25y*vKV{$@6b?_1 diff --git a/plugins/ohif/extensions/monai-service/.DS_Store b/plugins/ohif/extensions/monai-service/.DS_Store deleted file mode 100644 index 7be67beb34f8b0c5e68f1bcb366888fa89ffa2ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK%Wl&^6upxK>Zl-P0fMC^wgo4sYE`kZLf8Qd3}pc**s)1Xof*p>6ID?pZ{dgd z6TXKtkAOlbON8iL>CU-xU(TFSJRTxq<0c&u4T#8tD(v(z{65g=)rw3%ZM@)0d z=mCACdMDdC{zV4V-rb;*Vw%x8#-IBqh?g>X+SIZ_&NGVW0=p`)zY7ZJlmr#jz|P7U-MP2Son7g6DPxm#z}^U39EymMrTsDMSL#*Q6}+S`LTbSf|^&c74y=^Y*=W z(V19AGL}s}j;l9n_ELx<+1PP%nrF-D;MQZoWt{V@(gk^%A?5AsoTp+r77b5pT^pHz z*Z2C%MpUUhwF}^t@Pb@fkl2!ti&~a?|1lzQC}H z`4m;W5PS~LCVP|R&@tc`xbh6x*Mhfy<(Y51`&ZUQwlVt%w92=DTm*;d7;JDpeZM2FCWZ4nb{i((@#f#U#Alb z4Z6`W;279uplhZBb^brO{QkdP24 l5*Yd@My@)F??Sb}?<)fsT5Ju%192Y$ng%yG2L37o-vRK8c{>0A diff --git a/plugins/ohif/extensions/monai-service/src/.DS_Store b/plugins/ohif/extensions/monai-service/src/.DS_Store deleted file mode 100644 index ec90760dc3b2881eab4d270d60664f9e40697a3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK%}N6?5T4ko+ltVGf5(8=f~`tbyezf8fGc`XS-ZCA;+mB1);%nRJ*p3+Z{qVf zlSHAm^;kqRF!N0^nJn``k{tkG%|WLQPyql3m9SVwGeIa$Iwo^wrijSY9x)^kgAaa? zj;*#6mI2GaZ)1SYZi!ATp4={;-LLZ-_ku_U7<~(RQ5Yw++B=&o6z3NfokeHKx$^F0 z>Lu-D5I5WX3mTnD83mtyJ2(rwsb5(+k|Jq`qT5#qVW*2rF3&^Jk!e#7L?>3co(?!A zr{q`Gv#fDYukyy;u*$Q8?Hake!(qu;-P}4n@$aJtA)hsq3@;uf%LYH;1)T|nJ$ii+ zNpXu&$}GbTNO*uAT7d)zA|Ob=ihrGX@oQPOzf8U9M53pfS&}a_A}EKvjYS5T0$TO({YTDjpZS7OX$iikA@U3mDOZN=}Ed5{s4gR#{FG@1^_tN2n8t%gv<+FB^yjA^c)HjNW)1w4C4h8 z{Y4Xfdldq>gA5}0^!+MC&s#W*qcm%^-bJZgSy`<*Rj2OU_z!C0XF)bjyA{tD3jr9|iWI>b+Mmizt4>08VGD`Yt;;C`cPj#+u98S%t^%|SgX=lGFJMCFh zPLK9lP1!y?n9XX=#`ezfS?@7^O4N%XQXuDA)+`qAiprOop8Zi0tK=R%MOG2b$P6$8 z%m6d6Yz)|wz^N}=;ao2>zzqDz0PPPF8=-44H>kG`?CAPT{t6)p>hzW%lonl!xk2=x z2$PCvQiXkD2$PO>Y2#drxj~Z-La&VT*p-XNi_oj1UFvWUu0igZ0cK#HfwCDk==?v$ zUuNMWe?Emr%m6d+&lnJuuHW^rD0{YkE04}viR~5}3B~24prAf?3BUpEBU{>O{E~Ex Yb1miuX%@2UbVR-gXhOJS27ZBo4}J(tN&o-=