Class JSONRepresentationOfStructuredReportObjectFactory
A class to encode a representation of a DICOM Structured Report object in a JSON form, suitable for analysis as human-readable text.
Note that JSON representations can either contain only the content tree, or also the additional
top level DICOM attributes other than those that encode the content tree, as individual
DICOM attributes, in the manner of JSONRepresentationOfDicomObjectFactory
.
A typical example of usage to extract just the content tree would be:
try { AttributeList list = new AttributeList(); list.read("dicomsrfile",null,true,true); StructuredReport sr = new StructuredReport(list); JsonArray document = new JSONRepresentationOfStructuredReportObjectFactory().getDocument(sr); JSONRepresentationOfStructuredReportObjectFactory.write(System.out,document); } catch (Exception e) { slf4jlogger.error("",e); }
or to include the top level attributes as well as the content tree, supply the attribute list as well as the parsed SR content to the write() method:
try { AttributeList list = new AttributeList(); list.read("dicomsrfile",null,true,true); StructuredReport sr = new StructuredReport(list); JsonArray document = new JSONRepresentationOfStructuredReportObjectFactory().getDocument(sr,list); JSONRepresentationOfStructuredReportObjectFactory.write(System.out,document); } catch (Exception e) { slf4jlogger.error("",e); }
or even simpler, if there is no further use for the JSON document or the SR tree model:
try { AttributeList list = new AttributeList(); list.read("dicomsrfile",null,true,true); JSONRepresentationOfStructuredReportObjectFactory.createDocumentAndWriteIt(list,System.out); } catch (Exception e) { slf4jlogger.error("",e); }
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected Map
<String, CodedSequenceItem> protected static String
protected static boolean
protected static boolean
protected static boolean
protected ContentItemFactory
protected Map
<ContentItem, String> protected static boolean
protected static String
protected static String
protected static String
protected static String
protected static String
protected static String
protected static String
protected static String
protected static String
protected static String
protected static String
protected static String
protected static String
protected static String
protected static String
protected static String
protected static String
protected static String
protected static String
protected static String
protected static String
protected static String
protected static String
protected static String
protected static String
protected static String
protected static String
protected static String
protected static String
protected static String
protected static String
protected static String
protected static String
protected static String
protected static String
protected static String
protected static String
protected static String
protected static String
protected static String
protected static String
protected static String
protected static String
protected static String
protected static String
protected static String
protected int
protected static String
protected static boolean
protected static String
protected static boolean
-
Constructor Summary
ConstructorsConstructorDescriptionConstruct a factory object, which can be used to get JSON documents from DICOM objects. -
Method Summary
Modifier and TypeMethodDescriptionprotected void
addCodedSequenceItemPropertyFromBusinessName
(javax.json.JsonObject businessNamePayload, AttributeList csilist, AttributeTag tag, String reservedKeywordInBusinessNamesFile) static void
createDocumentAndWriteIt
(AttributeList list, OutputStream out) Serialize a JSON document created from a DICOM Structured Report.static void
createDocumentAndWriteIt
(StructuredReport sr, AttributeList list, File outputFile) Serialize a JSON document created from a DICOM attribute list.static void
createDocumentAndWriteIt
(StructuredReport sr, AttributeList list, OutputStream out) Serialize a JSON document created from a DICOM attribute list.static void
createDocumentAndWriteIt
(StructuredReport sr, AttributeList list, String outputPath) Serialize a JSON document created from a DICOM attribute list.static void
Serialize a JSON document created from a DICOM Structured Report.protected String
determineUnknownRelationshipType
(String parentValueType, String childValueType, javax.json.JsonValue childObjectValue) protected String
determineUnknownValueType
(String parentValueType, javax.json.JsonValue childObjectValue) getAttributeList
(File file) Given a DICOM SR object encoded as a JSON document in a file convert it to a list of attributes.getAttributeList
(InputStream stream) Given a DICOM SR object encoded as a JSON document in a stream convert it to a list of attributes.getAttributeList
(String name) Given a DICOM SR object encoded as a JSON document in a named file convert it to a list of attributes.getAttributeList
(javax.json.JsonArray document) Given a DICOM SR object encoded as a JSON document convert it to a list of attributes.getAttributeList
(javax.json.JsonObject topLevelObject) Given a DICOM SR object encoded in a JSON document convert it to a list of attributes.javax.json.JsonArray
getCodedSequenceItemForBusinessName
(String businessName, String location, boolean roleIsAsConceptName) getCodedSequenceItemForBusinessNameUsedAsConceptName
(String businessName, String location) getCodedSequenceItemForBusinessNameUsedAsUnits
(String businessName, String location) getCodedSequenceItemForBusinessNameUsedAsValue
(String businessName, String location) protected ContentItem
getContentItemAndChildrenFromJSONObjectValue
(String businessName, CodedSequenceItem concept, String valueType, String relationshipType, javax.json.JsonValue contentItemValue, String location) protected javax.json.JsonObject
getContentItemAttributesObject
(javax.json.JsonArray contentItemAttributesAndChildrenArray) javax.json.JsonArray
getDocument
(AttributeList list) Given a DICOM attribute list encoding a Structured Report, get a JSON document.javax.json.JsonArray
Given a DICOM Structured Report, get a JSON document of the content tree only.javax.json.JsonArray
getDocument
(StructuredReport sr, AttributeList list) Given a DICOM Structured Report, get a JSON document of the content tree and the top level DICOM elements.javax.json.JsonArray
getDocument
(File file) Given a DICOM object encoded as a list of attributes, get a JSON document.javax.json.JsonArray
getDocument
(String filename) Given a DICOM object encoded as a list of attributes, get a JSON document.protected String
getSingleStringValueOrNullFromJsonContentItemValue
(javax.json.JsonValue entry, String valueType, CodedSequenceItem concept) protected String
getSingleStringValueOrNullFromJsonStringOrNumberContentItemValue
(javax.json.JsonValue entry, String valueType, CodedSequenceItem concept) protected String
getStringFromSelectedContentItemValue
(javax.json.JsonArray contentItemValues, int which, String what, String valueType, CodedSequenceItem concept) getStructuredReport
(javax.json.JsonArray document) Given a DICOM SR object encoded as a JSON document convert it to a StructuredReport using the content tree and ignoring any header attributes.getStructuredReport
(javax.json.JsonObject topLevelObject) Given a DICOM SR object encoded in a JSON document convert it to a StructuredReport using the content tree and ignoring any header attributes.protected boolean
haveChildrenForSingleStringOrCodeJsonContentItemValue
(javax.json.JsonValue contentItemValue, javax.json.JsonObject contentItemAttributesObject) protected boolean
isCommonAnnotationAttribute
(String attributeName) void
Load the business names encoded in a JSON document.void
loadBusinessNamesDocument
(InputStream stream) Load the business names encoded in a JSON document.void
Load the business names encoded in a JSON document.void
loadBusinessNamesDocument
(javax.json.JsonArray document) Load the business names encoded in a JSON document.static void
Read a DICOM dataset (that contains a structured report) and write a JSON representation of it to the standard output or specified path, or vice versa.static String
makeBusinessNameFromCodeMeaning
(CodedSequenceItem conceptName) static String
makeBusinessNameFromCodeMeaning
(String codeMeaning, boolean upperCamelCase) protected String
selectFromAlternativeRelationshipTypesForBusinessName
(String childLocation, String childBusinessName, String parentValueType, String childValueType, Set<String> childRelationshipTypes) protected String
selectFromAlternativeValueTypesForBusinessName
(String childLocation, String childBusinessName, String parentValueType, Set<String> childValueTypes, javax.json.JsonValue childObjectValue) protected static String
selectTheOtherOfTwoStringsInSet
(String method, String location, Set<String> theSet, String doNotWant) protected void
walkTreeBuildingSimplifiedLabelsForReferencedContentItemIdentifiers
(ContentItem node, String location) Walk the tree starting at the specified node.static void
Serialize a JSON document.static void
write
(OutputStream out, javax.json.JsonArray document) Serialize a JSON document.static void
Serialize a JSON document.
-
Field Details
-
elideSeparateContinuityOfContent
protected static boolean elideSeparateContinuityOfContent -
collapseAttributeValueArrays
protected static boolean collapseAttributeValueArrays -
collapseEmptyToNull
protected static boolean collapseEmptyToNull -
collapseContentTreeArrays
protected static boolean collapseContentTreeArrays -
substituteUIDKeywords
protected static boolean substituteUIDKeywords -
useNumberForNumericContentItemValue
protected static boolean useNumberForNumericContentItemValue -
symbolSignifyingReservedKeyword
-
businessNameToUseForAnonymousContentItems
-
reservedKeywordForCodeValueInBusinessNamesFile
-
reservedKeywordForCodingSchemeDesignatorInBusinessNamesFile
-
reservedKeywordForCodeMeaningInBusinessNamesFile
-
reservedKeywordForValueTypeInBusinessNamesFile
-
reservedKeywordForRelationshipTypeInBusinessNamesFile
-
reservedKeywordForCodingSchemeVersionInBusinessNamesFile
-
reservedKeywordForLongCodeValueInBusinessNamesFile
-
reservedKeywordForURNCodeValueInBusinessNamesFile
-
reservedKeywordForContextIdentifierInBusinessNamesFile
-
reservedKeywordForContextUIDInBusinessNamesFile
-
reservedKeywordForMappingResourceInBusinessNamesFile
-
reservedKeywordForMappingResourceUIDInBusinessNamesFile
-
reservedKeywordForMappingResourceNameInBusinessNamesFile
-
reservedKeywordForContextGroupVersionInBusinessNamesFile
-
reservedKeywordForContextGroupExtensionFlagInBusinessNamesFile
-
reservedKeywordForContextGroupLocalVersionInBusinessNamesFile
-
reservedKeywordForContextGroupExtensionCreatorUIDInBusinessNamesFile
-
reservedKeywordForObservationDateTimeAttributeInSRFile
-
reservedKeywordForObservationUIDAttributeInSRFile
-
reservedKeywordForContinuityOfContentAttributeInSRFile
-
reservedKeywordForTemplateMappingResourceAttributeInSRFile
-
reservedKeywordForTemplateIdentifierAttributeInSRFile
-
reservedKeywordForSimplifiedLabelAttributeInSRFile
-
reservedKeywordForSimplifiedReferenceToLabelAttributeInSRFile
-
reservedKeywordForReferencedSOPClassUIDAttributeInCompositeContentItem
-
reservedKeywordForReferencedSOPInstanceUIDAttributeInCompositeContentItem
-
reservedKeywordForReferencedFrameNumberAttributeInCompositeContentItem
-
reservedKeywordForReferencedSegmentNumberAttributeInCompositeContentItem
-
reservedKeywordForPresentationStateSOPClassUIDAttributeInCompositeContentItem
protected static String reservedKeywordForPresentationStateSOPClassUIDAttributeInCompositeContentItem -
reservedKeywordForPresentationStateSOPInstanceUIDAttributeInCompositeContentItem
protected static String reservedKeywordForPresentationStateSOPInstanceUIDAttributeInCompositeContentItem -
reservedKeywordForRealWorldValueMappingSOPClassUIDAttributeInCompositeContentItem
protected static String reservedKeywordForRealWorldValueMappingSOPClassUIDAttributeInCompositeContentItem -
reservedKeywordForRealWorldValueMappingSOPInstanceUIDAttributeInCompositeContentItem
protected static String reservedKeywordForRealWorldValueMappingSOPInstanceUIDAttributeInCompositeContentItem -
reservedKeywordForGraphicTypeAttributeInCoordinatesContentItem
-
reservedKeywordFor2DCoordinatesAttributeInCoordinatesContentItem
-
reservedKeywordFor3DCoordinatesAttributeInCoordinatesContentItem
-
reservedKeywordForPixelOriginInterpretationAttributeInCoordinatesContentItem
protected static String reservedKeywordForPixelOriginInterpretationAttributeInCoordinatesContentItem -
reservedKeywordForFiducialUIDAttributeInCoordinatesContentItem
-
reservedKeywordForReferencedFrameOfReferenceUIDAttributeInCoordinatesContentItem
protected static String reservedKeywordForReferencedFrameOfReferenceUIDAttributeInCoordinatesContentItem -
reservedKeywordForMeasurementUnitsAttributeInNumericContentItem
-
reservedKeywordForFloatingPointValueAttributeInNumericContentItem
-
reservedKeywordForRationalNumeratorAttributeInNumericContentItem
-
reservedKeywordForRationalDenominatorAttributeInNumericContentItem
-
reservedKeywordForNumericValueQualifierAttributeInNumericContentItem
-
reservedKeywordForAlphabeticPropertyInPersonNameContentItem
-
reservedKeywordForIdeographicPropertyInPersonNameContentItem
-
reservedKeywordForPhoneticPropertyInPersonNameContentItem
-
simplifiedLabelPrefix
-
businessNames
-
valueTypesByBusinessName
-
relationshipTypesByBusinessName
-
contentItemIdentifiersByContentItem
-
simplifiedLabelByReferencedContentItemIdentifiers
-
simplifiedLabelCounter
protected int simplifiedLabelCounter -
contentItemFactory
-
referencedContentItemIdentifiersBySimplifiedLabel
-
-
Constructor Details
-
JSONRepresentationOfStructuredReportObjectFactory
public JSONRepresentationOfStructuredReportObjectFactory()Construct a factory object, which can be used to get JSON documents from DICOM objects.
-
-
Method Details
-
isCommonAnnotationAttribute
-
makeBusinessNameFromCodeMeaning
-
makeBusinessNameFromCodeMeaning
-
getCodedSequenceItemForBusinessName
public CodedSequenceItem getCodedSequenceItemForBusinessName(String businessName, String location, boolean roleIsAsConceptName) -
getCodedSequenceItemForBusinessNameUsedAsConceptName
public CodedSequenceItem getCodedSequenceItemForBusinessNameUsedAsConceptName(String businessName, String location) -
getCodedSequenceItemForBusinessNameUsedAsValue
public CodedSequenceItem getCodedSequenceItemForBusinessNameUsedAsValue(String businessName, String location) -
getCodedSequenceItemForBusinessNameUsedAsUnits
public CodedSequenceItem getCodedSequenceItemForBusinessNameUsedAsUnits(String businessName, String location) -
getBusinessNamesDocument
public javax.json.JsonArray getBusinessNamesDocument() -
addCodedSequenceItemPropertyFromBusinessName
protected void addCodedSequenceItemPropertyFromBusinessName(javax.json.JsonObject businessNamePayload, AttributeList csilist, AttributeTag tag, String reservedKeywordInBusinessNamesFile) -
loadBusinessNamesDocument
Load the business names encoded in a JSON document.
- Parameters:
document
- the JSON document- Throws:
DicomException
-
loadBusinessNamesDocument
Load the business names encoded in a JSON document.
- Parameters:
stream
- the input stream containing the JSON document- Throws:
IOException
DicomException
-
loadBusinessNamesDocument
Load the business names encoded in a JSON document.
- Parameters:
file
- the input file containing the JSON document- Throws:
IOException
DicomException
-
loadBusinessNamesDocument
Load the business names encoded in a JSON document.
- Parameters:
name
- the input file containing the JSON document- Throws:
IOException
DicomException
-
walkTreeBuildingSimplifiedLabelsForReferencedContentItemIdentifiers
protected void walkTreeBuildingSimplifiedLabelsForReferencedContentItemIdentifiers(ContentItem node, String location) Walk the tree starting at the specified node.
- Parameters:
node
-location
- the dotted numeric string describing the location of the starting node
-
getDocument
Given a DICOM attribute list encoding a Structured Report, get a JSON document.
- Parameters:
list
- the attribute list- Returns:
- the JSON encoded DICOM SR document
- Throws:
DicomException
-
getDocument
Given a DICOM Structured Report, get a JSON document of the content tree only.
- Parameters:
sr
- the Structured Report- Returns:
- the JSON encoded DICOM SR document
- Throws:
DicomException
-
getDocument
public javax.json.JsonArray getDocument(StructuredReport sr, AttributeList list) throws DicomException Given a DICOM Structured Report, get a JSON document of the content tree and the top level DICOM elements.
- Parameters:
sr
- the Structured Report may be null if list is not - will build an sr tree modellist
- the attribute list may be null if only the sr content tree is to be added- Returns:
- the JSON encoded DICOM SR document
- Throws:
DicomException
-
getDocument
Given a DICOM object encoded as a list of attributes, get a JSON document.
- Parameters:
file
- the DICOM file- Returns:
- the JSON document
- Throws:
IOException
DicomException
-
getDocument
Given a DICOM object encoded as a list of attributes, get a JSON document.
- Parameters:
filename
- the DICOM file name- Returns:
- the JSON document
- Throws:
IOException
DicomException
-
getStringFromSelectedContentItemValue
protected String getStringFromSelectedContentItemValue(javax.json.JsonArray contentItemValues, int which, String what, String valueType, CodedSequenceItem concept) -
getSingleStringValueOrNullFromJsonStringOrNumberContentItemValue
protected String getSingleStringValueOrNullFromJsonStringOrNumberContentItemValue(javax.json.JsonValue entry, String valueType, CodedSequenceItem concept) -
getSingleStringValueOrNullFromJsonContentItemValue
protected String getSingleStringValueOrNullFromJsonContentItemValue(javax.json.JsonValue entry, String valueType, CodedSequenceItem concept) -
haveChildrenForSingleStringOrCodeJsonContentItemValue
protected boolean haveChildrenForSingleStringOrCodeJsonContentItemValue(javax.json.JsonValue contentItemValue, javax.json.JsonObject contentItemAttributesObject) -
determineUnknownValueType
-
selectTheOtherOfTwoStringsInSet
-
selectFromAlternativeValueTypesForBusinessName
-
selectFromAlternativeRelationshipTypesForBusinessName
-
determineUnknownRelationshipType
-
getContentItemAttributesObject
protected javax.json.JsonObject getContentItemAttributesObject(javax.json.JsonArray contentItemAttributesAndChildrenArray) -
getContentItemAndChildrenFromJSONObjectValue
protected ContentItem getContentItemAndChildrenFromJSONObjectValue(String businessName, CodedSequenceItem concept, String valueType, String relationshipType, javax.json.JsonValue contentItemValue, String location) throws DicomException - Throws:
DicomException
-
getStructuredReport
public StructuredReport getStructuredReport(javax.json.JsonObject topLevelObject) throws DicomException Given a DICOM SR object encoded in a JSON document convert it to a StructuredReport using the content tree and ignoring any header attributes.
- Parameters:
topLevelObject
- the first object of the array that is the JSON document- Returns:
- the StructuredReport
- Throws:
DicomException
-
getStructuredReport
Given a DICOM SR object encoded as a JSON document convert it to a StructuredReport using the content tree and ignoring any header attributes.
- Parameters:
document
- the JSON document- Returns:
- the StructuredReport
- Throws:
DicomException
-
getAttributeList
Given a DICOM SR object encoded in a JSON document convert it to a list of attributes.
- Parameters:
topLevelObject
- the first object of the array that is the JSON document- Returns:
- the list of DICOM attributes
- Throws:
DicomException
-
getAttributeList
Given a DICOM SR object encoded as a JSON document convert it to a list of attributes.
- Parameters:
document
- the JSON document- Returns:
- the list of DICOM attributes
- Throws:
DicomException
-
getAttributeList
Given a DICOM SR object encoded as a JSON document in a stream convert it to a list of attributes.
- Parameters:
stream
- the input stream containing the JSON document- Returns:
- the list of DICOM attributes
- Throws:
IOException
DicomException
-
getAttributeList
Given a DICOM SR object encoded as a JSON document in a file convert it to a list of attributes.
- Parameters:
file
- the input file containing the JSON document- Returns:
- the list of DICOM attributes
- Throws:
IOException
DicomException
-
getAttributeList
Given a DICOM SR object encoded as a JSON document in a named file convert it to a list of attributes.
- Parameters:
name
- the input file containing the JSON document- Returns:
- the list of DICOM attributes
- Throws:
IOException
DicomException
-
write
Serialize a JSON document.
- Parameters:
out
- the output stream to write todocument
- the JSON document- Throws:
IOException
-
write
Serialize a JSON document.
- Parameters:
outputFile
- the output file to write todocument
- the JSON document- Throws:
IOException
-
write
Serialize a JSON document.
- Parameters:
outputPath
- the output path to write todocument
- the JSON document- Throws:
IOException
-
createDocumentAndWriteIt
public static void createDocumentAndWriteIt(AttributeList list, OutputStream out) throws IOException, DicomException Serialize a JSON document created from a DICOM Structured Report.
- Parameters:
list
- the attribute listout
- the output stream to write to- Throws:
IOException
DicomException
-
createDocumentAndWriteIt
public static void createDocumentAndWriteIt(StructuredReport sr, OutputStream out) throws IOException, DicomException Serialize a JSON document created from a DICOM Structured Report.
- Parameters:
sr
- the Structured Reportout
- the output stream to write to- Throws:
IOException
DicomException
-
createDocumentAndWriteIt
public static void createDocumentAndWriteIt(StructuredReport sr, AttributeList list, OutputStream out) throws DicomException Serialize a JSON document created from a DICOM attribute list.
- Parameters:
sr
- the Structured Report - may be null if list is not - will build an sr tree modellist
- the list of DICOM attributesout
- the output stream to write to- Throws:
DicomException
-
createDocumentAndWriteIt
public static void createDocumentAndWriteIt(StructuredReport sr, AttributeList list, File outputFile) throws IOException, DicomException Serialize a JSON document created from a DICOM attribute list.
- Parameters:
sr
- the Structured Report - may be null if list is not - will build an sr tree modellist
- the list of DICOM attributesoutputFile
- the output file to write to- Throws:
IOException
DicomException
-
createDocumentAndWriteIt
public static void createDocumentAndWriteIt(StructuredReport sr, AttributeList list, String outputPath) throws IOException, DicomException Serialize a JSON document created from a DICOM attribute list.
- Parameters:
sr
- the Structured Report - may be null if list is not - will build an sr tree modellist
- the list of DICOM attributesoutputPath
- the output path to write to- Throws:
IOException
DicomException
-
main
Read a DICOM dataset (that contains a structured report) and write a JSON representation of it to the standard output or specified path, or vice versa.
- Parameters:
arg
- either one input path of the file containing the DICOM/JSON dataset and a business name file path to read or write, or a direction argument (toDICOM or toJSON, case insensitive) and an input path and an input or output business name path, and optionally an output path
-