← MacAngioView Download PDF

DICOM Conformance Statement

MacAngioView — DICOM cine viewer for macOS Version 0.4.0b · Document date 2026-07-18 · Document version 2.2 (draft)

Disclaimer. MacAngioView is a beta application for evaluation, review, and educational use only. It is not a certified medical device and is not intended for primary diagnosis or clinical decision-making. This document is structured after DICOM PS3.2 but has not been independently audited.


1. Conformance Statement Overview

MacAngioView is a standalone macOS desktop application that reads DICOM PS3.10 (Part 10) files and DICOMDIR file-sets from local storage or mounted removable media (CD/DVD/USB), and displays X-ray angiographic (XA) cine runs, multiframe/single-frame ultrasound (US) images, and the Encapsulated PDF and Structured Report (SR) documents contained in a study. It can export loaded runs to QuickTime (.mov) movies and copy the displayed frame to the macOS clipboard (both non-DICOM outputs).

MacAngioView implements Media Interchange services only, in the File-Set Reader (FSR) role. It provides no network services of any kind.

Table 1-1. Network Services

Service User of Service (SCU) Provider of Service (SCP)
All DIMSE services (Verification, Storage, Query/Retrieve, Print, Storage Commitment, Worklist, MPPS) No No
DICOMweb (STOW-RS / QIDO-RS / WADO-RS) No No

The application never opens a network association or socket for DICOM purposes; it runs fully offline.

Table 1-2. Media Services

Media Storage Application Profile Write Files (FSC/FSU) Read Files (FSR)
General Purpose CD-R / DVD (STD-GEN-CD, STD-GEN-DVD-JPEG) No Yes
Basic Cardiac X-Ray Angiographic (STD-XABC-CD) No Yes
1024 X-Ray Angiographic (STD-XA1K-CD, STD-XA1K-DVD) No Yes
Ultrasound (STD-US-ID/SC/CC-MF…, CD and DVD media) No Yes

MacAngioView never creates or updates a DICOM file-set and never writes DICOM objects.


2. Introduction

2.1 Revision History

Doc version Date Application version Notes
1.0 (draft) 2026-07-15 0.2.1b Initial statement
1.1 (draft) 2026-07-15 0.2.2b Frame VOI LUT functional group, Pixel Aspect Ratio, lossy compression indication
1.2 (draft) 2026-07-15 0.2.2b Video transfer syntaxes (MPEG2/H.264/HEVC) decoded via bundled ffmpeg
1.3 (draft) 2026-07-16 0.3.0b Structured Report documents rendered as paginated text
1.4 (draft) 2026-07-18 0.3.0b Modality LUT Sequence, VOI LUT Sequence, VOI LUT Function (LINEAR_EXACT/SIGMOID)
1.5 (draft) 2026-07-18 0.3.0b Positioner angles displayed; Person Name ideographic/phonetic groups formatted
1.6 (draft) 2026-07-18 0.3.0b Frame Time Vector variable timing reproduced in playback
1.7 (draft) 2026-07-18 0.3.0b Overlay Planes (60xx) and Display Shutter rendered
1.8 (draft) 2026-07-18 0.3.0b HTJ2K transfer syntaxes decoded (pylibjpeg-openjpeg)
1.9 (draft) 2026-07-18 0.3.0b XA mask subtraction (DSA, AVG_SUB) with View menu toggle
2.0 (draft) 2026-07-18 0.3.0b User-designated DSA mask frame (application feature)
2.1 (draft) 2026-07-18 0.3.0b Mask Sub-pixel Shift applied; user mask re-registration (nudge)
2.2 (draft) 2026-07-18 0.4.0b Release 0.4.0b — revisions 1.4–2.1 ship in this application version

2.2 Audience and Remarks

This document is intended for people integrating or evaluating MacAngioView alongside other DICOM applications (modalities, media creators, PACS export functions). It assumes familiarity with the DICOM standard (PS3.1–PS3.20).

Conformance to this statement does not guarantee interoperability; validation with representative media from the intended source systems is recommended.

2.3 Definitions and Abbreviations

FSR — File-Set Reader. TS — Transfer Syntax. SOP — Service-Object Pair. VOI — Value of Interest. XA — X-Ray Angiography. US — Ultrasound.

2.4 Implementation Identification

Application name MacAngioView
Version 0.4.0b
Platform macOS 12+ (Intel and Apple Silicon via Rosetta 2)
DICOM toolkit pydicom 3.0.2 with python-gdcm 3.2.6, pylibjpeg 2.1 (openjpeg plugin), and Pillow pixel-data decoders

3. Networking

Not applicable. MacAngioView implements no DICOM network application entities, initiates no associations, and accepts none.


4. Media Interchange

4.1 Implementation Model

One local Application Entity, MEDIA-FSR, is activated by the user through the GUI (File ▸ Open File…/Open Folder…, or the equivalent buttons). It reads a file-set or individual files, builds an index of the image and document instances found (metadata only), and then decodes the pixel data of a run on demand when the user selects it. Decoded frames are held in memory only; nothing is written back to the media, which can be ejected from within the application.

4.2 Real-World Activities

4.3 Media Application Profiles — Roles

MacAngioView is a general-purpose FSR: it does not verify that a file-set declares or conforms to a specific application profile. Any file-set whose instances use the SOP classes and transfer syntaxes listed below can be read; this covers the STD-GEN, STD-XABC, STD-XA1K, and STD-US family profiles listed in Table 1-2.

4.4 SOP Classes

Instance selection is content-based, not SOP-Class-restricted: any instance whose pixel data can be decoded is displayed. The SOP classes below are the design targets and the ones exercised in testing.

