strjson

 FileInfo StorageAccessor::Write(const void* data,
                                  size_t size,
                                  FileContentType type,
                                  CompressionType compression,
                                  bool storeMd5)
  {

      ParsedDicomFile pdf(data, size);
      DicomWebJsonVisitor visitor;
      pdf.Apply(visitor);
      Json::Value v = visitor.GetResult();

      v["00431028"]["BulkDataURI"] = "http://localhost/dicom-web/studies/1.2.840.113619.2.417.3.2831214628.419.1651705382.616/series/1.2.840.113619.2.417.3.2831214628.419.1651705382.622.3/instances/1.2.840.113619.2.417.3.2831214628.419.1651705382.667.1/bulk/00431028";
      v["00431028"].removeMember("InlineBinary");


      v["7FE00010"]["BulkDataURI"] = "http://localhost/dicom-web/studies/1.2.840.113619.2.417.3.2831214628.419.1651705382.616/series/1.2.840.113619.2.417.3.2831214628.419.1651705382.622.3/instances/1.2.840.113619.2.417.3.2831214628.419.1651705382.667.1/bulk/7fe00010";
      v["7FE00010"].removeMember("InlineBinary");


      Json::StreamWriterBuilder wbuilder;

      wbuilder["indentation"] = "";       // Optional
    
      std::string str = Json::writeString(wbuilder, v);

      std::string  strJson(str);


     





      std::unique_ptr<DicomInstanceToStore> toStore(DicomInstanceToStore::CreateFromBuffer(data, size));
      DicomMap summary2;
      toStore->GetSummary(summary2);
      //日期
      summary2.GetValue(8, 32).GetContent();
      //study instance id
      summary2.GetValue(32, 13).GetContent();
      // patientId 条码
      summary2.GetValue(16, 32).GetContent();
      // series instance id
      summary2.GetValue(32, 14).GetContent();
      // sop instance id
      summary2.GetValue(8, 24).GetContent();

      std::string subPath;
      subPath += summary2.GetValue(8, 32).GetContent();
      subPath += "/";
      subPath += summary2.GetValue(32, 13).GetContent();
      subPath += "_";
      //patientId 条码
      subPath += summary2.GetValue(16, 32).GetContent();
      subPath += "/";
      subPath += summary2.GetValue(32, 14).GetContent();
      subPath += "/";
      subPath += summary2.GetValue(8, 24).GetContent();



      //    std::string uuid = Toolbox::GenerateUuid();

      std::string uuid;
      uuid += subPath;


    //std::string uuid = Toolbox::GenerateUuid();

    std::string md5;

    if (storeMd5)
    {
      Toolbox::ComputeMD5(md5, data, size);
    }

    switch (compression)
    {
      case CompressionType_None:
      {
        MetricsTimer timer(*this, METRICS_CREATE);

        area_.Create(uuid, data, size, type);
        
        if (cache_ != NULL)
        {
          cache_->Add(uuid, type, data, size);
        }

        return FileInfo(uuid, type, size, md5, strJson);
      }

      case CompressionType_ZlibWithSize:
      {
        ZlibCompressor zlib;

        std::string compressed;
        zlib.Compress(compressed, data, size);

        std::string compressedMD5;
      
        if (storeMd5)
        {
          Toolbox::ComputeMD5(compressedMD5, compressed);
        }

        {
          MetricsTimer timer(*this, METRICS_CREATE);

          if (compressed.size() > 0)
          {
            area_.Create(uuid, &compressed[0], compressed.size(), type);
          }
          else
          {
            area_.Create(uuid, NULL, 0, type);
          }
        }

        if (cache_ != NULL)
        {
          cache_->Add(uuid, type, data, size);  // always add uncompressed data to cache
        }

        return FileInfo(uuid, type, size, md5,
                        CompressionType_ZlibWithSize, compressed.size(), compressedMD5, strJson);
      }

      default:
        throw OrthancException(ErrorCode_NotImplemented);
    }
  }
FileInfo StorageAccessor::Write(const void* data,
                                  size_t size,
                                  FileContentType type,
                                  CompressionType compression,
                                  bool storeMd5)
  {

      ParsedDicomFile pdf(data, size);
      DicomWebJsonVisitor visitor;
      pdf.Apply(visitor);
      Json::Value v = visitor.GetResult();

      v["00431028"]["BulkDataURI"] = "http://localhost/dicom-web/studies/1.2.840.113619.2.417.3.2831214628.419.1651705382.616/series/1.2.840.113619.2.417.3.2831214628.419.1651705382.622.3/instances/1.2.840.113619.2.417.3.2831214628.419.1651705382.667.1/bulk/00431028";
      v["00431028"].removeMember("InlineBinary");


      v["7FE00010"]["BulkDataURI"] = "http://localhost/dicom-web/studies/1.2.840.113619.2.417.3.2831214628.419.1651705382.616/series/1.2.840.113619.2.417.3.2831214628.419.1651705382.622.3/instances/1.2.840.113619.2.417.3.2831214628.419.1651705382.667.1/bulk/7fe00010";
      v["7FE00010"].removeMember("InlineBinary");


      Json::StreamWriterBuilder wbuilder;

      wbuilder["indentation"] = "";       // Optional
      std::string  str = Json::writeString(wbuilder, v);



    std::string uuid = Toolbox::GenerateUuid();

    std::string md5;

    if (storeMd5)
    {
      Toolbox::ComputeMD5(md5, data, size);
    }

    switch (compression)
    {
      case CompressionType_None:
      {
        MetricsTimer timer(*this, METRICS_CREATE);

        area_.Create(uuid, data, size, type);
        
        if (cache_ != NULL)
        {
          cache_->Add(uuid, type, data, size);
        }

        return FileInfo(uuid, type, size, md5,str);
      }

      case CompressionType_ZlibWithSize:
      {
        ZlibCompressor zlib;

        std::string compressed;
        zlib.Compress(compressed, data, size);

        std::string compressedMD5;
      
        if (storeMd5)
        {
          Toolbox::ComputeMD5(compressedMD5, compressed);
        }

        {
          MetricsTimer timer(*this, METRICS_CREATE);

          if (compressed.size() > 0)
          {
            area_.Create(uuid, &compressed[0], compressed.size(), type);
          }
          else
          {
            area_.Create(uuid, NULL, 0, type);
          }
        }

        if (cache_ != NULL)
        {
          cache_->Add(uuid, type, data, size);  // always add uncompressed data to cache
        }



       





        return FileInfo(uuid, type, size, md5,
                        CompressionType_ZlibWithSize, compressed.size(), compressedMD5, str);
      }

      default:
        throw OrthancException(ErrorCode_NotImplemented);
    }
  }
struct ORTHANC_PUBLIC FileInfo
  {
  private:
    bool             valid_;
    std::string      uuid_;
    FileContentType  contentType_;
    uint64_t         uncompressedSize_;
    std::string      uncompressedMD5_;
    CompressionType  compressionType_;
    uint64_t         compressedSize_;
    std::string      compressedMD5_;
    std::string      dir_;

  public:
    FileInfo();

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值