当前位置: 代码迷 >> 综合 >> Orthanc的REST API — Orthanc Book文档
  详细解决方案

Orthanc的REST API — Orthanc Book文档

热度:68   发布时间:2024-01-04 08:19:18.0

Orthanc的REST 

Orthanc的主要优势之一在于其内置的RESTful API,可用于从外部应用程序驱动Orthanc,而与用于开发这些应用程序的编程语言无关。Orthanc的REST API提供了对Orthanc所有核心功能的完整编程访问。

重要的是,Orthanc Explorer(Orthanc的嵌入式管理界面)完全使用此REST API的所有功能。这意味着可以通过Orthanc Explorer完成的任何事情,也可以通过REST查询完成。

注意:所有示例都使用cURL命令行工具进行了说明,但是等效调用可以轻松地转换为支持HTTP和JSON的任何编程语言。

发送DICOM图像

通过使用以下语法查询REST API,可以上传DICOM文件:

$ curl -X POST http://localhost:8042/instances --data-binary @CT.X.1.2.276.0.7230010.dcm

Orthanc将以JSON文件作为响应,该文件包含有关所存储实例的位置的信息,例如:

{ "ID" : "e87da270-c52b-4f2a-b8c6-bae25928d0b0", "Path" : "/instances/e87da270-c52b-4f2a-b8c6-bae25928d0b0", "Status" : "Success" }

请注意,在curl的情况下,设置ExpectHTTP标头将大大减少POST请求的执行时间:

$ curl -X POST -H "Expect:" http://localhost:8042/instances --data-binary @CT.X.1.2.276.0.7230010.dcm

Orthanc的代码分发包含一个示例Python脚本 ,该脚本使用REST API将某些文件夹的内容递归上传到Orthanc:

$ python ImportDicomFiles.py localhost 8042 ~/DICOM/

访问Orthanc的内容

Orthanc使用DICOM标准的“患者,研究,系列,实例”模型来构造存储的DICOM资源。每个DICOM资源都与唯一标识符关联。

列出所有DICOM资源

这是您列出本地Orthanc实例中存储的所有DICOM资源的方式:

$ curl http://localhost:8042/patients 
$ curl http://localhost:8042/studies 
$ curl http://localhost:8042/series 
$ curl http://localhost:8042/instances

请注意,此命令的结果是一个JSON文件,其中包含资源标识符数组。JSON文件格式是轻量级的,几乎可以从任何一种计算机语言中进行解析。

访问病人

要访问单个资源,请将其标识符添加到URI。例如,您将检索有关一名患者的主要信息,如下所示:

$ curl http://localhost:8042/patients/dc65762c-f476e8b9-898834f4-2f8a5014-2599bc94

这是Orthanc的可能答案:

{ "ID" : "07a6ec1c-1be5920b-18ef5358-d24441f3-10e926ea", "MainDicomTags" : { "OtherPatientIDs" : "(null)", "PatientBirthDate" : "0", "PatientID" : "000000185", "PatientName" : "Anonymous^Unknown", "PatientSex" : "O" }, "Studies" : [ "9ad2b0da-a406c43c-6e0df76d-1204b86f-78d12c15" ], "Type" : "Patient" }

这再次是JSON文件。注意Orthanc如何为您提供与患者水平相对应的主要DICOM标签的摘要。

从患者浏览到实例

该字段Studies列出了所有与患者相关的DICOM研究。因此,考虑到上述患者,我们将按以下方式进入她的DICOM层次结构:

$ curl http//localhost:8042/studies/9ad2b0da-a406c43c-6e0df76d-1204b86f-78d12c15

Orthanc可以回答:

{ "ID" : "9ad2b0da-a406c43c-6e0df76d-1204b86f-78d12c15", "MainDicomTags" : { "AccessionNumber" : "(null)", "StudyDate" : "20120716", "StudyDescription" : "TestSUVce-TF", "StudyID" : "23848", "StudyInstanceUID" : "1.2.840.113704.1.111.7016.1342451220.40", "StudyTime" : "170728" }, "ParentPatient" : "07a6ec1c-1be5920b-18ef5358-d24441f3-10e926ea", "Series" : [ "6821d761-31fb55a9-031ebecb-ba7f9aae-ffe4ddc0", "2cc6336f-2d4ae733-537b3ca3-e98184b1-ba494b35", "7384c47e-6398f2a8-901846ef-da1e2e0b-6c50d598" ], "Type" : "Study" }

