怎么下载自己的dicom文件(医众)

怎么下载自己的dicom文件(医众)

通过打开自己的云影像云胶片链接,利用浏览器开发者工具(通常按F12打开),切换到“网络”或“Network”标签页,然后刷新页面,可以看到浏览器向服务器请求了很多以 .dcm 结尾的文件。

alt text

这些 .dcm 文件,就是医学影像和相关信息的国际标准格式,全称为Digital Imaging and Communications in Medicine(DICOM)。它不仅仅是一张图片,更像是一个包含图像、患者信息、扫描参数等元数据的“数据包”。

我们可以通过以下几种方法,把这些文件下载到本地:

方法一:浏览器开发者工具手动保存(适合少量文件)

  1. 在开发者工具的网络请求列表中,找到类型为MediaDocument的.dcm文件。
  2. 右键点击该请求,选择“Open in new tab”(在新标签页打开)。
  3. 浏览器会显示该DICOM文件的原始数据流,此时可右键选择“Save as”(另存为),保存到本地。

方法二:使用浏览器插件批量下载(高效便捷)

可以安装一些浏览器插件(如“Chrono Download Manager”等),它们能自动捕获页面加载的所有资源。启用插件后,它可以扫描当前页面加载的所有.dcm文件,并提供一键批量下载功能,非常适合下载包含数百张切片的完整检查数据。

方法三:使用专业下载工具(适合技术用户)

  1. 在开发者工具中,复制任意一个.dcm文件请求的完整URL。
  2. 观察URL结构,通常文件名部分是递增的数字或唯一的ID。
  3. 使用支持批量任务的下载软件(如IDM, JDownloader等),利用“站点抓取”功能,根据URL规律生成任务列表,一次性下载全部文件。

温馨提示

  • 文件查看:下载后的.dcm文件无法直接用普通看图软件打开,需要使用专业的DICOM查看器(如RadiAnt Viewer, microDicom, 3D Slicer等)进行浏览和分析。
  • 隐私保护:DICOM文件包含详细的患者隐私信息,请妥善保管,切勿随意公开分享。

下载自己的云影像云胶片dicom数据

告别物理胶片:手把手教你下载自己的云影像(DICOM)数据

在数字化医疗时代,传统的厚重X光胶片正逐渐成为历史。现在,医院通过“云影像”(也称云胶片)技术,将你的CT、MRI等检查资料上传至云端。这不仅环保,更方便你在异地就医或寻求第二诊疗意见时随时调阅。

但是,很多患者朋友拿到报告单后,面对二维码和手机界面往往不知所措:“我到底怎么把原始的、医生能用的DICOM数据下载到手机或电脑里?”

别担心,本文将为你详细拆解获取这些关键医疗数据的步骤。

第一步:找到入口

获取云影像通常有两个最常见的入口,你可以根据手头的资料选择:

  1. 扫描报告单二维码:这是最直接的方式。在你的纸质检查报告单右上角(或显眼位置),通常印有一个二维码。使用微信或浏览器扫描它,即可跳转到查看页面。
  2. 关注医院公众号:搜索并关注你进行检查的医院官方微信服务号(例如“XX医院服务中心”)。在菜单栏的“医疗服务”、“检查报告”或“云影像”板块中,输入你的登记号(或就诊卡号)、手机号及验证码登录,即可找到历史检查记录。

第二步:下载数据

进入影像浏览界面后,你会发现界面上通常有两种“下载”选项,请务必区分它们,因为用途完全不同:

  • 下载报告(图片格式):这通常是PDF或JPEG格式。它只是最终的诊断结论,不包含原始的、可调节参数的影像信息,对于需要看片的医生来说价值有限。
  • 下载DICOM(原始数据):这才是你需要的核心文件。DICOM是医学影像的国际标准格式,包含了所有的切片信息、分辨率参数等。

如何操作下载DICOM:

  1. 在影像查看界面,寻找右上角或侧边栏的**“下载”“导出”“更多”**按钮。
  2. 点击后,系统通常会弹出格式选择框。请务必选择**“DICOM格式”**(有时也标注为“原始数据”)。
  3. 注意:如果文件较大(超过500M),手机端可能会提示下载失败或不支持。此时,建议使用电脑端下载。你可以复制页面上的链接,在电脑浏览器(推荐Chrome或360浏览器)中打开,按照提示进行下载。

