npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@diagnijmegen/rse-grand-challenge-dicom-de-id-procedure

v2025.10.1

Published

De-identification of DICOM is a complex procedure that depends on a number of DICOM standards. The procedures found in this package describe per SOPClassUID and tag what the correct action is. They serve as the basis for the de-identification implementati

Readme

Grand-Challenge DICOM De-Identification Procedure

CI

This repository contains the code that generate the procedure for the Grand-Challenge.org de-identification methods. The procedure describes which action needs to be taken for a DICOM tag in order to be de-identified.

It is based on the DICOM Basic Profile of the Standard DICOM de-identification profile but customized for the use on the Grand-Challenge platform.

More information about de-identification choices can be found in the standard-operation procedure.

Procedure Usage

For JavaScript you can use the ESM + UDM bundles via the npmjs package:

  • https://www.npmjs.com/package/@diagnijmegen/rse-grand-challenge-dicom-deid-procedure

The procedure.json has two lookups: firstly by SOPClassUID and secondly by the data element tag. This results in a "default" action that is to be executed for the data element in question. The action can be any of:

Code | Action ---|--- "D" | replace with a non-zero length value that may be a dummy value and consistent with the VR "Z" | replace with a zero length value, or a non-zero length value that may be a dummy value and consistent with the VR "X" | remove "K" | keep (unchanged for non-Sequence Attributes, cleaned for Sequences) "C" | clean, that is replace with values of similar meaning known not to contain identifying information and consistent with the VR "U" | replace with a non-zero length UID that is internally consistent within a set of Instances "R" | reject the entire DICOM file

For Python you can use the PyPi package: https://pypi.org/project/grand-challenge-dicom-de-id-procedure/

$ pip install grand-challenge-dicom-de-id-procedure

To load the procedure import it as follows:

from grand_challenge_dicom_de_id_procedure import procedure

# Check the version
print(procedure["version"])

# Get an action for tag (0008,0005) of SOPClassUID "1.2.840.10008.5.1.4.1.1.2" (CT image)
action = procedure["sopClass"]["1.2.840.10008.5.1.4.1.1.2"]["tag"]["(0008,0005)"]["default"]

print(action) # "K"

Procedure Building

First, install uv you should then be able to run the any of the following make commands:

$ make base

Which will create the base procedure, see Action logic below for details.

$ make candidate

Which will merge BASE + MANUAL procedures to generate a CANDIDATE procedure. The MANUAL procedure is a hand-crafted action list for each DICOM tag that is unset in the BASE procedure.

$ make worklist

Which will generate a reStructuredText that describes the tags for which no action has been set in the CANDIDATE procedure.

These will need to be addressed before we can generate the final procedure.

$ VERSION="2025.6.0" make final

Finally, above will run all the earlier make targets (i.e. base, candidate, worklist) and then use the CANDIDATE procedure to build the distributable FINAL procedure Including a VERSION, as specified.

Procedure Release

Calling make final with a VERSION also inserts the version in the relevant Python and NPM package configuration. The actual package(s) release is done via GitHub actions. The steps are:

  1. Ensure that main contains the latest version you would like to release
  2. Create and publish a release on GitHub, creating a new tag
    • Versioning dated-semver and follows format YYYY.MM.MINOR, where YYYY is the year MM is the month with no-zero padding and MINOR is the version bump within that month (starting at '0'). For instance 2025.2.0.
  3. GitHub actions to publish the new package(s) automatically starts when a release is published
  4. Once everything is published, the dependency needs to be updated downstream (e.g. in Grand-Challenge)