Skip to content

BEOKS/Web-DICOM-Management

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

730 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Deployment

English.doc

Dicom Service Management Project

DSMP(Dicom Service Management Project) λŠ” DICOM(Digital Imaging and Communications in Medicine) 데이터λ₯Ό μ›Ή 기반 ν”Œλž«νΌμœΌλ‘œ νŽΈλ¦¬ν•˜κ²Œ 닀루기 μœ„ν•œ μ˜€ν”ˆμ†ŒμŠ€ ν”„λ‘œμ νŠΈμž…λ‹ˆλ‹€.

Feature

1. 읡λͺ…ν™”

μ—°κ΅¬μžλ‚˜ κ°œλ°œμžκ°€ DICOM 데이터λ₯Ό 연ꡬ λͺ©μ μœΌλ‘œ 닀루기 μœ„ν•΄μ„œλŠ” DICOM 메타데이터 쀑 ν™˜μžμ˜ κ°œμΈμ •λ³΄(PHI) 뢀뢄을 읡λͺ…ν™” ν•΄μ•Όν•©λ‹ˆλ‹€. ν˜„μž¬ λŒ€λΆ€λΆ„μ˜ 읡λͺ…ν™” μ•Œκ³ λ¦¬μ¦˜μ€ λ‹¨μˆœνžˆ μƒˆλ‘œμš΄ 값을 μƒμ„±ν•˜κ±°λ‚˜ 값을 μ§€μš°λŠ” λ°©μ‹μœΌλ‘œ μ§„ν–‰λ˜κ³  μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ 이런 λ°©λ²•μœΌλ‘  λ°μ΄ν„°μ˜ 연관성이 사라지기 λ•Œλ¬Έμ— 연ꡬ에 어렀움이 μžˆμŠ΅λ‹ˆλ‹€. (예λ₯Ό λ“€μ–΄, 같은 ν™˜μžμ˜ CT DICOM 파일이 읡λͺ…ν™” ν›„ λ‹€λ₯Έ ν™˜μž IDλ₯Ό κ°€μ§€κ²Œ 될 수 μžˆμŠ΅λ‹ˆλ‹€.) 이 ν”„λ‘œμ νŠΈμ—μ„  Patient, Study, Series, Image ID λ“± 연ꡬλ₯Ό μœ„ν•΄ 연관성이 μœ μ§€λ˜μ–΄μ•Όν•˜λŠ” 데이터에 단방ν–₯ ν•΄μ‹± (Bcrypt) μ•Œκ³ λ¦¬μ¦˜μ„ μ‚¬μš©ν•˜μ—¬ 읡λͺ…성을 보μž₯ν•˜λ©° 연관성을 μœ μ§€ν•˜λŠ” 읡λͺ…ν™” 기법을 μ§€μ›ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ, 읡λͺ…ν™” 과정은 데이터가 μ„œλ²„μ— μ „μ†‘λ˜κΈ° μ „ λΈŒλΌμš°μ €μ—μ„œ μ§„ν–‰λ˜λ―€λ‘œ 읡λͺ…ν™”λ˜μ§€ μ•Šμ€ 데이터가 λ„€νŠΈμ›Œν¬μ— 유포될 κ°€λŠ₯성을 μ°¨λ‹¨ν•©λ‹ˆλ‹€.

2. Metadata Relation

의료 연ꡬλ₯Ό μ§„ν–‰ν•˜κΈ° μœ„ν•΄μ„  DICOM 이미지 뿐만 μ•„λ‹ˆλΌ 이와 κ΄€λ ¨λœ 메타 데이터(μ–‘/μ•…μ„±, λ³‘λ³€μ˜ 크기 λ“±)κ°€ ν•„μš”ν•©λ‹ˆλ‹€. CSV ν˜•μ‹μœΌλ‘œ 메타데이터λ₯Ό μ—…λ‘œλ“œ ν•  경우, ν”„λ‘œμ νŠΈλŠ” λ©”νƒ€λ°μ΄ν„°μ˜ ID 뢀뢄을 읽어 기쑴에 μ €μž₯된 DICOM 데이터와 μ—°κ²°ν•˜μ—¬ μ•„λž˜μ™€ 같이 데이터λ₯Ό 확인 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

image

3. More Image Format