现在,主要的DICOM标签是与研究水平相关的标签。可以在ParentPatient现场检索患者的标识符,该标识符 可用于提升DICOM层次结构。但是,让我们宁愿使用Series数组降到系列级别 。下一条命令将返回有关刚刚报告的三个系列之一的信息:

$ curl http:// localhost:8042 / series / 2cc6336f-2d4ae733-537b3ca3-e98184b1-ba494b35

这是一个可能的答案:

{ "ExpectedNumberOfInstances" : 45, "ID" : "2cc6336f-2d4ae733-537b3ca3-e98184b1-ba494b35", "Instances" : [ "41bc3f74-360f9d10-6ae9ffa4-01ea2045-cbd457dd", "1d3de868-6c4f0494-709fd140-7ccc4c94-a6daa3a8", <...> "1010f80b-161b71c0-897ec01b-c85cd206-e669a3ea", "e668dcbf-8829a100-c0bd203b-41e404d9-c533f3d4" ], "MainDicomTags" : { "Manufacturer" : "Philips Medical Systems", "Modality" : "PT", "NumberOfSlices" : "45", "ProtocolName" : "CHU/Body_PET/CT___50", "SeriesDate" : "20120716", "SeriesDescription" : "[WB_CTAC] Body", "SeriesInstanceUID" : "1.3.46.670589.28.2.12.30.26407.37145.2.2516.0.1342458737", "SeriesNumber" : "587370", "SeriesTime" : "171121", "StationName" : "r054-svr" }, "ParentStudy" : "9ad2b0da-a406c43c-6e0df76d-1204b86f-78d12c15", "Status" : "Complete", "Type" : "Series" }

可以看出,该系列来自PET模式。Orthanc计算出该系列应包含45个实例。

到目前为止,我们已经从患者级别导航到研究级别,最后到系列级别。仅保留实例级别。让我们转储实例之一的内容:

$ curl http:// localhost:8042 / instances / e668dcbf-8829a100-c0bd203b-41e404d9-c533f3d4

该实例包含以下信息:

{ "FileSize" : 70356, "FileUuid" : "3fd265f0-c2b6-41a2-ace8-ae332db63e06", "ID" : "e668dcbf-8829a100-c0bd203b-41e404d9-c533f3d4", "IndexInSeries" : 6, "MainDicomTags" : { "ImageIndex" : "6", "InstanceCreationDate" : "20120716", "InstanceCreationTime" : "171344", "InstanceNumber" : "6", "SOPInstanceUID" : "1.3.46.670589.28.2.15.30.26407.37145.3.2116.39.1342458737" }, "ParentSeries" : "2cc6336f-2d4ae733-537b3ca3-e98184b1-ba494b35", "Type" : "Instance" }

该实例在父级系列中的索引为6。该实例存储为70356字节的原始DICOM文件。您可以使用以下命令下载此DICOM文件:

$ curl http:// localhost:8042 / instances / e668dcbf-8829a100-c0bd203b-41e404d9-c533f3d4 / file> Instance.dcm

作为JSON文件访问实例的DICOM字段

当到达实例级别时,您可以将该实例的所有DICOM标签的层次结构作为JSON文件检索:

$ curl http:// localhost:8042 / instances / e668dcbf-8829a100-c0bd203b-41e404d9-c533f3d4 / simplified-tags

这是Orthanc答案的摘录:

