How to Sign DICOM Images with QR Codes Using GroupDocs.Signature for .NET: A Comprehensive Guide

Are you looking for a secure method to authenticate your DICOM files? This detailed guide will show you how to use GroupDocs.Signature for .NET to integrate QR code signatures into DICOM images. Ideal for healthcare professionals, developers, and anyone working with digital medical documents, this tutorial covers setup to implementation.

What You’ll Learn:

  • Setting up your development environment with GroupDocs.Signature for .NET.
  • Step-by-step instructions on signing DICOM images using QR codes.
  • Methods to verify and search for QR code signatures in DICOM files.
  • Techniques to generate previews of signed documents for review purposes.
  • Best practices for optimizing performance and managing resources effectively.

Let’s begin with the prerequisites!

Prerequisites

To use GroupDocs.Signature for .NET, ensure your environment is ready. Here’s what you’ll need:

Required Libraries and Versions

  • GroupDocs.Signature for .NET: Ensure compatibility with your .NET framework.

Environment Setup Requirements

  • A development environment on Windows or Linux.
  • Visual Studio or another .NET-compatible IDE installed.

Knowledge Prerequisites

  • Basic understanding of C# programming.
  • Familiarity with file I/O in .NET applications.

Setting Up GroupDocs.Signature for .NET

Install the GroupDocs.Signature library using your preferred method:

Using .NET CLI:

dotnet add package GroupDocs.Signature

Package Manager:

Install-Package GroupDocs.Signature

NuGet Package Manager UI:

  • Search for “GroupDocs.Signature” and install the latest version.

License Acquisition

Start with a free trial to explore capabilities. For extended use, consider acquiring a temporary or full license from GroupDocs.

Once installed, initialize the library:

using GroupDocs.Signature;
// Initialize Signature object with your DICOM file path.
Signature signature = new Signature("YOUR_DOCUMENT_DIRECTORY\\sample.dicom");

Implementation Guide

Sign DICOM Image with QR Code

Overview

Add QR code signatures to ensure authenticity and traceability of medical documents.

Step 1: Initialize Signature Object

string filePath = "YOUR_DOCUMENT_DIRECTORY\\sample.dicom";
using (Signature signature = new Signature(filePath))
{
    // Proceed with signing operations...
}

Step 2: Create QR Code Sign Options

Configure properties like text, size, and alignment.

QrCodeSignOptions options = new QrCodeSignOptions("Patient #36363393. R: No-Issues")
{
    AllPages = true,
    Width = 100,
    Height = 100,
    VerticalAlignment = VerticalAlignment.Bottom,
    HorizontalAlignment = HorizontalAlignment.Right,
    Margin = new Padding() { Right = 5, Left = 5 }
};

Step 3: Add XMP Metadata

Enhance the document with additional metadata.

DicomSaveOptions dicomSaveOptions = new DicomSaveOptions()
{
    XmpEntries = new List<DicomXmpEntry>() { new DicomXmpEntry(DicomXmpType.PatientName, "Patient #4") }
};

Step 4: Sign the Document

Execute signing and save.

SignResult signResult = signature.Sign("YOUR_OUTPUT_DIRECTORY\\SignedDicom", options, dicomSaveOptions);

Get Document Info

Retrieve metadata from signed DICOM files to ensure data integrity.

Overview: Access document information and XMP metadata signatures for verification.

Step 1: Retrieve Document Information

using (Signature signature = new Signature("YOUR_DOCUMENT_DIRECTORY\\sample_signed.dicom"))
{
    IDocumentInfo signedDocumentInfo = signature.GetDocumentInfo();
}

Step 2: Iterate and Print XMP Data

Display metadata details.

foreach (var item in signedDocumentInfo.MetadataSignatures)
{
    Console.WriteLine(item.ToString());
}

Verify DICOM Signatures

Validate authenticity of QR code signatures within DICOM images.

Overview: Ensure signatures are correct and authentic.

Step 1: Create QR Code Verify Options

Set options matching specific text in the QR codes.

QrCodeVerifyOptions options = new QrCodeVerifyOptions()
{
    AllPages = true,
    Text = "Patient #36363393",
    MatchType = TextMatchType.Contains
};

Step 2: Verify Signatures

Check if signatures meet criteria.

VerificationResult result = signature.Verify(options);

if (result.IsValid)
{
    Console.WriteLine($"DICOM {filePath} has {result.Succeeded.Count} successfully verified signatures!");
}

Search for Signatures in DICOM

Locate QR code signatures within signed DICOM images.

Overview: Efficiently find all QR code signatures to manage document authenticity.

Step 1: Search for QR Code Signatures

List<QrCodeSignature> signatures = signature.Search<QrCodeSignature>(SignatureType.QrCode);

Step 2: Iterate and Print Signature Details

Review each found signature’s details.

foreach (var QrCodeSignature in signatures)
{
    Console.WriteLine($"QRCode signature found at page {QrCodeSignature.PageNumber} with type {QrCodeSignature.EncodeType.TypeName} and text {QrCodeSignature.Text}");
}

Generate Preview of Signed DICOM

Create visual previews for verification.

Overview: Generate image previews to verify content without specialized software.

Step 1: Define Stream Methods

Set up methods for file stream management during preview generation.

Stream CreatePageStream(PreviewPageData pageData)
{
    string imageFilePath = Path.Combine("YOUR_OUTPUT_DIRECTORY", "SignDicomImageAdvanced", $"preview-{pageData.PageNumber}.jpg");
    var folder = Path.GetDirectoryName(imageFilePath);
    if (!Directory.Exists(folder))
    {
        Directory.CreateDirectory(folder);
    }
    return new FileStream(imageFilePath, FileMode.Create);
}

void ReleasePageStream(PreviewPageData pageData, Stream pageStream)
{
    pageStream.Dispose();
}

Step 2: Generate Previews

Execute the preview generation process.

using (Signature signature = new Signature("YOUR_DOCUMENT_DIRECTORY\\sample_signed.dicom"))
{
    PreviewOptions previewOption = new PreviewOptions(CreatePageStream, ReleasePageStream)
    {
        PreviewFormat = PreviewOptions.PreviewFormats.PNG,
    };

    signature.GeneratePreview(previewOption);
}

Practical Applications

  1. Medical Record Management: Authenticate patient records using QR code signatures for compliance.
  2. Audit Trails in Healthcare Systems: Track document changes and verify authenticity with QR codes.
  3. Secure Data Sharing: Ensure secure sharing of medical images by embedding digital signatures.
  4. Compliance Verification: Regularly verify DICOM file integrity to meet legal requirements.
  5. Integration with EHR Systems: Seamlessly integrate signed DICOM files into Electronic Health Records (EHR) systems for streamlined operations.