μš°λ¦¬λŠ” 의료 연ꡬλ₯Ό 계속 μ§„ν–‰ν•˜λ©°, DICOM 파일 ν˜•μ‹ 뿐만 μ•„λ‹ˆλΌ JPEG, PNG λ“± κ°€κ³΅λœ 데이터 ν˜•μ‹μ΄ ν•„μš”ν•˜λ‹€λŠ” 것을 μ•Œκ²Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ, DICOMκ³Ό JPEG, PNG 파일 ν˜•μ‹ μ—…λ‘œλ“œλ₯Ό λͺ¨λ‘ μ§€μ›ν•˜λ„λ‘ μ—…λ°μ΄νŠΈ ν–ˆμŠ΅λ‹ˆλ‹€. JPEG, PNG 파일 ν˜•μ‹μœΌλ‘œ μ—…λ‘œλ“œλ₯Ό μ§„ν–‰ν•  경우 읡λͺ…ν™” 과정은 μ§„ν–‰λ˜μ§€ μ•ŠμœΌλ©°, νŒŒμΌμ΄λ¦„μ„ νŠΉμ • ID둜 λͺ…λͺ…ν•΄μ•Όν•©λ‹ˆλ‹€. 이 ID λŠ” μΆ”ν›„ μ—…λ‘œλ“œν•  λ©”νƒ€λ°μ΄ν„°μ˜ ID λΆ€λΆ„κ³Ό μ—°κ΄€λ©λ‹ˆλ‹€.

image

4. Project, User Management

DSMPλŠ” μ—¬λŸ¬ 개의 ν”„λ‘œμ νŠΈλ₯Ό μƒμ„±ν•˜κ³  각 ν”„λ‘œμ νŠΈλ§ˆλ‹€ 이미지와 메타데이터λ₯Ό μ €μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ³΄μ•ˆμ„ μœ„ν•΄ 각 ν”„λ‘œμ νŠΈλŠ” μ΄ˆλŒ€λ°›μ€ μ‚¬λžŒλ§Œ μ°Έμ—¬κ°€ κ°€λŠ₯ν•˜λ©°, ν”„λ‘œμ νŠΈ μƒμ„±μžκ°€ μ°Έμ—¬μžλ₯Ό 관리 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

image

5. Data Visualization

연ꡬλ₯Ό μœ„ν•΄μ„  μ—…λ‘œλ“œ 된 데이터가 μ˜¬λ°”λ₯Έμ§€, λΆ„ν¬λŠ” μ–΄λ–€ μ§€ λ“± 데이터λ₯Ό ν•œλˆˆμ— νŒŒμ•…ν•˜κΈ° μœ„ν•΄μ„œ 데이터 μ‹œκ°ν™”κ°€ ν•„μš”ν•©λ‹ˆλ‹€. DSMPλŠ” 메타데이터λ₯Ό 뢄석해 μˆ«μžν˜• λ°μ΄ν„°μ˜ 경우 νžˆμŠ€ν† κ·Έλž¨μ„, μΉ΄ν…Œκ³ λ¦¬ν˜• λ°μ΄ν„°μ˜ 경우 파이차트λ₯Ό μ‹œκ°ν™”ν•˜λŠ” κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€. image

6. Machine Learning Result Visualization

DSMPλŠ” 의료 λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό κ΅¬μΆ•ν•˜κΈ° μœ„ν•œ ν”Œλž«νΌμ΄μ§€λ§Œ, μš°λ¦¬λŠ” 의료 λ°μ΄ν„°λ² μ΄μŠ€ 기반 연ꡬ가 λ¨Έμ‹ λŸ¬λ‹κ³Ό λ°€μ ‘ν•˜κ²Œ 연관이 μžˆλ‹€λŠ” 것을 μ•Œκ²Œ λ˜μ—ˆκ³  이λ₯Ό μ§€μ›ν•˜κΈ° μœ„ν•΄μ„œ Torchserve κ²°κ³Όλ₯Ό μ €μž₯ν•  수 μžˆλŠ” κΈ°λŠ₯을 μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€. λ³„λ„μ˜ Torchserve μ„œλ²„λ₯Ό μ‹€ν–‰μ‹œν‚€κ³  이λ₯Ό DSMP ν”„λ‘œμ νŠΈμ™€ μ—°λ™ν•˜λ©΄, μ•„λž˜μ™€ 같이 μΆ”λ‘  λͺ¨λΈμ„ 선택해 좔둠을 μš”μ²­ν•˜κ³  κ²°κ³Όλ₯Ό λ°μ΄ν„°λ² μ΄μŠ€μ— μ €μž₯ν•©λ‹ˆλ‹€. μžμ„Έν•œ κ΅¬ν˜„μ„ μœ„ν•΄μ„  μ—¬κΈ°λ₯Ό μ°Έκ³ ν•΄μ£Όμ„Έμš”. image image