第三步:存储与分享

下载完成后,文件通常是一个压缩包(.zip)或一系列.dcm文件。你可以将其解压并保存在U盘、移动硬盘或云端网盘中。

当你需要给异地的专家看诊,或者转诊到其他医院时,只需将这个U盘交给医生,或者通过加密渠道发送给对方。现在的医生工作站都能直接读取这些数据,进行三维重建(3D)或调节窗宽窗位,这比看纸质胶片要清晰得多。

温馨提示

  • 时效性:云影像通常会在云端保留较长时间(如半年至两年),但建议你尽早下载并本地备份,以免云端链接过期导致数据被清理。
  • 软件兼容:如果你需要在自己的电脑上查看DICOM文件,可以安装免费的阅片软件,如“RadiAnt DICOM Viewer”或医院提供的专用浏览客户端。

掌握这些技巧,你就掌握了自己医疗数据的主动权。下次检查时,不妨试着把这套流程走一遍,让看病就医不再因“带不走”的胶片而烦恼。

指导协助下载请加微信 alt text

WPF 鼠标轨迹追踪软件 WpfMouseTrace 开源

项目链接 下载链接

WPF 鼠标轨迹追踪项目技术说明

项目概述

这是一个基于 WPF (Windows Presentation Foundation) 开发的鼠标轨迹追踪工具,能够在屏幕上实时显示鼠标移动的轨迹效果。项目采用了多种技术优化,实现了高性能的图形渲染和用户友好的配置界面。

核心功能

1. 实时鼠标轨迹显示

  • 通过 Win32 API 获取全局鼠标位置
  • 使用自定义 Canvas 控件进行高性能渲染
  • 支持线条绘制,轨迹平滑过渡
  • 渐变透明度和粗细效果

2. 系统托盘集成

  • 托盘图标显示
  • 右键菜单(设置、退出)
  • 双击图标打开设置

3. 可配置化

  • 最大轨迹数量可调(5-100)
  • 轨迹颜色自定义
  • 配置持久化保存

alt text

alt text

技术架构

1. 主窗口 (MainWindow)

1.1 Win32 API 集成

[DllImport("user32.dll")]
public static extern bool GetCursorPos(out POINT lpPoint);

[DllImport("user32.dll")]
public static extern IntPtr GetWindowLong(IntPtr hWnd, int nIndex);

[DllImport("user32.dll")]
public static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);

使用 P/Invoke 调用 Windows API:

  • GetCursorPos: 获取全局鼠标坐标
  • GetWindowLong / SetWindowLong: 修改窗口样式

1.2 鼠标穿透功能

private const int GWL_EXSTYLE = -20;
private const int WS_EX_TRANSPARENT = 0x00000020;

SetWindowLong(hwnd, GWL_EXSTYLE,
    ((int)GetWindowLong(hwnd, GWL_EXSTYLE) | WS_EX_TRANSPARENT));

通过设置 WS_EX_TRANSPARENT 标志,使窗口对鼠标事件透明,实现点击穿透效果,不影响底层窗口的操作。

1.3 定时器机制

_timer = new DispatcherTimer();
_timer.Interval = TimeSpan.FromMilliseconds(33);
_timer.Tick += OnTimerTick;
_timer.Start();

使用 33ms 间隔(约 30fps)的定时器:

  • 平衡性能和视觉效果
  • 降低内存占用
  • 减少垃圾回收压力

1.4 坐标转换

var point = PointFromScreen(new System.Windows.Point(pt.X, pt.Y));

将屏幕坐标(像素)转换为窗口内的设备无关像素(DIP),确保在不同 DPI 设置下正确显示。

2. 自定义绘制控件 (TrailCanvas)

2.1 继承 Canvas

public class TrailCanvas : Canvas
{
    protected override void OnRender(DrawingContext drawingContext)
    {
    }
}

重写 OnRender 方法实现自定义绘制逻辑。

2.2 轨迹点管理