{ "ACR_NEMA_2C_VariablePixelDataGroupLength" : "57130", "AccessionNumber" : null, "AcquisitionDate" : "20120716", "AcquisitionDateTime" : "20120716171219", "AcquisitionTime" : "171219", "ActualFrameDuration" : "3597793", "AttenuationCorrectionMethod" : "CTAC-SG", <...> "PatientID" : "000000185", "PatientName" : "Anonymous^Unknown", "PatientOrientationCodeSequence" : [ { "CodeMeaning" : "recumbent", "CodeValue" : "F-10450", "CodingSchemeDesignator" : "99SDM", "PatientOrientationModifierCodeSequence" : [ { "CodeMeaning" : "supine", "CodeValue" : "F-10340", "CodingSchemeDesignator" : "99SDM" } ] } ], <...> "StudyDescription" : "TestSUVce-TF", "StudyID" : "23848", "StudyInstanceUID" : "1.2.840.113704.1.111.7016.1342451220.40", "StudyTime" : "171117", "TypeOfDetectorMotion" : "NONE", "Units" : "BQML", "Unknown" : null, "WindowCenter" : "1.496995e+04", "WindowWidth" : "2.993990e+04" }

如果您需要有关变量类型的更多详细信息,或者希望使用DICOM标记的十六进制索引,则可以自由使用以下URL:

$ curl http:// localhost:8042 / instances / e668dcbf-8829a100-c0bd203b-41e404d9-c533f3d4 / tags

访问实例的原始DICOM字段

您还可以访问实例的DICOM标记的原始值,而无需通过JSON文件。以下是查找实例的患者姓名的方法:

$ curl http:// localhost:8042 / instances / e668dcbf-8829a100-c0bd203b-41e404d9-c533f3d4 / content / 0010-0010 
Anonymous^Unknown

该实例所有可用标签的列表也可以轻松检索:

$ curl http:// localhost:8042 / instances / e668dcbf-8829a100-c0bd203b-41e404d9-c533f3d4 / content

还可以递归地浏览标签的序列:

$ curl http:// localhost:8042 / instances / e668dcbf-8829a100-c0bd203b-41e404d9-c533f3d4 / content / 0008-1250 / 0 / 0040-a170 / 0 / 0008-0104 
For Attenuation Correction

上面的命令已打开DICOM序列的“ 0008-1250”标签,并获取了第一个孩子,打开了也是序列的“ 0040-a170”标签,并获取了该孩子的第一个孩子,并返回了“ 0008”。 -0104” DICOM标签。

下载图像

正如上面所解释的,对应于单个实例的原始DICOM文件可以检索如下:

$ curl http:// localhost:8042 / instances / 609665c0-c5198aa2-8632476b-a00e0de0-e9075d94 / file> Instance.dcm

也可以下载与某些DICOM实例相对应的预览PNG图像:

$ curl http:// localhost:8042 / instances / 609665c0-c5198aa2-8632476b-a00e0de0-e9075d94 / preview> Preview.png

生成的图像将是可由任何绘画软件打开的标准灰度PNG图像(每个像素8位)。像素数据的动态范围扩展到[0..255]范围。等效的JPEG图像可以通过设置被下载的HTTP标头Acceptimage/jpeg

$ curl -H 'Accept:image/ jpeg'http:// localhost:8042 / instances / 609665c0-c5198aa2-8632476b-a00e0de0-e9075d94 / preview> Preview.jpg

如果您不想扩展动态范围并创建8bpp或16bpp PNG图像,则可以使用以下URI:

$ curl http:// localhost:8042 / instances / 609665c0-c5198aa2-8632476b-a00e0de0-e9075d94 / image-uint8> full-8.png
$ curl http:// localhost:8042 / instances / 609665c0-c5198aa2-8632476b-a00e0de0-e9075d94 / image-uint16> full-16.png

在这些图像中,将值裁剪为可以由目标图像格式编码的最大值。该 /instances/{...}/image-int16可作为很好的下载已签名的DICOM像素数据。

从Orthanc 1.4.2开始,还可以以通用PAM格式下载此类图像:

$ curl -H 'Accept:image / x-portable-arbitrarymap'http:// localhost:8042 / instances / 609665c0-c5198aa2-8632476b-a00e0de0-e9075d94 / image-uint16> full-16.pam

Matlab或Octave的用户可以在专用部分中找到相关信息。

通过HTTP / HTTPS将资源发送到远程Orthanc(通过Orthanc对等)

Orthanc可以通过其Rest API通过HTTP / HTTPS将其DICOM实例发送到远程Orthanc。REST API可以触发此过程。

配置