SOP Class UID Support
X-Ray Angiographic Image Storage 1.2.840.10008.5.1.4.1.1.12.1 Display, cine
Enhanced XA Image Storage 1.2.840.10008.5.1.4.1.1.12.1.1 Display, cine (frame timing from per-frame Frame Content macros)
Ultrasound Image Storage 1.2.840.10008.5.1.4.1.1.6.1 Display (single frame)
Ultrasound Multi-frame Image Storage 1.2.840.10008.5.1.4.1.1.3.1 Display, cine
Encapsulated PDF Storage 1.2.840.10008.5.1.4.1.1.104.1 Rendered per page (also detected by an application/pdf Encapsulated Document when the SOP Class UID is absent)
SR Document Storage family (Basic Text, Enhanced, Comprehensive, …) 1.2.840.10008.5.1.4.1.1.88.* Content tree rendered as read-only paginated text (also detected by Modality SR with a Content Sequence when the SOP Class UID is absent). TEXT/CODE/NUM/PNAME/DATE-TIME/UIDREF items shown; IMAGE/COMPOSITE/WAVEFORM references listed by SOP Instance UID, not resolved
Secondary Capture and other image SOP classes various Best-effort display when pixel data is decodable
Media Storage Directory Storage (DICOMDIR) 1.2.840.10008.1.3.10 Read (Referenced File ID resolution only)

Presentation states (GSPS), key object selections, waveforms, and the dedicated video SOP classes are not interpreted as such — but any image instance whose transfer syntax is a video codec (including US Multi-frame studies exported as MPEG-4) is decoded and played per 4.5. Structured Report documents are rendered as read-only paginated text of their content tree; coded entries are shown by their Code Meaning (coding scheme designators and values are not displayed), and templates are not validated.

4.5 Transfer Syntaxes

Decoding is provided by pydicom with the python-gdcm and Pillow backends; the video transfer syntaxes are decoded by the bundled ffmpeg (imageio-ffmpeg). All decoders ship in the distributed application.

Transfer Syntax UID Read
Implicit VR Little Endian 1.2.840.10008.1.2 Yes
Explicit VR Little Endian 1.2.840.10008.1.2.1 Yes
Deflated Explicit VR Little Endian 1.2.840.10008.1.2.1.99 Yes
Explicit VR Big Endian (retired) 1.2.840.10008.1.2.2 Yes
RLE Lossless 1.2.840.10008.1.2.5 Yes
JPEG Baseline (Process 1) 1.2.840.10008.1.2.4.50 Yes
JPEG Extended (Process 2 & 4) 1.2.840.10008.1.2.4.51 Yes
JPEG Lossless (Process 14) 1.2.840.10008.1.2.4.57 Yes
JPEG Lossless SV1 (Process 14, FOP=1) 1.2.840.10008.1.2.4.70 Yes
JPEG-LS Lossless / Near-Lossless 1.2.840.10008.1.2.4.80 / .81 Yes
JPEG 2000 Lossless / Lossy 1.2.840.10008.1.2.4.90 / .91 Yes
MPEG2, MPEG-4 AVC/H.264 (all profiles) 1.2.840.10008.1.2.4.100–.106 Yes — bundled ffmpeg
HEVC/H.265 1.2.840.10008.1.2.4.107 / .108 Yes — bundled ffmpeg
High-Throughput JPEG 2000 (HTJ2K) 1.2.840.10008.1.2.4.201–.203 Yes — pylibjpeg-openjpeg

Video-transfer-syntax runs are decoded whole into memory as RGB frames (the encapsulated bitstream is reconstructed across fragments), capped at 1000 frames per run; window/level does not apply to them. When the data set carries no frame-rate attribute, the rate reported by the video stream itself is used. An instance in an unsupported transfer syntax is indexed but its thumbnail shows Error and the failure is logged to the in-app Console; it does not block the rest of the study.

4.6 Display Pipeline (Attribute Usage)

4.7 Extensions Beyond Part 10 Reading


5. Support of Character Sets

Data-set text is decoded by pydicom according to Specific Character Set (0008,0005), including ISO-IR 100 (Latin-1) and the other single-byte and multi-byte character sets pydicom supports; decoded text is displayed as Unicode. Person Name values are displayed with component delimiters (^) replaced by spaces (empty components dropped); the ideographic and phonetic component groups (= delimited, PS3.5 6.2.1) follow the first group in parentheses, e.g. "Yamada Tarou (山田 太郎, やまだ たろう)".


6. Security


7. Annexes

7.1 IOD Attribute Usage (informative)

Attributes read for indexing and display include: SOP Class UID, Transfer Syntax UID, Modality, Number of Frames, Rows/Columns, Bits Allocated/Stored, Photometric Interpretation, Pixel Data, the frame-rate attributes listed in 4.6, Window Center/Width, the Frame VOI LUT functional-group macro, Modality LUT Sequence, Rescale Slope/Intercept, VOI LUT Sequence, VOI LUT Function, Pixel Aspect Ratio, Pixel Spacing / Imager Pixel Spacing / Pixel Measures (ratio only), Lossy Image Compression / Method / Ratio, Palette Color LUT attributes, Positioner Primary/Secondary Angle (and the Positioner Position macro), the 60xx Overlay Plane attributes, the Display Shutter attributes, the Mask Subtraction Sequence and Recommended Viewing Mode, Patient Name, Patient ID, Patient Birth Date, Study Date, Study Time, Encapsulated Document, MIME Type of Encapsulated Document, and (DICOMDIR) Referenced File ID.

7.2 Grayscale Rendering (informative)

Grayscale frames are mapped with the DICOM VOI equations (PS3.3 C.11.2.1.2 LINEAR; C.11.2.1.3 LINEAR_EXACT and SIGMOID) over the effective window, or through the data set's VOI LUT table at the default window, then quantized to 8 bits; MONOCHROME1 output polarity is inverted after the VOI stage.