public Queue<Point> TrailPoints { get; set; } = new Queue<Point>();
private Point[] _pointsCache = new Point[MaxTrailLength];
  • 使用 Queue<Point> 存储轨迹点
  • 使用缓存数组避免频繁内存分配
  • 动态调整缓存大小

2.3 渲染逻辑

for (int i = 0; i < count - 1; i++)
{
    double alpha = (i / (double)count);
    byte alphaByte = (byte)(alpha * 200);
    
    var brush = new SolidColorBrush(Color.FromArgb(alphaByte, TrailColorR, TrailColorG, TrailColorB));
    double thickness = 8 * alpha + 2;
    var pen = new Pen(brush, thickness);
    drawingContext.DrawLine(pen, _pointsCache[i], _pointsCache[i + 1]);
}
  • 渐变透明度:旧轨迹点更透明
  • 渐变粗细:新轨迹点更粗
  • 使用 DrawLine 绘制连续线条

3. 设置管理 (Settings)

3.1 单例模式

private static Settings _instance;

public static Settings Instance
{
    get
    {
        if (_instance == null)
        {
            _instance = Load();
        }
        return _instance;
    }
}

确保全局唯一的设置实例。

3.2 数据持久化

[DataContract]
public class Settings : INotifyPropertyChanged
{
    [DataMember]
    public int MaxTrailLength { get; set; }
    
    public void Save()
    {
        var serializer = new DataContractJsonSerializer(typeof(Settings));
        using (var stream = new FileStream(SettingsFilePath, FileMode.Create))
        {
            serializer.WriteObject(stream, this);
        }
    }
}
  • 使用 DataContractJsonSerializer 序列化配置
  • 保存到 %AppData%\WpfMouseTrace\settings.json
  • 实现 INotifyPropertyChanged 支持数据绑定

3.3 属性变更通知

public event PropertyChangedEventHandler PropertyChanged;

protected void OnPropertyChanged(string propertyName)
{
    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}

支持 WPF 数据绑定,实现 UI 自动更新。

4. 系统托盘 (NotifyIcon)

4.1 图标加载

var iconStream = System.Windows.Application.GetResourceStream(
    new Uri("pack://application:,,,/Resources/favicon(1).ico"))?.Stream;

_notifyIcon = new NotifyIcon
{
    Icon = iconStream != null ? new System.Drawing.Icon(iconStream) : SystemIcons.Application,
    Text = "鼠标轨迹追踪",
    Visible = true
};

从程序资源加载图标,使用 WPF Pack URI。

4.2 右键菜单

var contextMenu = new ContextMenuStrip();
var settingsItem = new ToolStripMenuItem("设置");
settingsItem.Click += (s, e) => OpenSettings();

var exitItem = new ToolStripMenuItem("退出");
exitItem.Click += (s, e) => ExitApplication();

contextMenu.Items.AddRange(new ToolStripItem[] { settingsItem, exitItem });
_notifyIcon.ContextMenuStrip = contextMenu;

使用 Windows Forms 的 ContextMenuStrip 创建托盘菜单。

5. 颜色选择器集成

private void ColorPreviewBorder_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
    var colorDialog = new ColorDialog
    {
        Color = System.Drawing.Color.FromArgb(
            _settings.TrailColorR,
            _settings.TrailColorG,
            _settings.TrailColorB),
        FullOpen = true
    };

    var result = Dispatcher.Invoke(() => colorDialog.ShowDialog());
    
    if (result == System.Windows.Forms.DialogResult.OK)
    {
        _settings.TrailColorR = colorDialog.Color.R;
        _settings.TrailColorG = colorDialog.Color.G;
        _settings.TrailColorB = colorDialog.Color.B;
    }
}
  • 使用 ColorDialog 提供系统颜色选择器
  • 通过 Dispatcher.Invoke 确保在主线程显示
  • 自动更新设置属性

性能优化

1. 内存优化

1.1 对象缓存

private Point[] _pointsCache = new Point[MaxTrailLength];

避免每次渲染都创建新数组,减少 GC 压力。

1.2 降低刷新率

_timer.Interval = TimeSpan.FromMilliseconds(33); // 30fps

从 60fps 降到 30fps,减少内存分配频率。

1.3 资源释放

