本文介绍如何使用阿里云多款产品,实现云上部署医学数字成像和通信DICOM服务。
什么是DICOM
DICOM是传输、存储、检索、打印、处理和显示医学成像信息的国际标准,并且是医疗保健行业接受的主要医学成像标准。在数以万计的在用医学成像设备中,DICOM是部署最为广泛的医疗信息标准之一。DICOM确保医学影像符合质量标准,因而可以保证诊断准确性。大多数成像方式,包括计算机断层扫描 (CT)、磁共振成像 (MRI) 和超声扫描,都必须符合DICOM标准。更多信息,请参见DICOM。
方案架构
DICOM服务部署架构图如下:

部署架构图中涉及各项云服务的用途说明如下:
-
函数计算(FC):用于处理用户请求,提供请求鉴权以及资源访问控制服务,并路由至DICOMweb服务。
-
专有网络VPC:基于阿里云创建的自定义私有网络, 不同的专有网络之间二层逻辑隔离,您可以在自建的专有网络内创建和管理云产品实例,例如ECS实例、RDS PostgreSQL数据库实例等。
-
Serverless应用引擎(SAE):用于处理DICOMweb协议,将DICOM文件存储到OSS,将结构化数据存储到RDS PostgreSQL数据库实例。
-
云服务器ECS:部署三台ECS实例。其中一台ECS实例用于部署DICOM管理模块,提供基于UI的管理界面。另外两台ECS实例分别用于部署两套LDAP服务,LDAP服务之间通过镜像模式同步数据。
-
RDS PostgreSQL数据库实例:用于存储结构化的DICOM资源。
-
对象存储OSS:用于存储非结构化的DICOM资源。
前提条件
-
已创建企业版实例。具体操作,请参见创建企业版实例。
-
已推送下列镜像到企业版实例。具体操作,请参见使用企业版实例推送和拉取镜像。
下表中的acr-ee-***代表实例名称。
hub.docker.com源
镜像推送至企业版实例后的路径
acr-ee-***-registry.cn-shanghai.cr.aliyuncs.com/dicom/slapd-dcm4chee:2.6.0-25.0
acr-ee-***-registry.cn-shanghai.cr.aliyuncs.com/dicom/dcm4chee-arc-psql:5.25.0
acr-ee-***-registry.cn-shanghai.cr.aliyuncs.com/dicom/dcm4che-tools:5.25.0
acr-ee-***-registry.cn-shanghai.cr.aliyuncs.com/dicom/nginx:1.21.4
-
已下载适配PostgreSQL数据库的发布包。下载地址,请参见dcm4chee-arc-5.25.0-psql.zip。
-
已在华东2(上海)地域创建名为examplebucket的存储空间。创建存储空间的具体操作,请参见控制台创建存储空间。
步骤一:创建专有网络和交换机
鉴于不同的专有网络之间的二层逻辑隔离,您可以通过专有网络来管理云产品实例,例如ECS实例、RDS PostgreSQL数据库实例等。创建专有网络后,您可以通过创建交换机为专有网络划分一个或多个子网。同一专有网络内的不同交换机之间内网互通。
步骤二:创建并配置RDS PostgreSQL数据库实例
创建RDS PostgreSQL数据库实例用于存储结构化的DICOM资源。RDS PostgreSQL实例创建完成后,您需要进行白名单设置等操作,确保能正常访问该实例。
-
创建RDS PostgreSQL数据库实例。
-
登录RDS售卖页面。
-
在基础资源页签,配置以下参数,然后单击下一步:实例配置。
配置项
示例值
计费方式
按需选择按量付费或包年包月。
地域
选择华东 2 (上海)。
类型
选择PostgreSQL数据库,并从下拉列表中选择引擎13。
系列
选择高可用版。
存储类型
选择ESSD PL3 云盘。
主节点可用区
选择上海 可用区L。
备节点可用区
选择上海可用区G。
实例规格
选择CPU核数为2、内存为4 GB、最大连接数为400的通用型规格实例。
存储空间
选择1500 GB。
-
在实例配置页面,按如下说明配置各项参数,其他保留默认配置,然后单击下一步:确认订单。
-
-
配置RDS PostgreSQL数据库实例。
创建RDS PostgreSQL实例后,您需要完成以下各项操作,才能正常访问该RDS实例。
-
为已创建的RDS PostgreSQL实例创建账号和数据库。具体操作,请参见创建账号和数据库。
-
为RDS PostgreSQL数据库实例设置白名单。具体操作,请参见设置白名单。
-
连接RDS PostgreSQL实例。具体操作,请参见连接PostgreSQL实例。
-
步骤三:部署LDAP服务
基于dcm4che/slapd-dcm4chee镜像,采用OpenLDAP复制策略部署LDAP服务的操作步骤如下:
-
创建两台ECS实例,分别命名为
ecs-dicom-ldap-l-01和ecs-dicom-ldap-g-01。具体操作,请参见通过控制台使用ECS实例(快捷版)。通过云服务器ECS管理控制台创建ECS实例
ecs-dicom-ldap-l-01时,按以下要求完成指定配置项,其他选项保留默认配置。配置项
示例值
地域
选择华东 2 (上海)。
可用区
选择可用区L。
存储
选择普通云盘、40 GiB、PL0(单盘IOPS性能上限1万)。
规格
选择共享标准型s6 / ecs.s6-c1m2.large(2vCPU 4GiB)。
专有网络
选择步骤一中创建的VPC:
vpc-dicom-sh。公共镜像
选择Ubuntu 18.04 64位
ecs-dicom-ldap-l-01实例创建完成后,请参照以上配置项创建ecs-dicom-ldap-g-01,区别仅在于可用区需选择可用区G。 -
登录ECS实例,执行以下命令完成初始化操作。
apt-get update apt-get upgrade -y apt install ca-certificates curl gnupg pass lsb-release docker docker-compose ldap-utils -y -
执行以下命令从容器镜像服务ACR企业版实例中拉取镜像。
docker login --username=****@test.aliyunid.com acr-ee-***-registry-vpc.cn-shanghai.cr.aliyuncs.com docker pull acr-ee-***-registry-vpc.cn-shanghai.cr.aliyuncs.com/dicom/slapd-dcm4chee:2.6.0-25.0 -
分别为以上创建的两台ECS实例
ecs-dicom-ldap-l-01和ecs-dicom-ldap-g-01配置镜像启动脚本。-
ecs-dicom-ldap-l-01的docker-compose.yml启动脚本配置如下:version: "3" services: ldap1: image: acr-ee-***-registry-vpc.cn-shanghai.cr.aliyuncs.com/dicom/slapd-dcm4chee:2.6.0-25.0 environment: LDAP_URLS: "ldap://ldap1:389/" LDAP_REPLICATION_HOSTS: "ldap://ldap1:389/ ldap://172.18.18.105:389/" ports: - "389:389" volumes: - /var/local/dcm4chee-arc/ldap:/var/lib/openldap/openldap-data - /var/local/dcm4chee-arc/slapd.d:/etc/openldap/slapd.d -
ecs-dicom-ldap-g-01的docker-compose.yml启动脚本配置如下:version: "3" services: ldap2: image: acr-ee-***-registry-vpc.cn-shanghai.cr.aliyuncs.com/dicom/slapd-dcm4chee:2.6.0-25.0 environment: LDAP_URLS: "ldap://ldap2:389/" LDAP_REPLICATION_HOSTS: "ldap://172.18.92.187:389/ ldap://ldap2:389/" SKIP_INIT_CONFIG: "true" ports: - "389:389" volumes: - /var/local/dcm4chee-arc/ldap:/var/lib/openldap/openldap-data - /var/local/dcm4chee-arc/slapd.d:/etc/openldap/slapd.d
-
-
在docker-compose.yml同级目录下,执行以下操作。
-
启动LDAP服务。
docker-compose -p dcm4chee up -d -
获取LDAP容器ID。
docker container ls -
开启同步功能。
docker exec <ldap-container-id> prepare-replication docker exec <ldap-container-id> enable-replication -
可选:查看同步配置状态。
# -xw****为启动LDAP服务时配置的密钥。该参数可通过LDAP_ROOTPASS环境变量进行配置,默认值为secret。 ldapsearch -LLLsbase -xw**** -Dcn=admin,dc=dcm4che,dc=org -b "dicomDeviceName=dcm4chee-arc,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org" dicomVendorData | head同步任务启动成功后,返回如下信息:
dn: dicomDeviceName=dcm4chee-arc,cn=Devices,cn=DICOM Configuration,dc=dcm4che, dc=org dicomVendorData:: UEsDBBQAAAAAAKVbclMAAAAAAAAAAAAAAAALAAAAdGh1bWJuYWlscy9QSwME FAACAAgANWxIUhxjQjGkBgAAeQcAABEAAAB0aHVtYm5haWxzL2tvLnBuZ83V+zub5xsA8JdQh1Bpa ****说明除以上配置项以外,slapd-dcm4chee镜像还支持配置其他参数。更多信息,请参见dcm4che-dockerfiles。
-
-
创建负载均衡CLB实例。
-
在实例管理页面,单击创建传统型负载均衡。
-
在实例购买页面,根据以下要求完成指定配置项,其他选项保留默认配置。
配置项
示例值
地域和可用区
地域选择华东 2 (上海),可用区选择华东 2 可用区 L。
备可用区
选择华东 2 可用区 G。
实例名称
输入slb-dicom-ldap。
实例规格
选择简约型(slb.s1.small)。
实例类型
选择私网。
网络类型
选择专有网络
专有网络
选择步骤一中创建的VPC:
vpc-dicom-sh。 -
单击立即购买,然后按照页面指引完成订单支付。
-
配置负载均衡CLB实例。
-
在实例管理页面,找到目标实例
slb-dicom-ldap,然后在操作列单击监听配置向导。 -
在协议&监听配置向导,负载均衡协议选择TCP、监听端口选择389,然后单击下一步。
-
在后端服务器配置向导,单击主备服务器组,然后选择已创建的服务器组ecs-dicom-ldap-l-01和ecs-dicom-ldap-g-01。
-
步骤四:部署DICOM管控服务
以下步骤为基于dcm4che/dcm4chee-arc-psql镜像部署DICOM管控服务,该服务主要用于为运维人员提供管理和查询页面。本示例中采用单点部署,您可以根据实际的业务情况,选择其他部署方案。
-
创建名为
ecs-dicom-arc-l-01的ECS实例。具体操作,请参见通过控制台使用ECS实例(快捷版)。通过云服务器ECS管理控制台创建ECS实例
ecs-dicom-arc-l-01时,按以下要求完成指定配置项,其他选项保留默认配置。配置项
示例值
地域
选择华东 2 (上海)。
可用区
选择可用区L。
存储
选择普通云盘、100 GiB、PL0(单盘IOPS性能上限1万)。
规格
选择通用型 g7 / ecs.g7.xlarge(4vCPU 16 GiB)。
专有网络
选择步骤一中创建的VPC:
vpc-dicom-sh。公共镜像
选择Ubuntu 18.04 64位
-
登录ECS实例,执行以下命令完成初始化操作。
apt-get update apt-get upgrade -y apt install ca-certificates curl gnupg pass lsb-release docker docker-compose postgresql-client-10 -y -
执行以下命令从容器镜像服务ACR企业版实例中拉取镜像。
docker login --username=****@test.aliyunid.com acr-ee-***-registry-vpc.cn-shanghai.cr.aliyuncs.com docker pull acr-ee-***-registry-vpc.cn-shanghai.cr.aliyuncs.com/dicom/dcm4chee-arc-psql:5.25.0 -
初始化数据库。
-
将
dcm4chee-arc-5.25.0-psql.zip压缩包上传到ECS的/home目录下,然后解压。 -
执行以下命令创建表和索引。
psql -h pgm-uf***.pg.rds.aliyuncs.com pacsdb pacs < /home/dcm4chee-arc-5.25.0-psql/sql/create-psql.sql psql -h pgm-uf***.pg.rds.aliyuncs.com pacsdb pacs < /home/dcm4chee-arc-5.25.0-psql/sql/create-fk-index.sql psql -h pgm-uf***.pg.rds.aliyuncs.com pacsdb pacs < /home/dcm4chee-arc-5.25.0-psql/sql/create-case-insensitive-index.sql
-
-
配置启镜像启动脚本。
-
执行以下命令配置
docker-compose.yml文件。version: "3" services: arc: image: acr-ee-***-registry-vpc.cn-shanghai.cr.aliyuncs.com/dicom/dcm4chee-arc-psql:5.25.0 logging: driver: json-file options: max-size: "10m" ports: - "8080:8080" - "8443:8443" - "9990:9990" - "9993:9993" - "11112:11112" - "2762:2762" - "2575:2575" - "12575:12575" env_file: docker-compose.env environment: WILDFLY_CHOWN: /opt/wildfly/standalone volumes: - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - /var/local/dcm4chee-arc/wildfly:/opt/wildfly/standalone -
执行以下命令配置
docker-compose.env文件。其中,LDAP指向
ecs-dicom-ldap-l-01。POSTGRES_DB=pacsdb POSTGRES_USER=pacs POSTGRES_PASSWORD=pacs*** POSTGRES_HOST=pgm-uf***.pg.rds.aliyuncs.com LDAP_URL=ldap://172.18.92.187:389 -
在
docker-compose.yml同级目录下,执行以下命令启动容器镜像服务ARC。docker-compose -p dcm4chee up -d -
可选:执行以下命令查看容器镜像服务ARC启动状态。
tail -f /var/local/dcm4chee-arc/wildfly/log/server.log
-
-
添加OSS存储介质。
-
创建
ldap_config.ldif文件,并通过LDAP的ldapadd导入配置参数。ldap_config.ldif配置内容如下:version: 1 dn: dcmStorageID=alicloud-oss,dicomDeviceName=dcm4chee-arc,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org objectClass: dcmStorage dcmStorageID: alicloud-oss dcmURI: jclouds:s3:https://oss-cn-shanghai-internal.aliyuncs.com dcmDigestAlgorithm: MD5 dcmProperty: container=examplebucket dcmProperty: jclouds.s3.virtual-host-buckets=true dcmProperty: credential=<secret-key> dcmProperty: identity=<access-key> dcmProperty: jclouds.strip-expect-header=true dcmProperty: containerExists=true dcmProperty: jclouds.trust-all-certs=true -
执行以下命令导入配置文件。
# -xw****为启动LDAP时配置的密钥。 #172.18.92.175 ldapadd -xw**** -D cn=admin,dc=dcm4che,dc=org -H ldap://172.18.92.187:389 -f ldap_config.ldif
-
-
配置OSS作为存储后端。
-
创建
ldap_config.ldif文件,并通过LDAP的ldapadd导入配置参数。ldap_config.ldif配置内容如下:version: 1 dn: dicomAETitle=DCM4CHEE,dicomDeviceName=dcm4chee-arc,cn=Devices,cn=DICOM Configuration,dc=dcm4che,dc=org changetype: modify replace: dcmObjectStorageID dcmObjectStorageID: alicloud-oss -
执行以下命令导入配置文件。
ldapmodify -xw**** -D cn=admin,dc=dcm4che,dc=org -H ldap://172.18.92.187:389 -f ldap_config.ldif
-
-
执行以下命令导入测试数据。
docker run --network=dcm4chee_default --rm acr-ee-***-registry-vpc.cn-shanghai.cr.aliyuncs.com/dicom/dcm4che-tools:5.25.0 storescu -cDCM4CHEE@dcm4chee_arc_1:11112 /opt/dcm4che/etc/testdata/dicom
步骤五:部署DICOMweb服务
您需要在SAE应用中部署DICOMweb服务,部署完成后可添加私网SLB实现同VPC内所有应用间的互相访问。
-
创建应用。
-
在左侧导航栏,单击应用列表,然后单击创建应用 。
-
在应用基本信息页面,按如下要求完成各配置项,然后单击下一步:应用部署配置。
配置项
示例值
应用名称
输入DicomSerivce。
专有网络配置
选择自定义配置,然后在右侧下拉选择已创建的VPC
vpc-dicom-sh。命名空间
选择默认。
vSwitch
选择已创建的交换机
vsw-dicom-sh-l和vsw-dicom-sh-g。安全组
选择已有的安全组。如果此前未创建安全组,请按照界面指引创建新的安全组。
应用实例数
选择2。
VCPU
选择8 Core。
内存
选择32 GiB。
-
在应用部署配置页面,按如下要求完成指定配置项,其他选项保持默认配置,然后单击下一步:确认规格。
配置项
示例值
应用部署方式
选择镜像。
配置镜像
选择我的阿里云镜像,并设置为dicom/dcm4chee-arc-psql:5.25.0 。
环境变量
输入以下内容:
POSTGRES_USER = pacs POSTGRES_HOST = pgm-uf**.pg.rds.aliyuncs.com POSTGRES_PASSWORD = pacs**** POSTGRES_DB = pacsdb LDAP_URL = ldap://172.18.92.189:389 -
按界面指引完成应用的创建。创建完成后,实例分配的IP地址分别为
172.18.92.190和172.18.18.113。
-
为已创建的应用添加私网SLB访问,然后将HTTP端口配置为
8080。具体操作,请参见为应用绑定CLB。配置完成后,您可以获取到的私网访问地址为
172.18.92.191:8080。 -
登录名为
ecs-dicom-arc-l-01的ECS实例,依次执行如下命令测试部署的实例以及私网SLB是否正常运行。curl -v "http://172.18.92.190:8080/dcm4chee-arc/aets/DCM4CHEE/rs/patients?limit=21&includefield=all&offset=0" curl -v "http://172.18.18.113:8080/dcm4chee-arc/aets/DCM4CHEE/rs/patients?limit=21&includefield=all&offset=0" curl -v "http://172.18.92.191:8080/dcm4chee-arc/aets/DCM4CHEE/rs/patients?limit=21&includefield=all&offset=0"正常情况返回信息如下:
HTTP/1.1 200 OK < Date: Thu, 23 Dec 2021 13:25:25 GMT < Content-Type: application/dicom+json < Transfer-Encoding: chunked < Connection: keep-alive < Access-Control-Allow-Origin: * < Cache-Control: no-cache < Access-Control-Allow-Headers: origin, content-type, accept, authorization < Access-Control-Allow-Credentials: true < Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS, HEAD < * Connection #0 to host 172.18.92.191 left intact [{"00100010":{"vr":"PN","Value":[{"Alphabetic":"DOE^J1"}]},"00100020":{"vr":"LO","Value":["583295"]},"00100021":{"vr":"LO"},"00100030":{"vr":"DA"},"00100040":{"vr":"CS","Value":["M"]},"00201200":{"vr":"IS","Value":["1"]},"77770010":{"vr":"LO","Value":["DCM4CHEE Archive 5"]},"77771010":{"vr":"DT","Value":["20211223143303.778+0000"]},"77771011":{"vr":"DT","Value":["20211223143303.786+0000"]}
步骤六:部署访问网关
通过在函数计算中部署Nginx代理来转发请求,以提供访问管控和资源隔离的能力。
-
构建反向代理镜像。
-
登录名为
ecs-dicom-arc-l-01的ECS实例,在配置文件default.conf.template中编写转发规则。default.conf.template配置内容如下:upstream dicom_server { server ${DICOM_SERVER_HOST}:${DICOM_SERVER_PORT}; } upstream ${DICOM_CUSTOM_DOMAIN} { server ${DICOM_SERVER_HOST}:${DICOM_SERVER_PORT}; } server { listen 80; server_name localhost; location ~/${DICOM_FUNCTION_PATH}/dcm4chee-arc/aets/DCM4CHEE/(rs|wado|dimes)/(.+){ proxy_pass http://dicom_server/dcm4chee-arc/aets/DCM4CHEE/$1/$2; } location ~/dcm4chee-arc/aets/DCM4CHEE/(rs|wado|dimes)/(.+){ proxy_pass http://${DICOM_CUSTOM_DOMAIN}/dcm4chee-arc/aets/DCM4CHEE/$1/$2; } location / { return 403; } } -
在与
default.conf.template文件同级目录下,编写Dockerfile文件,内容如下:FROM acr-ee-test-registry-vpc.cn-shanghai.cr.aliyuncs.com/dicom/nginx:1.21.4 RUN mkdir -p /etc/nginx/templates/ COPY default.conf.template /etc/nginx/templates/default.conf.template -
执行如下命令生成镜像,并推送到容器镜像服务中,待后续配置函数计算时使用。
docker build -t acr-ee-***-registry-vpc.cn-shanghai.cr.aliyuncs.com/dicom/nginx:1.21.4-dicom-revproxy-0.1 . docker push acr-ee-***-registry-vpc.cn-shanghai.cr.aliyuncs.com/dicom/nginx:1.21.4-dicom-revproxy-0.1
-
-
配置域名解析到您的函数计算对应地域的Endpoint。具体操作,请参见配置域名解析。
-
创建服务。
登录函数计算控制台。
-
在左侧导航栏,单击服务及函数。
-
在顶部菜单栏,选择华东2(上海)地域。
-
在服务列表页面,单击创建服务。
-
在创建服务页面,填写服务名称dicomweb,然后单击确定。
-
编辑服务。
-
在服务列表页面,单击已创建的服务dicomweb右侧操作栏下的配置。
-
在编辑服务页面,角色配置、日志配置、链路追踪配置、存储配置区域均保持默认选项。仅需按如下要求完成网络配置区域的指定配置项。
配置项
示例值
允许函数访问 VPC 内资源
选中是。
配置方式
选中自定义配置。
专有网络
选择已创建的专有网络vpc-dicom-sh。
交换机
选择已创建的交换机vsw-dicom-sh-g。
允许函数访问公网
选中否。
仅允许指定 VPC 调用函数
选中否。
-
-
创建函数。
-
单击已创建的服务名称
dicomweb。 -
在函数管理页面,单击创建函数。
-
在创建函数页面,选中使用容器镜像创建,按如下要求完成指定配置项,其他选项保持默认配置。
配置项
示例值
名称
填写do。
容器镜像
选择acr-ee-***-registry-vpc.cn-shanghai.cr.aliyuncs.com/dicom/nginx:1.21.4-dicom-revproxy-0.1。
监听端口
输入80。
运行环境
选择Custom Container。
单实例并发数
选择100。
内存规格
选择4 GB。
环境变量
输入以下内容:
# 填写为函数绑定的自定义域名。 DICOM_CUSTOM_DOMAIN = www.dicomweb-***.com # 填写测试接口调用请求地址中的PATH。 DICOM_FUNCTION_PATH = 2016-08-15/proxy/dicomweb.LATEST/do # 填写步骤五生成的私网访问地址。 DICOM_SERVER_HOST = 172.18.92.191 # 填写步骤五配置的端口号。 DICOM_SERVER_PORT = 8080重要启动通过函数计算Custom Container方式创建的访问网关服务时,耗时会达到200~300ms。您可以通过配置预留实例的方式降低冷启动对业务的影响。结合本示例场景,最小实例数配置为1,其他参数保持默认配置。其他场景请结合实际情况进行配置。具体操作,请参见弹性管理(含预留模式)。
-
-
添加自定义域名
www.dicomweb-***.com并添加路由配置。具体操作,请参见添加自定义域名。按指定要求完成路由设置,其他选项保留默认配置。
配置项
示例值
路径
设置为/dcm4chee-arc/aets/DCM4CHEE/*。
服务名称
选择dicomweb。
函数名称
选择do。
版本或别名
选择LATEST。
-
测试接口调用情况。
-
单击创建的函数do。
-
单击触发器管理页签,记录同步创建的触发器右侧的中的请求地址 http://13****.cn-shanghai.fc.aliyuncs.com/2016-08-15/proxy/dicomweb.LATEST/do/。
-
通过以下两种方式测试接口调用情况。
-
通过默认地址测试接口调用情况
-
查询patients信息
curl -v "http://13****.cn-shanghai.fc.aliyuncs.com/2016-08-15/proxy/dicomweb.LATEST/do/dcm4chee-arc/aets/DCM4CHEE/rs/patients?limit=21&includefield=all&offset=0"正常情况下返回如下信息:
[{"00100010":{"vr":"PN","Value":[{"Alphabetic":"DOE^J1"}]},"00100020":{"vr":"LO","Value":["583295"]},"00100030":{"vr":"DA"},"00100040":{"vr":"CS","Value":["M"]}}] -
查询PatientID为583295的studies信息:
curl -v "http://www.dicomweb-***.com//dcm4chee-arc/aets/DCM4CHEE/rs/studies?limit=21&includefield=all&offset=0&PatientID=583295"正常情况下返回如下信息:
[{"00080020":{"vr":"DA","Value":["20170716"]},"00080030":{"vr":"TM","Value":["154736"]},"00080050":{"vr":"SH","Value":["MOF5026"]},"00080054":{"vr":"AE","Value":["DCM4CHEE"]},"00080056":{"vr":"CS","Value":["ONLINE"]},"00080061":{"vr":"CS","Value":["MR"]},"00080090":{"vr":"PN","Value":[{"Alphabetic":"NELL^FREDERICK^P^DR"}]},"00081190":{"vr":"UR","Value":["http://dicom_server/dcm4chee-arc/aets/DCM4CHEE/rs/studies/1.113654.3.13.1026"]},"00100010":{"vr":"PN","Value":[{"Alphabetic":"DOE^J1"}]},"00100020":{"vr":"LO","Value":["583295"]},"00100030":{"vr":"DA"},"00100040":{"vr":"CS","Value":["M"]},"0020000D":{"vr":"UI","Value":["1.113654.3.13.1026"]},"00200010":{"vr":"SH","Value":["RP1026"]},"00201206":{"vr":"IS","Value":["1"]},"00201208":{"vr":"IS","Value":["16"]}}]
-
-
通过域名的方式测试接口调用情况
-
查询patients信息:
curl -v "http://www.dicomweb-***.com/dcm4chee-arc/aets/DCM4CHEE/rs/patients?limit=21&includefield=all&offset=0"正常情况下返回如下信息:
[{"00100010":{"vr":"PN","Value":[{"Alphabetic":"DOE^J1"}]},"00100020":{"vr":"LO","Value":["583295"]},"00100030":{"vr":"DA"},"00100040":{"vr":"CS","Value":["M"]}}] -
查询PatientID为583295的studies信息:
curl -v "http://www.dicomweb-***.com/dcm4chee-arc/aets/DCM4CHEE/rs/studies?limit=21&includefield=all&offset=0&PatientID=583295"正常情况下返回如下信息:
[{"00080020":{"vr":"DA","Value":["20170716"]},"00080030":{"vr":"TM","Value":["154736"]},"00080050":{"vr":"SH","Value":["MOF5026"]},"00080054":{"vr":"AE","Value":["DCM4CHEE"]},"00080056":{"vr":"CS","Value":["ONLINE"]},"00080061":{"vr":"CS","Value":["MR"]},"00080090":{"vr":"PN","Value":[{"Alphabetic":"NELL^FREDERICK^P^DR"}]},"00081190":{"vr":"UR","Value":["http://www.dicomweb-***.com/dcm4chee-arc/aets/DCM4CHEE/rs/studies/1.113654.3.13.1026"]},"00100010":{"vr":"PN","Value":[{"Alphabetic":"DOE^J1"}]},"00100020":{"vr":"LO","Value":["583295"]},"00100030":{"vr":"DA"},"00100040":{"vr":"CS","Value":["M"]},"0020000D":{"vr":"UI","Value":["1.113654.3.13.1026"]},"00200010":{"vr":"SH","Value":["RP1026"]},"00201206":{"vr":"IS","Value":["1"]},"00201208":{"vr":"IS","Value":["16"]}}] -
上传DICOM数据:
echo -ne "\r\n--myboundary\r\nContent-Type: application/dicom\r\n\r\n" > mime.dicom.head echo -ne "\r\n--myboundary--" > mime.tail cat mime.dicom.head dicom-file1.dcm mime.tail > dicom.mime curl -X POST -H "Content-Type: multipart/related; type=\"application/dicom\"; boundary=myboundary" http://www.dicomweb-***.com/dcm4chee-arc/aets/DCM4CHEE/rs/studies --data-binary @dicom.mime正常情况下返回如下信息:
{"00081190":{"vr":"UR","Value":["http://www.dicomweb-***.com/dcm4chee-arc/aets/DCM4CHEE/rs/studies/2.25.69929638918751914792556351597790946979"]},"00081199":{"vr":"SQ","Value":[{"00081150":{"vr":"UI","Value":["2.25.326410046515557697819279767240864278552"]},"00081155":{"vr":"UI","Value":["2.25.117261743442166561672617116550216377921"]},"00081190":{"vr":"UR","Value":["http://www.dicomweb-***.com/dcm4chee-arc/aets/DCM4CHEE/rs/studies/2.25.69929638918751914792556351597790946979/series/2.25.144996685350575051252979153755370108609/instances/2.25.117261743442166561672617116550216377921"]}}]}}
-
-
-
-
配置访问鉴权。
默认情况下,支持匿名调用触发器函数,即任何人都可以发送请求来调用函数。请通过以下步骤配置访问鉴权,从而降低函数调用的风险。
-
在已创建函数的触发器管理中开启认证功能。具体操作,请参见触发器管理。
-
访问触发器函数。
-
通过默认域名访问触发器函数
以下以Python SDK通过默认域名调用触发器函数为例,其他语言访问触发器函数的示例,请参见使用SDK执行HTTP触发器函数。
import fc2 client = fc2.Client( endpoint='http://13**.cn-shanghai.fc.aliyuncs.com', # 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。 accessKeyID = 'yourAccessKeyId', accessKeySecret = 'yourAccessKeySecret' params = { 'offset': '0', 'includefield': 'all', 'limit': '21', } req = client.do_http_request( "GET", "dicom.LATEST", "do", "dcm4chee-arc/aets/DCM4CHEE/rs/patients", headers={}, params=params) print (req) -
通过自定义域名访问触发器函数
# -*- coding: utf-8 -*- import requests import fc2 import email fc_host = 'http://www.dicomweb-***.com' fc_path = '/dcm4chee-arc/aets/DCM4CHEE/rs/studies' client = fc2.Client( endpoint='http://13**.cn-shanghai.fc.aliyuncs.com', # 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。 accessKeyID = 'yourAccessKeyId', accessKeySecret = 'yourAccessKeySecret' headers = { 'date': email.utils.formatdate(usegmt=True), 'content-type': 'application/json', 'content-length': '0', } params = { 'offset': '0', 'includefield': 'all', 'limit': '21', } headers['authorization'] = client.auth.sign_request("GET", fc_path, headers, unescaped_queries=params) response = requests.get(fc_host + fc_path, headers=headers, params=params) print (response)
-
-