How to get Dicom lossless image from google cloud?

Viewed 23

This is my code to get a dicom image from Google Cloud. It works well, but the image is lossy.

router.get("/dicomWebRetrieveInstance/dcmfile", async (req, res, next) => {
      const writeFile = util.promisify(fs.writeFile);
      emphasized textconst fileName = 'rendered_image.jpeg';
      const cloudRegion = "us";
      const projectId = "neurocaredicom";
      const datasetId = "System_1";
      const dicomStoreId = "Site_1A";
      const studyUid = "1.2.276.0.7230010.3.1.2.296485376.1.1521713579.1849134";
      const seriesUid = "1.2.276.0.7230010.3.1.3.2`enter code here`96485376.1.1521713580.1849651";
      const instanceUid = "1.2.276.0.7230010.3.1.4.296485376.1.1521713580.1849652";
      const parent = `projects/${projectId}/locations/${cloudRegion}/datasets/${datasetId}/dicomStores/${dicomStoreId}`;
      const dicomWebPath = `studies/${studyUid}/series/${seriesUid}/instances/${instanceUid}/rendered`;
      const request = {parent, dicomWebPath};
    
      const rendered =
        await healthcare.projects.locations.datasets.dicomStores.studies.series.instances.retrieveRendered(
          request,
          {
            headers: "application/octet-stream; transfer-syntax=* ",
            responseType: 'arraybuffer',
          }
        );
      const fileBytes = Buffer.from(rendered.data);
    
      await writeFile(fileName, fileBytes);
      var options = {
        root: path.join(__dirname),
      };
      // read binary data
      var bitmap = fs.readFileSync(fileName);
      // convert binary data to base64 encoded string
      res.status(200).sendFile(fileName, options, function (err) {
        if (err) {
          next(err);
        } else {
          console.log(
            `Retrieved rendered image and saved to ${fileName} in current directory`
          );
        }
      });
    });

Any solution to that problem would be appreciated, so anyone can help.

0 Answers
Related