Is there any way to send Dicom tags to Supabase via LuaScripts?

I’ve been trying the whole day with ChatGPT help, but I’m not get any step forward.

local http = require(“socket.http”)
local ltn12 = require(“ltn12”)

– Função para enviar os dados para o Supabase
function sendToSupabase(data)
local url = “https://<sua_url_do_supabase>.supabase.co/rest/v1/tabela_exame_nao_registrado”
local body = “studyuid_nr=” … data.studyUid …
“&numero_img_nr=” … data.numeroImg …
“&nome_paciente_exame_nr=” … data.patientName …
“&data_exame_nr=” … data.dataExame …
“&aetitle_exame_nr=” … data.aetitleExame …
“&acc_number_nr=” … data.accNumber …
“&institution_name_nr=” … data.institutionName …
“&modalidade_exame_nr=” … data.modalidadeExame …
“&data_nascimento=” … data.dataNascimento

local respbody = {}
local res, code, respheaders, status = http.request {
    method = "POST",
    url = url,
    source = ltn12.source.string(body),
    headers = {
        ["Content-Type"] = "application/x-www-form-urlencoded",
        ["Content-Length"] = string.len(body),
        ["Authorization"] = "Bearer <sua_chave_do_supabase>"
    },
    sink = ltn12.sink.table(respbody)
}

if code == 200 then
    print("Dados enviados com sucesso para o Supabase")
else
    print("Erro ao enviar dados para o Supabase. Código de resposta: " .. code)
end

end

– Função chamada quando uma nova instância DICOM é armazenada
function OnStoredInstance(instanceId, tags, metadata, origin)
– Verifica se a instância é parte de um novo estudo (StudyInstanceUID)
if tags[“StudyInstanceUID”] then
sendToSupabase({
studyUid = tags[“StudyInstanceUID”],
numeroImg = 0, – Você precisará implementar a lógica para contar o número de imagens
patientName = tags[“PatientName”],
dataExame = tags[“StudyDate”],
aetitleExame = tags[“AccessionNumber”],
accNumber = tags[“AccessionNumber”],
institutionName = tags[“InstitutionName”],
modalidadeExame = tags[“Modality”],
dataNascimento = tags[“PatientBirthDate”]
})
end
end

It helped me create this script, to identify new StudyUID and create a new row at Supabase.

But Again, Orthanc service stopped with [Cannot execute a Lua command] (code 2031)

Hi @gutocastiglioni ,

By default orthanc’s Lua plugin does not support external packages, so you must compile a custom Lua plugin to install external packages.

The best way I would go about it is using the Python plugin, and installing the required Python modules to send Dicom tags to your supabase DB!

Regards,
Yash

1 Like

Thanks! I’ll take a look on this!