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);
}
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected Map<String,CodedSequenceItem> protected static Stringprotected static booleanprotected static booleanprotected static booleanprotected ContentItemFactoryprotected Map<ContentItem,String> protected static booleanprotected static Stringprotected static Stringprotected static Stringprotected static Stringprotected static Stringprotected static Stringprotected static Stringprotected static Stringprotected static Stringprotected static Stringprotected static Stringprotected static Stringprotected static Stringprotected static Stringprotected static Stringprotected static Stringprotected static Stringprotected static Stringprotected static Stringprotected static Stringprotected static Stringprotected static Stringprotected static Stringprotected static Stringprotected static Stringprotected static Stringprotected static Stringprotected static Stringprotected static Stringprotected static Stringprotected static Stringprotected static Stringprotected static Stringprotected static Stringprotected static Stringprotected static Stringprotected static Stringprotected static Stringprotected static Stringprotected static Stringprotected static Stringprotected static Stringprotected static Stringprotected static Stringprotected static Stringprotected static Stringprotected intprotected static Stringprotected static booleanprotected static Stringprotected static boolean -
Constructor Summary
ConstructorsConstructorDescriptionConstruct a factory object, which can be used to get JSON documents from DICOM objects. -
Method Summary
Modifier and TypeMethodDescriptionprotected voidaddCodedSequenceItemPropertyFromBusinessName(javax.json.JsonObject businessNamePayload, AttributeList csilist, AttributeTag tag, String reservedKeywordInBusinessNamesFile) static voidcreateDocumentAndWriteIt(AttributeList list, OutputStream out) Serialize a JSON document created from a DICOM Structured Report.static voidcreateDocumentAndWriteIt(StructuredReport sr, AttributeList list, File outputFile) Serialize a JSON document created from a DICOM attribute list.static voidcreateDocumentAndWriteIt(StructuredReport sr, AttributeList list, OutputStream out) Serialize a JSON document created from a DICOM attribute list.static voidcreateDocumentAndWriteIt(StructuredReport sr, AttributeList list, String outputPath) Serialize a JSON document created from a DICOM attribute list.static voidSerialize a JSON document created from a DICOM Structured Report.protected StringdetermineUnknownRelationshipType(String parentValueType, String childValueType, javax.json.JsonValue childObjectValue) protected StringdetermineUnknownValueType(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.JsonArraygetCodedSequenceItemForBusinessName(String businessName, String location, boolean roleIsAsConceptName) getCodedSequenceItemForBusinessNameUsedAsConceptName(String businessName, String location) getCodedSequenceItemForBusinessNameUsedAsUnits(String businessName, String location) getCodedSequenceItemForBusinessNameUsedAsValue(String businessName, String location) protected ContentItemgetContentItemAndChildrenFromJSONObjectValue(String businessName, CodedSequenceItem concept, String valueType, String relationshipType, javax.json.JsonValue contentItemValue, String location) protected javax.json.JsonObjectgetContentItemAttributesObject(javax.json.JsonArray contentItemAttributesAndChildrenArray) javax.json.JsonArraygetDocument(AttributeList list) Given a DICOM attribute list encoding a Structured Report, get a JSON document.javax.json.JsonArrayGiven a DICOM Structured Report, get a JSON document of the content tree only.javax.json.JsonArraygetDocument(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.JsonArraygetDocument(File file) Given a DICOM object encoded as a list of attributes, get a JSON document.javax.json.JsonArraygetDocument(String filename) Given a DICOM object encoded as a list of attributes, get a JSON document.protected StringgetSingleStringValueOrNullFromJsonContentItemValue(javax.json.JsonValue entry, String valueType, CodedSequenceItem concept) protected StringgetSingleStringValueOrNullFromJsonStringOrNumberContentItemValue(javax.json.JsonValue entry, String valueType, CodedSequenceItem concept) protected StringgetStringFromSelectedContentItemValue(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 booleanhaveChildrenForSingleStringOrCodeJsonContentItemValue(javax.json.JsonValue contentItemValue, javax.json.JsonObject contentItemAttributesObject) protected booleanisCommonAnnotationAttribute(String attributeName) voidLoad the business names encoded in a JSON document.voidloadBusinessNamesDocument(InputStream stream) Load the business names encoded in a JSON document.voidLoad the business names encoded in a JSON document.voidloadBusinessNamesDocument(javax.json.JsonArray document) Load the business names encoded in a JSON document.static voidRead 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 StringmakeBusinessNameFromCodeMeaning(CodedSequenceItem conceptName) static StringmakeBusinessNameFromCodeMeaning(String codeMeaning, boolean upperCamelCase) protected StringselectFromAlternativeRelationshipTypesForBusinessName(String childLocation, String childBusinessName, String parentValueType, String childValueType, Set<String> childRelationshipTypes) protected StringselectFromAlternativeValueTypesForBusinessName(String childLocation, String childBusinessName, String parentValueType, Set<String> childValueTypes, javax.json.JsonValue childObjectValue) protected static StringselectTheOtherOfTwoStringsInSet(String method, String location, Set<String> theSet, String doNotWant) protected voidwalkTreeBuildingSimplifiedLabelsForReferencedContentItemIdentifiers(ContentItem node, String location) Walk the tree starting at the specified node.static voidSerialize a JSON document.static voidwrite(OutputStream out, javax.json.JsonArray document) Serialize a JSON document.static voidSerialize 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:
IOExceptionDicomException
-
loadBusinessNamesDocument
Load the business names encoded in a JSON document.
- Parameters:
file- the input file containing the JSON document- Throws:
IOExceptionDicomException
-
loadBusinessNamesDocument
Load the business names encoded in a JSON document.
- Parameters:
name- the input file containing the JSON document- Throws:
IOExceptionDicomException
-
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:
IOExceptionDicomException
-
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:
IOExceptionDicomException
-
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:
IOExceptionDicomException
-
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:
IOExceptionDicomException
-
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:
IOExceptionDicomException
-
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:
IOExceptionDicomException
-
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:
IOExceptionDicomException
-
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:
IOExceptionDicomException
-
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:
IOExceptionDicomException
-
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
-