직접 만든 dicom-studio를 C#·ASP.NET Core·Oracle·도커로 다시 만든 학습 마이그레이션
담당 — 개인 학습 프로젝트 — 설계·개발·서버·패키징 전 과정
sh-ip-scanner로 C# 문법을 익힌 다음 단계로, 실무 규모의 앱을 C# 생태계 전체(데스크톱 MVVM → 웹 API → Oracle → 컨테이너 배포)로 관통하며 배우기 위한 마이그레이션 프로젝트입니다. 교재는 직접 만들었던 dicom-studio(Electron) — 기능 명세를 이미 알고 있으니 언어·스택 학습에만 집중할 수 있습니다.
1차 오프라인 완결(이미지 → DICOM 변환·뷰어·SQLite 검색)에서 시작해 2차 서버(ASP.NET Core 8 + Oracle, 도커), 3차 PACS 전송(C-ECHO/C-STORE, Orthanc 동봉), 4차 Worklist(예약 접수)까지 완주해 v1.0으로 승격했습니다. 학습 과정은 12강짜리 'JAVA 개발자를 위한 C# & ASP.NET 실전 입문' 교재 PDF로 정리해 릴리스에 함께 공개했습니다.
스크린샷의 환자·검사 정보는 전부 가상 값입니다 — 검사지 이미지의 식별정보(ID·이름)도 예시 값으로 마스킹했습니다. 아래 인스톨러로 설치해 직접 사용해볼 수 있습니다 (자체포함 빌드라 .NET 런타임 설치 불필요, 코드 서명이 없어 SmartScreen 경고가 뜰 수 있습니다). 서버 기능(로그인·Worklist·PACS 전송)은 저장소의 docker compose로 로컬에서 재현할 수 있고, 서버 없이도 오프라인으로 모든 변환·조회 기능이 동작합니다.
실제 운영/실행 화면을 직접 캡처했습니다.
1 / 8sh-ip-scanner로 C# 문법과 Avalonia MVVM을 익힌 뒤, 다음 단계로 실무 규모의 앱 하나를 C# 생태계 전체로 관통하고 싶었습니다 — 데스크톱(MVVM)에서 시작해 웹 API(ASP.NET Core), 상용 DB(Oracle), 컨테이너 배포(docker compose)까지. 교재는 직접 만들었던 dicom-studio(Electron)를 골랐습니다. 도메인과 기능 명세를 이미 알고 있는 앱을 다시 만들면, 문제 정의에 쓸 에너지를 아껴 언어·스택 학습에만 집중할 수 있기 때문입니다.
마일스톤을 4차로 나눠 완주했습니다 — 1차 오프라인 완결(이미지 열기 → 뷰어 → DICOM 변환 → SQLite 검색), 2차 서버(ASP.NET Core 8 + Oracle 로그인·검사 메타 동기화), 3차 PACS 전송(C-ECHO/C-STORE, Orthanc 도커 동봉), 4차 Worklist(서버 예약 접수 → 선택 시 환자정보 자동 입력). 뷰어 오버레이·워크리스트 UI는 실무에서 쓰는 PACS 프로그램(PACSPLUS·PPW)의 화면을 참고해 다듬었고, 사용자(본인)의 1.0 선언으로 v1.0.x로 승격했습니다.
학습 과정 자체도 산출물로 남겼습니다 — 이 앱의 실제 코드를 예제로 쓴 12강짜리 교재 'JAVA 개발자를 위한 C# & ASP.NET Core 실전 입문' PDF를 Claude Code와 함께 만들어 릴리스에 함께 공개했습니다 (프로퍼티·record·LINQ·async/await부터 Minimal API·DI·JWT·ADO.NET·도커 배포까지).