comparison OrthancServer/FromDcmtkBridge.cpp @ 1735:a001f6226c7c

primitives for flags in dicom-to-json conversions
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 21 Oct 2015 16:25:09 +0200
parents 18c02c6987d5
children b953c6eef28d
comparison
equal deleted inserted replaced
1734:e2675b37eb01 1735:a001f6226c7c
676 676
677 677
678 static void DatasetToJson(Json::Value& parent, 678 static void DatasetToJson(Json::Value& parent,
679 DcmItem& item, 679 DcmItem& item,
680 DicomToJsonFormat format, 680 DicomToJsonFormat format,
681 DicomToJsonFlags flags,
681 unsigned int maxStringLength, 682 unsigned int maxStringLength,
682 Encoding encoding); 683 Encoding encoding);
683 684
684 685
685 void FromDcmtkBridge::ToJson(Json::Value& parent, 686 void FromDcmtkBridge::ToJson(Json::Value& parent,
686 DcmElement& element, 687 DcmElement& element,
687 DicomToJsonFormat format, 688 DicomToJsonFormat format,
689 DicomToJsonFlags flags,
688 unsigned int maxStringLength, 690 unsigned int maxStringLength,
689 Encoding encoding) 691 Encoding encoding)
690 { 692 {
691 if (parent.type() == Json::nullValue) 693 if (parent.type() == Json::nullValue)
692 { 694 {
713 715
714 for (unsigned long i = 0; i < sequence.card(); i++) 716 for (unsigned long i = 0; i < sequence.card(); i++)
715 { 717 {
716 DcmItem* child = sequence.getItem(i); 718 DcmItem* child = sequence.getItem(i);
717 Json::Value& v = target.append(Json::objectValue); 719 Json::Value& v = target.append(Json::objectValue);
718 DatasetToJson(v, *child, format, maxStringLength, encoding); 720 DatasetToJson(v, *child, format, flags, maxStringLength, encoding);
719 } 721 }
720 } 722 }
721 } 723 }
722 724
723 725
724 static void DatasetToJson(Json::Value& parent, 726 static void DatasetToJson(Json::Value& parent,
725 DcmItem& item, 727 DcmItem& item,
726 DicomToJsonFormat format, 728 DicomToJsonFormat format,
729 DicomToJsonFlags flags,
727 unsigned int maxStringLength, 730 unsigned int maxStringLength,
728 Encoding encoding) 731 Encoding encoding)
729 { 732 {
730 assert(parent.type() == Json::objectValue); 733 assert(parent.type() == Json::objectValue);
731 734
732 for (unsigned long i = 0; i < item.card(); i++) 735 for (unsigned long i = 0; i < item.card(); i++)
733 { 736 {
734 DcmElement* element = item.getElement(i); 737 DcmElement* element = item.getElement(i);
735 FromDcmtkBridge::ToJson(parent, *element, format, maxStringLength, encoding); 738 if (element == NULL)
739 {
740 throw OrthancException(ErrorCode_InternalError);
741 }
742
743 if ((flags & DicomToJsonFlags_IncludePrivateTags) ||
744 !element->getTag().isPrivate())
745 {
746 FromDcmtkBridge::ToJson(parent, *element, format, flags, maxStringLength, encoding);
747 }
736 } 748 }
737 } 749 }
738 750
739 751
740 void FromDcmtkBridge::ToJson(Json::Value& target, 752 void FromDcmtkBridge::ToJson(Json::Value& target,
741 DcmDataset& dataset, 753 DcmDataset& dataset,
742 DicomToJsonFormat format, 754 DicomToJsonFormat format,
755 DicomToJsonFlags flags,
743 unsigned int maxStringLength) 756 unsigned int maxStringLength)
744 { 757 {
745 target = Json::objectValue; 758 target = Json::objectValue;
746 DatasetToJson(target, dataset, format, maxStringLength, DetectEncoding(dataset)); 759 DatasetToJson(target, dataset, format, flags, maxStringLength, DetectEncoding(dataset));
747 } 760 }
748 761
749 762
750 std::string FromDcmtkBridge::GetName(const DicomTag& t) 763 std::string FromDcmtkBridge::GetName(const DicomTag& t)
751 { 764 {