Orthanc Automatic Dicom to Jpeg Convertor

1,000 views
Skip to first unread message

Luke Whitty

unread,
Feb 24, 2018, 7:08:50 PM2/24/18
to Orthanc Users
Good Morning Orthanc Friends

I have interesting concept/project that I wish to investigate.

 

I would like an automatic DICOM to JPEG convertor that acts as a Dicom send destination.

 

I require a program that allows an imaging modality to be able to send DICOM images to the applicatiion/Software (As it would a PACS destination) located on a PC or server, which automatically converts the images (x-ray only) and saves them in a file that would ideally be named or populated by Dicom tag (0010,0010)(patient Name)

 

It is basically a Interesting case folder creator, that X-ray users can send images from the modality to the converter destination for use as a teaching resource at a later date.

 

Could Orthanc be configured to we used in such a way?


I am a Radiographer not a programmer, but have slowly increased my knowledge by using some very basic features Orthanc for the last 12 months.


Any help and advise would be welcomed.


Best regards

Luke Whitty

Australia

Sébastien Jodogne

unread,
Feb 25, 2018, 8:19:29 AM2/25/18
to Orthanc Users
Hello,

This can very easily achieved with Lua scripting:

Here is a sample Lua script:


--TARGET = '/tmp/lua'
TARGET = 'c:/temp/lua'  -- For Windows

function OnStoredInstance(instanceId, tags, metadata, origin)
   -- Replace non-alphanumeric characters by underscore
   local filename = string.gsub(tags['PatientName'], '[^a-zA-Z0-9]', '_')

   -- Suffix path with the instance ID to avoid overwriting duplicates (optional)
   filename = filename .. '-' .. instanceId

   -- Generate a PNG preview of the DICOM file
   local png = RestApiGet('/instances/' .. instanceId .. '/preview')
   
   -- Write the PNG to the file
   path = TARGET .. '/' .. filename .. '.png'
   print('Writing image of the patient to: ' .. path)
   local target = assert(io.open(path, 'wb'))
   target:write(png)
   target:close()

   -- Remove the received DICOM instance from Orthanc (optional)
   -- Delete(instanceId)
end


HTH,
Sébastien-

fdalto

unread,
Sep 22, 2018, 4:22:52 PM9/22/18
to Orthanc Users
Hi Sebastien,

I'm really glad that you help people here.

I would like some help to merge 2 scripts in order to generate a Folder with "PatientsName" and "ExamDate" and "PatientId" (now I'm using the one below, but it's not exactyl what I need).

Then, inside the folder I would like to store the Dicom Files (could be flat architeture). And make another folder called "images" with PNG files.

At this moment I'm using this LUA script:

TARGET = 'C:\\Google Drive\\Arquivos Clinica\\Ultrassom\\Imagens'

function ToAscii(s)
   return s ---I dont know what is this return
end

function OnStableSeries(seriesId, tags, metadata)
   print('This series is now stable, writing its instances on the disk: ' .. seriesId)

   local instances = ParseJson(RestApiGet('/series/' .. seriesId)) ['Instances']
   local patient = ParseJson(RestApiGet('/series/' .. seriesId .. '/patient')) ['MainDicomTags']
   local study = ParseJson(RestApiGet('/series/' .. seriesId .. '/study')) ['MainDicomTags']
   local series = ParseJson(RestApiGet('/series/' .. seriesId)) ['MainDicomTags']

   for i, instance in pairs(instances) do
      local path = ToAscii(TARGET .. '/' .. 
                              patient['PatientID'] .. ' - ' .. patient['PatientName'] .. '/' ..
                              study['StudyDate'])

      -- Retrieve the DICOM file from Orthanc
      local dicom = RestApiGet('/instances/' .. instance .. '/file')

      -- Create the subdirectory (CAUTION: For Linux demo only, this is insecure!)
      os.execute('mkdir "' .. path .. '"')

      -- Write to the file
      local target = assert(io.open(path .. '/' .. instance .. '.dcm', 'wb'))
      target:write(dicom)
      target:close()
   end
end

This Lua that I'm using makes a folder with patients ID and name (eg.: 000000045 - VITOR TESTE^^^^) I dont know why Philips Ultrasound makes this ^^^^ after the name.

It is possible to merge the one I'm using with this other script that you created in this topic for PNG exporting ?

I would like to create a Folder inside the patient folder with the PNG files with simple numeric sequence (1.png, 2.png ...)
like this: C:\\Google Drive\\Arquivos Clinica\\Ultrassom\\Imagens\\"path"\\IMAGES\\1.pgn

Thanks for the Help.
GD.lua

Sébastien Jodogne

unread,
Sep 27, 2018, 1:49:34 AM9/27/18
to Orthanc Users
Hello,

I feel that you have all the required information at your disposal: This is just Lua fine-tuning.

Give a try by yourself, then share your findings.

Regards,
Sébastien-
Reply all
Reply to author
Forward
0 new messages