Structured Reporting¶
Starting in pydicom version 1.4, some support for DICOM Structured Reporting (SR) began to be added,
as alpha code; the API for this is subject to change in future pydicom versions. At this point the
code is limited to code dictionaries and one class Code
as a foundational step for future work.
Most access is through a codes
class instance provided in pydicom.sr.codedict
. This can be used
with a dir()
method on a particular scheme designator (‘DCM’ here) or CID (see further below):
>>> from pydicom.sr.codedict import codes
>>> codes.DCM.dir("Modality")
['IncorrectModalityWorklistEntry', 'MixedModality3DCAMModel', 'Modality', 'ModalityToRead', 'OtherModality']
Once a name is known, the Code
instance can be created using that name:
>>> codes.DCM.ModalityToRead
Code(value='128002', scheme_designator='DCM', meaning='Modality to Read', scheme_version=None)
Codes with keywords that start with a number are prefixed with an underscore:
>>> codes.SCT._1SigmaLowerValueOfPopulation
Code(value='371919006', scheme_designator='SCT', meaning='1 Sigma Lower Value of population', scheme_version=None)
Codes can also be accessed by CID:
>>> codes.cid270.Person
Code(value='121006', scheme_designator='DCM', meaning='Person', scheme_version=None)
>>> codes.cid270.dir()
['Device', 'Person']
If the CID number is unknown, it is possible to find it through a CID name dictionary:
>>> from pydicom.sr.codedict import cid_for_name
>>> [name for name in cid_for_name if 'Observ' in name]
['ObservationSubjectClass', 'ObserverType', 'EchoFindingObservationTypes']
>>> cid_for_name['ObserverType']
270
The following Scheme Designators are available in codes
:
SCT, DCM, LN, FMA, MDC, UMLS, BARI, NCIt,
NEU, UCUM, RADLEX, NDC, ITIS_TSN, PUBCHEM_CID, MSH
As noted, these steps do not yet directly provide SR capabilities in pydicom, but provide some access to codes and CIDs in a similar way to DICOM keywords for the DICOM dictionary.