Mercurial > hg > orthanc
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 { |