protected override void OnClosing(CancelEventArgs e)
{
    _notifyIcon?.Dispose();
    base.OnClosing(e);
}

及时释放托盘图标资源。

2. 渲染优化

2.1 使用 DrawingContext

protected override void OnRender(DrawingContext drawingContext)
{
    drawingContext.DrawLine(pen, _pointsCache[i], _pointsCache[i + 1]);
}

直接使用 DrawingContext 绘制,避免创建大量 UI 元素。

2.2 最小化重绘

TrailCanvas.InvalidateVisual();

只在数据变化时触发重绘,避免不必要的渲染。

技术亮点

1. WPF 与 WinForms 混合使用

  • WPF 用于主界面和渲染
  • WinForms 用于托盘图标和颜色选择器
  • 通过互操作实现无缝集成

2. P/Invoke 调用 Windows API

  • 获取全局鼠标位置
  • 修改窗口样式实现鼠标穿透
  • 跨平台能力(仅限 Windows)

3. 数据绑定

  • 设置属性实现 INotifyPropertyChanged
  • XAML 中使用 Binding 自动更新 UI
  • 简化代码逻辑

4. 资源管理

  • 图标作为资源嵌入程序集
  • 使用 Pack URI 引用资源
  • 统一的资源管理方式

项目结构

WpfMouseTrace/
├── WpfMouseTrace/
│   ├── MainWindow.xaml          # 主窗口界面
│   ├── MainWindow.xaml.cs       # 主窗口逻辑
│   ├── TrailCanvas.cs          # 自定义绘制控件
│   ├── SettingsWindow.xaml      # 设置窗口界面
│   ├── SettingsWindow.xaml.cs   # 设置窗口逻辑
│   ├── Settings.cs            # 设置管理类
│   ├── App.xaml              # 应用程序入口
│   ├── App.xaml.cs           # 应用程序初始化
│   ├── WpfMouseTrace.csproj # 项目文件
│   └── Resources/
│       └── favicon(1).ico   # 应用图标

依赖项

.NET Framework

  • 目标框架:.NET Framework 4.5.2

程序集引用

  • PresentationCore
  • PresentationFramework
  • WindowsBase
  • System.Xaml
  • System.Drawing
  • System.Windows.Forms

扩展性

1. 添加新的轨迹效果

可以扩展 TrailCanvas 类,支持不同的渲染模式:

  • 圆点模式
  • 虚线模式
  • 粒子效果

2. 添加更多设置项

Settings 类中添加新属性:

  • 轨迹粗细范围
  • 淡出速度
  • 启用/禁用功能

3. 多主题支持

扩展设置系统,支持:

  • 预设主题
  • 导入/导出配置
  • 主题切换

总结

本项目展示了 WPF 开发的多个核心技术:

  • 自定义控件和渲染
  • Win32 API 集成
  • 数据绑定和 MVVM 模式
  • 性能优化技巧
  • 混合使用 WPF 和 WinForms

通过合理的架构设计和性能优化,实现了一个功能完整、性能良好的鼠标轨迹追踪工具。

云影像、云胶片 DICOM 下载指南

什么是云影像和云胶片

云影像和云胶片是现代医疗影像服务的重要组成部分。随着医疗信息化的发展,传统的胶片正在逐步被数字化影像所替代。

云影像

云影像是指将医学影像数据存储在云端服务器上,患者和医生可以通过互联网随时随地访问和查看这些影像资料。这种方式具有以下优势:

  • 便捷性:无需携带实体胶片,通过手机或电脑即可查看
  • 安全性:云端存储提供多重备份,数据不易丢失
  • 共享性:方便不同医疗机构之间的影像资料共享
  • 环保性:减少胶片使用,降低环境污染

云胶片

云胶片是传统胶片的数字化替代品,通常以 DICOM 格式存储。它不仅包含了影像数据,还包含了患者的相关信息、检查参数等完整信息。

DICOM 格式简介

DICOM(Digital Imaging and Communications in Medicine)是医学影像领域的国际标准格式。它具有以下特点:

  • 标准化的医学影像存储格式
  • 包含丰富的元数据信息
  • 支持多种医学影像类型(CT、MRI、X光等)
  • 便于不同医疗系统之间的数据交换

