# Dorisoy.DICOM **Repository Path**: peakb_admin/Dorisoy.DICOM ## Basic Information - **Project Name**: Dorisoy.DICOM - **Description**: https://github.com/dorisoy/Dorisoy.DICOM - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-10 - **Last Updated**: 2026-10-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Dorisoy DICOM Viewer
## 系统架构
---
## 解决方案组成
### 📁 项目结构
```
Dorisoy.DicomViewer/
├── Dorisoy.DicomViewer.sln # 主解决方案文件
├── src/
│ ├── Dorisoy.DicomViewer/ # WPF 桌面应用程序
│ ├── Dorisoy.DicomViewer.Core/ # 共享核心库
│ └── Dorisoy.PACS.Server/ # Web API 服务器
├── UI/
│ ├── Wpf.Ui/ # WPF UI 控件库
│ ├── Wpf.Ui.Abstractions/ # UI 抽象层
│ └── Wpf.Ui.DependencyInjection/ # 依赖注入扩展
└── Directory.Packages.props # 中央包管理
```
---
## 🖥️ Dorisoy.DicomViewer (桌面应用)
**技术栈**: .NET 8 | WPF | MVVM | Wpf.Ui | fo-dicom
### 功能特性
#### 🖼️ 影像查看
| 功能 | 说明 |
|------|------|
| 多模态支持 | CT、MRI、US、CR、DX 等多种 DICOM 模态 |
| 平滑滚动 | 鼠标滚轮快速浏览图像堆栈 |
| 窗宽窗位 | 左键拖拽交互式调节 |
| 缩放平移 | Ctrl+滚轮缩放,右键拖拽平移 |
| Cine 播放 | 基于 DICOM 元数据的动态电影播放 |
| 多帧支持 | 支持多帧 DICOM 文件播放 |
#### 📏 测量工具
| 工具 | 说明 |
|------|------|
| 距离测量 | 支持像素间距自动计算实际距离 (mm) |
| 角度测量 | 三点定义精确角度测量 |
| ROI 统计 | 感兴趣区域的 HU 值统计分析 |
#### 🌐 PACS 集成
| 功能 | 说明 |
|------|------|
| C-ECHO | DICOM 服务器连接测试 |
| C-FIND | 远程检查查询 |
| C-MOVE | 检查检索下载 |
| C-STORE | 影像上传发送 |
| Web API | RESTful API 影像访问 |
#### 📄 报告与导出
- PNG 图像导出
- PDF 报告生成 (QuestPDF)
- CSV 数据导出
### 目录结构
```
Dorisoy.DicomViewer/
├── Views/ # 视图层
│ ├── MainWindow.xaml # 主窗口
│ ├── PacsQueryWindow.xaml # PACS 查询窗口
│ ├── MprWindow.xaml # MPR 多平面重建窗口
│ ├── DicomTagsWindow.xaml # DICOM 标签查看器
│ └── Pages/ # 导航页面
│ ├── MainPage.xaml # 影像查看主页
│ ├── PatientPage.xaml # 患者管理
│ ├── ReportPage.xaml # 报告管理
│ └── SettingsPage.xaml # 系统设置
├── ViewModels/ # 视图模型 (MVVM)
├── Services/ # 应用服务
│ ├── DicomRenderingService # DICOM 渲染服务
│ ├── MprService # MPR 重建服务
│ ├── PacsApiService # Web API 客户端
│ └── ConfigService # 配置管理
├── Converters/ # 值转换器
├── Helpers/ # 工具类
└── Models/ # 应用模型
```
---
## 🌐 Dorisoy.PACS.Server (Web API)
**技术栈**: .NET 8 | ASP.NET Core | fo-dicom | SixLabors.ImageSharp
### 功能特性
#### 🗃️ 影像索引
- 自动扫描指定目录的 DICOM 文件
- 内存索引快速检索
- 支持实时索引重建
#### 🖥️ REST API
| 模块 | 端点 | 说明 |
|------|------|------|
| **患者** | `GET /api/patients` | 分页查询患者列表 |
| | `GET /api/patients/{id}/studies` | 获取患者检查 |
| **检查** | `GET /api/studies` | 分页查询检查列表 |
| | `GET /api/studies/{uid}` | 获取检查详情 |
| | `GET /api/studies/{uid}/series` | 获取检查系列 |
| **系列** | `GET /api/series/{uid}` | 获取系列详情 |
| | `GET /api/series/{uid}/instances` | 获取系列实例 |
| **WADO** | `GET /api/wado/image/{uid}` | 获取渲染图像 (JPEG) |
| | `GET /api/wado/image/{uid}/png` | 获取渲染图像 (PNG) |
| | `GET /api/wado/thumbnail/{uid}` | 获取缩略图 |
| | `GET /api/wado/dicom/{uid}` | 下载原始 DICOM |
| | `GET /api/wado/metadata/{uid}` | 获取 DICOM 标签 |
| **索引** | `GET /api/index/statistics` | 索引统计信息 |
| | `POST /api/index/rebuild` | 重建索引 |
#### 🖼️ 图像处理
- 窗宽窗位参数支持
- 多帧图像访问
- 自动缩略图生成与缓存
- JPEG/PNG 格式转换
### 目录结构
```
Dorisoy.PACS.Server/
├── Controllers/ # API 控制器
│ ├── PatientsController.cs # 患者 API
│ ├── StudiesController.cs # 检查 API
│ ├── SeriesInstancesController.cs # 系列/实例 API
│ └── WadoController.cs # WADO 图像访问 API
├── Services/ # 业务服务
│ ├── DicomIndexService.cs # DICOM 文件索引服务
│ └── DicomImageService.cs # 图像渲染服务
├── Models/ # 数据模型
├── Program.cs # 应用程序入口
└── appsettings.json # 配置文件
```
### 配置说明
```json
{
"DicomStorage": {
"RootPath": "E:\\Sinol\\3D.Scan\\CBCT\\DataSetes",
"ThumbnailCachePath": "thumbnails",
"ThumbnailSize": 128
}
}
```
---
## 📦 Dorisoy.DicomViewer.Core (核心库)
**技术栈**: .NET 8 | fo-dicom | Dapper | 多数据库支持
### 模块组成
#### Data Models (数据模型)
| 模型 | 说明 |
|------|------|
| `Patient` | 患者信息 |
| `Examination` | 检查记录 |
| `Report` | 诊断报告 |
| `DicomSeries` | DICOM 系列 |
| `DicomFrame` | DICOM 帧数据 |
| `PacsNode` | PACS 节点配置 |
| `QueryResult` | 查询结果 |
#### Services (服务层)
| 服务 | 说明 |
|------|------|
| `DicomLoader` | DICOM 文件加载与解析 |
| `PacsService` | PACS 协议实现 (C-ECHO/FIND/MOVE/STORE) |
| `PatientDbService` | 患者数据管理 |
| `ReportService` | 报告生成与管理 |
#### Repositories (数据访问层)
| 仓储 | 说明 |
|------|------|
| `PatientRepository` | 患者数据 CRUD |
| `ExaminationRepository` | 检查数据 CRUD |
| `ReportRepository` | 报告数据 CRUD |
#### Database (数据库支持)
- **SQLite** - 默认本地存储
- **MySQL** - 生产环境
- **SQL Server** - 企业级部署
---
## 🚀 快速开始
### 环境要求
- [.NET 8 SDK](https://dotnet.microsoft.com/download/dotnet/8.0)
- Windows 10/11 (WPF 应用)
- Visual Studio 2022 或 Rider (推荐)
### 安装与运行
```bash
# 1. 克隆仓库
git clone 