Usage

Prerequirement

  1. Docker >=20.10.16
  2. OpenJDK>=17.0.1
  3. Node.js>=v16.6.1
  4. yarn>=1.22.19

Install Project

Common

  1. Download
#clone all project with submodules
git clone --recurse-submodules https://github.com/BEOKS/DicomProject.git
cd DicomProject
  1. Configuration DSMP use OAuth2 authentication with Google and Naver, For now, we use Naver as default. You can use other OAuth2 with Spring Security . In spring resources, You can check oauth-sample file. Create application-oauth.yml in same directory that contain client-id and client-secret.

Window

.\install_project.sh

Mac, Linux

sudo sh install_project.sh

Run Project

Window

run_project.sh local # run project for development, localhost:3000μ—μ„œ μ„œλΉ„μŠ€ μ΄μš©κ°€λŠ₯
run_project.sh prod # run project for deploy

Mac, Linux

sudo sh run_project.sh local # run project for development,localhost:3000μ—μ„œ μ„œλΉ„μŠ€ μ΄μš©κ°€λŠ₯
sudo sh run_project.sh prod # run project for deploy

Client page port is 3001 and server port is 8080

Used Framework & Language

λ„μ»€λŠ” μ„€μΉ˜ μ‹œ λ°˜λ³΅λ˜λŠ” ν”„λ‘œλΉ„μ €λ‹κ³Ό 섀정을 λ°©μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 도컀λ₯Ό μ‚¬μš©ν•¨μœΌλ‘œμ¨ Local, Dev, Prod ν™˜κ²½μ—μ„œ λ™μΌν•œ λ™μž‘μ„ 보증할 수 있기 λ•Œλ¬Έμ— 이 ν”„λ‘œμ νŠΈλŠ” 도컀λ₯Ό 기반으둜 μ„€μΉ˜, μ‹€ν–‰λ©λ‹ˆλ‹€. λ©€ν‹° μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ— Docker-composeλ₯Ό μ΄μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

React ν”„λ ˆμž„μ›Œν¬λŠ” μž¬μ‚¬μš©μ„±μ΄ 높은 μ»΄ν¬λ„ŒνŠΈλ₯Ό μƒμ„±ν•˜κΈ° μš©μ΄ν•˜κ³  TypescriptλŠ” νƒ€μž…μ„ λͺ…μ‹œν•¨μœΌλ‘œμ¨ 데이터 ꡬ쑰 차이둜 μΈν•œ 버그 λ°œμƒμ„ μ–΅μ œν•  수 있기 λ•Œλ¬Έμ— λ„μž…ν–ˆμŠ΅λ‹ˆλ‹€. React PropsλŠ” ν”„λ‘œμ νŠΈκ°€ 컀질 수둝 쀑볡증가와 λΆˆν•„μš”ν•  μ»΄ν¬λ„ŒνŠΈ λžœλ”λ§μ΄ λ§Žμ•„μ Έ 이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ Reduxλ₯Ό λ„μž…ν–ˆμŠ΅λ‹ˆλ‹€.

As java running by JVM which guarantee stable software running environment like Auto Optimization and GC, We select java for server system. We use Spring Framework For effective and safe develop in Java development environment. And for testing, we use Junit5 ans Mockito.

Architecture

Basically, We use Monolithic Architecture, because we now aim Fast Implement-Fast Feedback cycle. MSA(Microservice Architecture) is good for scale out, independent development and maintenance. But, it require many management like monitoring, configuration for each MSA component and Troubleshooting etc. If we make feature stable and need to handle scaling out per feature, We will migrate to MSA.

For that, We use SoC(Separation of Concern) design structure. Simply, all code files for same feature need to store in same project of directory. So we hope to migrate to MSA relatively easily.

Author

Jaeseong Lee, lee01042000@gmail.com

Releases

No releases published

Packages

 
 
 

Contributors