云影像 DICOM 下载方法

方法一:通过医院提供的云平台下载

大多数医院都会提供专门的云影像平台,患者可以通过以下步骤下载 DICOM 文件:

  1. 登录平台:使用医院提供的账号和密码登录云影像平台
  2. 查找检查记录:在个人中心或检查记录中找到需要下载的影像
  3. 选择下载格式:通常提供 DICOM 原始文件和压缩包两种格式
  4. 执行下载:点击下载按钮,等待文件下载完成

方法二:通过第三方医学影像查看器下载

一些第三方医学影像软件也支持从云平台下载 DICOM 文件:

  • RadiAnt DICOM Viewer:支持从 PACS 服务器下载影像
  • Horos:开源的医学影像查看器,支持多种数据源
  • Weasis:基于 Web 的医学影像查看器

方法三:使用 API 接口下载

对于开发者,可以通过医院的 API 接口获取 DICOM 数据:

import requests

def download_dicom(api_url, access_token, study_id, save_path):
    headers = {
        'Authorization': f'Bearer {access_token}',
        'Content-Type': 'application/json'
    }
    
    params = {
        'studyId': study_id,
        'format': 'dicom'
    }
    
    response = requests.get(api_url, headers=headers, params=params)
    
    if response.status_code == 200:
        with open(save_path, 'wb') as f:
            f.write(response.content)
        print('DICOM 文件下载成功')
    else:
        print(f'下载失败: {response.status_code}')

# 使用示例
download_dicom(
    api_url='https://api.hospital.com/v1/studies/download',
    access_token='your_access_token',
    study_id='ST123456',
    save_path='medical_image.dcm'
)

DICOM 文件查看工具

下载 DICOM 文件后,需要使用专门的医学影像查看器来打开:

桌面端查看器

  1. RadiAnt DICOM Viewer(Windows)

    • 界面友好,操作简单
    • 支持多种影像处理功能
    • 免费试用,付费版功能更全
  2. Horos(macOS)

    • 完全免费开源
    • 功能强大,支持高级影像分析
    • 适合医学专业人士使用
  3. 3D Slicer(跨平台)

    • 支持三维重建
    • 适合科研和教学使用
    • 功能最为全面

移动端查看器

  1. RadiAnt Mobile(iOS/Android)
  2. DICOM Viewer(Android)
  3. Miele-LXIV(iOS)

注意事项

数据安全

  • 保护好登录凭证,避免账号被盗用
  • 下载后的 DICOM 文件应妥善保管,避免泄露患者隐私
  • 不要在公共网络环境下下载敏感医疗数据

文件管理

  • DICOM 文件通常较大,下载前确保有足够的存储空间
  • 建议按检查日期和类型对文件进行分类存储
  • 定期备份重要的医学影像数据

兼容性问题

  • 不同厂商的 DICOM 文件可能存在细微差异
  • 确保使用的查看器支持对应的 DICOM 版本
  • 遇到无法打开的文件时,联系医院技术支持

常见问题

Q1: 为什么下载的 DICOM 文件无法打开?

A: 可能的原因包括:

  • 文件下载不完整,尝试重新下载
  • 查看器版本过旧,更新到最新版本
  • 文件格式不兼容,尝试使用其他查看器

Q2: DICOM 文件能否转换为普通图片格式?

A: 可以。大多数医学影像查看器都支持将 DICOM 文件导出为 JPG、PNG 等常见图片格式。但需要注意,转换后的图片会丢失部分医学信息,仅用于查看,不能用于诊断。

Q3: 云影像数据保存多久?

A: 不同医院的政策不同,一般保存 3-15 年不等。建议及时下载重要的影像资料到本地保存。

Q4: 下载 DICOM 文件需要付费吗?

A: 大多数医院提供免费的云影像下载服务,但部分医院可能会对超过一定时间或次数的下载收取费用。具体请咨询医院相关部门。

总结

云影像和云胶片为患者和医生提供了便捷的医学影像访问方式。通过掌握 DICOM 文件的下载方法,患者可以更好地管理自己的健康档案,医生也能更高效地进行远程会诊和诊断。在使用过程中,要注意数据安全和隐私保护,合理利用这些数字化医疗资源。