首先,您必须在配置文件中声明远程orthanc的Url 。例如,以下是声明远程orthanc对等方的方法:

... "Peers" : { "sample" : [ "http://localhost:8043" ], // short version "sample2" : { // long version "Url" : "http://localhost:8044", "Username" : "alice", // optional "Password" : "alicePassword", // optional "HttpHeaders" : { "Token" : "Hello world" }, // optional "CertificateFile" : "client.crt", // optional (only if using client certificate authentication) "CertificateKeyFile" : "client.key", // optional (only if using client certificate authentication) "CertificateKeyPassword" : "certpass" // optional (only if using client certificate authentication) }, ...

这样的配置将使Orthanc可以连接到其他两个侦听端口8043和8044上的localhost的Orthanc实例。可以查询Orthanc已知的对等方:

$ curl http:// localhost:8042 / peers?expand

然后也可以通过API更新对等方:

$ curl -v -X PUT http:// localhost:8042 / peers / sample -d '{“ Url”:“ http://127.0.0.1:8043”}'

请注意,默认情况下,对等项存储在Orthanc配置文件中,并且仅在Orthanc内存中更新。如果希望您的修改是持久的,则应配置Orthanc将其对等项存储在数据库中。这是通过以下配置完成的:

... "OrthancPeersInDatabase" : true, ...

发送一个资源

如上所述,一旦您确定了要发送的DICOM资源的Orthanc标识符,就可以使用以下命令发送它:

$ curl -X POST http:// localhost:8042 / peers / sample / store -d c4ec7f68-9b162055-2c8c5888-5bf5752f-155ab19f

/sample/URI 的组件对应于远程模式的标识符,如上面在配置文件中指定的。

请注意,您可以使用此命令发送隔离的DICOM实例,也可以发送整个患者,研究或系列。可以通过一个POST请求发送多个实例:

$ curl -X POST http:// localhost:8042 / peers / sample / store -d '[“ d4b46c8e-74b16992-b0f5ca11-f04a60fa-8eb13a88”,“ d5604121-7d613ce6-c315a5-a77b3cf3-9c253b23”,“ cb855110-5f4da420 -ec9dc9cb-2af6a9bb-dcbd180e“]'

请注意,要发送的资源列表可以包括整个患者,研究或系列的 Orthanc标识符。

使用

如果要通过Internet传输医疗数据,则必须使用HTTPS。

在服务器端,我们建议将Orthanc设置为HTTPS服务器,该服务器将处理TLS。

在客户端,为了让客户端Orthanc识别服务器证书,您必须提供CA(证书颁发机构)证书的路径。这是通过以下配置在配置文件中完成的:

 
... "HttpsCACertificates" : "/etc/ssl/certs/ca-certificates.crt, ...

如果希望服务器仅接受已知主机的传入连接,则可以:

  • 配置防火墙以接受来自已知IP地址的传入连接
  • 配置您的客户端Orthanc以使用客户端证书在服务器上进行身份验证。这是通过做CertificateFileCertificateKeyFile并且CertificateKeyPassword在配置文件中的条目。

将资源发送到远程模式(通过DICOM)

Orthanc可以将其DICOM实例发送到远程DICOM模态(C-Store SCU)。REST API可以触发此过程。

配置

首先,您必须在配置文件中声明AET,远程模式的IP地址和端口号。例如,以下是声明远程模式的方法:

 
... "DicomModalities" : { "sample" : [ "ORTHANCA", "127.0.0.1", 2000 ], // short version "sample2" : { // long version "AET" : "ORTHANCB", "Port" : 2001, "Host" : "127.0.0.1", "Manufacturer" : "Generic", "AllowEcho" : true, "AllowFind" : true, "AllowMove" : true, "AllowStore" : true } }, ...

这样的配置将使Orthanc能够连接到侦听端口2000和2001上的localhost的两个DICOM存储(例如,其他Orthanc实例)。可以查询Orthanc已知的模式:

$ curl http:// localhost:8042 / modalities?expand

然后也可以通过API来更新模式:

$ curl -v -X PUT http:// localhost:8042 / modalities / sample -d '{“ AET”:“ ORTHANCC”,“ Host”:“ 127.0.0.1”,“ Port”:2002}'

请注意,默认情况下,模态存储在Orthanc配置文件中,并且仅在Orthanc内存中更新。如果希望您的修改是持久的,则应配置Orthanc将其模式存储在数据库中。这是通过以下配置完成的:

 
... "DicomModalitiesInDatabase" : true, ...

发送一个资源

如上所述,一旦您确定了要发送的DICOM资源的Orthanc标识符,就可以使用以下命令发送它:

$ curl -X POST http:// localhost:8042 / modalities / sample / store -d c4ec7f68-9b162055-2c8c5888-5bf5752f-155ab19f

/sample/URI 的组件对应于远程模式的标识符,如上面在配置文件中指定的。

请注意,您可以使用此命令发送隔离的DICOM实例,也可以发送整个患者,研究或系列。

批量存储

每次向POST请求时/modalities/.../store,可能会建立一个新的DICOM关联。如果通过为每个实例进行一个REST调用来发送多个隔离的实例,则可能导致大量的通信开销。

为避免此问题,您有两种可能性:

  1. 将配置文件中的DicomAssociationCloseDelay选项 设置为非零值。这将使DICOM连接保持打开状态一定的时间,等待路由新实例。如果使用Lua自动路由图像,这很有用。
  2. 可以通过一个POST请求发送多个实例(所谓的“批量存储SCU”,可从Orthanc 0.5.2获得):
    $ curl -X POST http:// localhost:8042 / modalities / sample / store -d '[“ d4b46c8e-74b16992-b0f5ca11-f04a60fa-8eb13a88”,“ d5604121-7d613ce6-c315a5-a77b3cf3-9c253b23”,“ cb855110-5f4da420 -ec9dc9cb-2af6a9bb-dcbd180e“]'
    

    要发送的资源列表以JSON数组形式给出。在这种情况下,将使用单个DICOM连接。提供示例代码。

    请注意,要发送的资源列表可以包括整个患者,研究或系列的 Orthanc标识符。

使用REST执行查询/检索和查找

Bryan Dearlove提供的板块

Orthanc可用于在本地Orthanc实例上执行查询,或通过REST API在远程模态上执行查询。

要执行远程模态的查询,必须在配置文件中定义模态(请参阅将资源发送到远程模态下的“配置”部分)。

对模态执行查询

要启动查询,请使用要查找的标识符对Modality执行POST命令。在下面的示例中,我们针对模式样本对其中带有单词Chest的任何研究描述执行了研究级别的查询。除非在Orthanc配置文件中另外配置,否则此搜索不区分大小写:

 
$ curl --request POST \ --url http://localhost:8042/modalities/sample/query \ --data '{"Level":"Study","Query": {"PatientID":"","StudyDescription":"*Chest*","PatientName":""}}'

您将收到一个ID,该ID可用于通过GET命令或POST命令的C-Move请求检索更多信息:

 
{ "ID": "5af318ac-78fb-47ff-b0b0-0df18b0588e0", "Path": "/queries/5af318ac-78fb-47ff-b0b0-0df18b0588e0" }

其他选项

您可以通过在搜索中包括*来使用患者标识符。例如,如果您要搜索以Jones开头的名称,则 可以执行以下操作:

 
"PatientName":"Jones*"

如果您想在其中的任何位置搜索带有单词Jo的名称,则可以执行以下操作:

 
"PatientName":"*Jo*"

要执行日期搜索,您可以在StudyDate中指定开始日期和/或之前的日期。例如,"StudyDate":"20180323-" 将搜索指定日期之后的所有学习日期。这样做"StudyDate":"20180323-20180325"会搜索指定日期之间的所有学习日期。

审阅级别

$ curl--request GET --URL http:// localhost:8042 / queries / 5af318ac-78fb-47ff-b0b0-0df18b0588e0 / level

将检索执行查询的级别,研究,系列或实例。

查看模式

$ curl --request GET --url http:// localhost:8042 / queries / 5af318ac-78fb-47ff-b0b0-0df18b0588e0 / modality

将提供原始查询所针对的模式名称。

回顾查询

要检索有关最初使用什么标识符执行查询的信息,可以使用查询过滤器:

$ curl --request GET --url http:// localhost:8042 / queries / 5af318ac-78fb-47ff-b0b0-0df18b0588e0 / query

查看查询答案

您可以通过使用answers参数执行GET来单独查看返回的每个答案:

$ curl --request GET --url http:// localhost:8042 / queries / 5af318ac-78fb-47ff-b0b0-0df18b0588e0 / answers

您将得到一个带有编号标识符的JSON,其中包含每个收到的答案的编号标识符。例如,由于我们执行了研究级别的查询,因此我们返回了5个研究答案。我们可以查询每个答案的内容详细信息:

$ curl --request GET --url http:// localhost:8042 / queries / 5af318ac-78fb-47ff-b0b0-0df18b0588e0 / answers / 0 / content

如果缺少内容项,则可以通过将该标识符添加到原始查询中来添加它们。例如,如果我们希望在初始查询的此JSON答案中列出Modalities,则可以将其添加到POST正文中:“ ModalitiesInStudy”:“”

执行检索(C移动)

您可以执行C-Move,以使用post命令检索原始查询中的所有研究,并标识Modality(在此示例中命名Orthanc)为POST内容中的一个:

$ curl --request POST --url http:// localhost:8042 / queries / 5af318ac-78fb-47ff-b0b0-0df18b0588e0 / retrieve --data Orthanc

您还可以通过指定单个内容项来执行单个C-Move:

$ curl --request POST --url http:// localhost:8042 / queries / 5af318ac-78fb-47ff-b0b0-0df18b0588e0 / answers / 0 / retrieve --data Orthanc

如果C-Move花费的时间太长(例如,执行大型研究的C-Move),则可以异步方式运行请求,这将在Orthanc中创建作业:

$ curl --request POST --url http:// localhost:8042 / queries / 5af318ac-78fb-47ff-b0b0-0df18b0588e0 / retrieve \ --data '{“ TargetAet”:“ Orthanc”,“ Synchronous”:false} '

此POST请求的答案是负责C-Move的作业ID:

 
{ "ID" : "11541b16-e368-41cf-a8e9-3acf4061d238", "Path" : "/jobs/11541b16-e368-41cf-a8e9-3acf4061d238" }

在Orthanc中执行查找

在Orthanc中执行查找与使用针对DICOM模式的查询非常相似,并且上面列出的其他选项也可以与find一起使用。执行查找时,您将收到查找中所有匹配项的Orthanc ID。例如,如果您执行研究级别的查找并且有5个研究匹配,您将以JSON格式接收5个研究级别的Orthanc ID作为响应:

$ curl --request POST --url http:// localhost:8042 / tools / find --data '{“ Level”:“ Instance”,“ Query”:{“ Modality”:“ CR”,“ StudyDate”: “ 20180323-”,“患者ID”:“ *”}}'

其他选项

您还可以通过在POST消息的正文中指定一个限制来限制响应。例如:

 
"Limit":4

跟踪更改

每当Orthanc收到新的DICOM实例时,此事件就会记录在所谓的“更改日志”中。这使远程脚本可以对新DICOM资源的到来做出反应。典型的应用程序是 自动路由,其中外部脚本等待新的DICOM实例进入Orthanc,然后将该实例转发到另一个模式。

可以通过以下命令访问更改日志:

$ curl http:// localhost:8042 /changes

这是一个典型的输出:

{ "Changes" : [ { "ChangeType" : "NewInstance", "Date" : "20130507T143902", "ID" : "8e289db9-0e1437e1-3ecf395f-d8aae463-f4bb49fe", "Path" : "/instances/8e289db9-0e1437e1-3ecf395f-d8aae463-f4bb49fe", "ResourceType" : "Instance", "Seq" : 921 }, { "ChangeType" : "NewSeries", "Date" : "20130507T143902", "ID" : "cceb768f-e0f8df71-511b0277-07e55743-9ef8890d", "Path" : "/series/cceb768f-e0f8df71-511b0277-07e55743-9ef8890d", "ResourceType" : "Series", "Seq" : 922 }, { "ChangeType" : "NewStudy", "Date" : "20130507T143902", "ID" : "c4ec7f68-9b162055-2c8c5888-5bf5752f-155ab19f", "Path" : "/studies/c4ec7f68-9b162055-2c8c5888-5bf5752f-155ab19f", "ResourceType" : "Study", "Seq" : 923 }, { "ChangeType" : "NewPatient", "Date" : "20130507T143902", "ID" : "dc65762c-f476e8b9-898834f4-2f8a5014-2599bc94", "Path" : "/patients/dc65762c-f476e8b9-898834f4-2f8a5014-2599bc94", "ResourceType" : "Patient", "Seq" : 924 } ], "Done" : true, "Last" : 924 }

此输出对应于Orthanc接收到一个DICOM实例。它记录了Orthanc内部已经创建了新实例,新系列,新研究和新患者。请注意,每个更改都用a ChangeType,a Date(ISO格式),Orthanc中资源的位置和序列号(Seq)标记。

请注意,此调用是非阻塞的。由调用程序等待新事件的发生(通过实现轮询循环)。

该调用仅返回固定数量的事件,可以使用以下limit选项更改:

$ curl http:// localhost:8042 / changes?limit = 100

该标志Last记录最后返回的事件的序列号。如果在此最后返回的事件之后没有发生其他事件Donetrue则将该标志设置为。如果Done将设置为 false,则进一步的事件可用并且可以检索。这是通过设置since选项来完成的,该选项指定必须从哪个序列号返回更改:

$ curl'http :// localhost:8042 / changes?limit = 100&since = 922'

甲在源分配的示例代码 示出了如何使用此变化API来实现轮询循环。

从Orthanc删除资源

删除患者,研究,系列或实例

从Orthanc删除DICOM资源(即患者,研究,系列或实例)就像在此资源的URI上使用HTTP DELETE一样简单。

具体而言,您将首先按照上述说明探索Orthanc中存储的资源:

 
$ curl http://localhost:8042/patients $ curl http://localhost:8042/studies $ curl http://localhost:8042/series $ curl http://localhost:8042/instances

其次,一旦发现要删除的资源,您将使用以下命令行语法删除它们:

$ curl -X DELETE http:// localhost:8042 / patients / dc65762c-f476e8b9-898834f4-2f8a5014-2599bc94
$ curl -X DELETE http:// localhost:8042 / studies / c4ec7f68-9b162055-2c8c5888-5bf5752f-155ab19f
$ curl -X DELETE http:// localhost:8042 / series / cceb768f-e0f8df71-511b0277-07e55743-9ef8890d
$ curl -X DELETE http:// localhost:8042 / instances / 8e289db9-0e1437e1-3ecf395f-d8aae463-f4bb49fe

变化的清除日志

如上所述,Orthanc跟踪DICOM存储中发生的所有更改。可通过以下URI访问此所谓的“更改日志”:

 
$ curl http://localhost:8042/changes

要清除更改日志的内容,只需删除以下URI:

 
$ curl -X DELETE http://localhost:8042/changes

出口资源的日志

为了实现医疗可追溯性,可以将Orthanc配置为存储所有已导出到远程模式的资源的日志:

 
$ curl http://localhost:8042/exports

在自动路由方案中,重要的是要防止此日志在路由传入实例时无限期增长。您可以通过 在配置文件中将选项设置为LogExportedResources来禁用此日志记录,也可以通过删除以下URI定期清除此日志:false

$ curl -X DELETE http:// localhost:8042 / exports

注意:从Orthanc 1.4.0开始,默认情况下LogExportedResources设置为false。如果需要记录,请将此选项设置为 true

匿名和修改

匿名和修改DICOM资源的过程 记录在单独的页面中。

进一步阅读

上面的示例向您展示了通过其REST API驱动Orthanc实例的基本原理。没有描述API的所有可能性:

  • REST API的高级功能可以在另一页上找到。
  • 一个FAQ条目列表,你可以找到的Orthanc REST API的更先进的样品。
  • REST API的完整文档保留为在线电子表格,可从官方网站的文档部分访问 (单击REST API参考按钮)。
  • 在的OpenAPI /扬鞭格式的REST API的文档 可以作为工作正在进行中。