介绍如何将PACS存储服务器和医疗Web查看器部署到Microsoft Azure应用程序服务中。应用程序服务是平台即服务(PaaS)。使用App Services部署医疗web查看器不像将其部署到虚拟机(VM)那样直接。应用程序服务也不能像虚拟机那样控制托管服务的机器。然而,通过Azure门户管理App Services会更容易。有关更多信息,请参见https://docs.microsoft.com/en-us/azure/architecture/guide/technology-choices/compute-decision-tree.
有两种不同的方法来设置组件:
选项1:在Azure上托管web服务、web客户机和数据库。使用web客户端存储DICOM文件,这些文件将存储在本地App Service驱动器上。
选项2:在Azure上托管web服务、web客户机、DICOM文件和数据库。该解决方案更适合于企业解决方案。使用LEADTOOLS Storage Server是管理DICOM文件的好方法。
下面的说明适用于选项1和选项2。[有一个步骤只适用于选项2。这一步是对高级模式的额外编辑。配置文件,包含在主题末尾的“选项2编辑”部分。]
执行以下步骤,添加一个新的经典Storage帐户:
运行“CSPacsDatabaseConfigDemo.exe”演示在Azure中安装你的数据库,更多信息请参见:创建Microsoft azure托管数据库
执行以下步骤将web服务部署到Azure应用程序服务:
前提条件之一是安装LEADTOOLS设置,并配置Medical Web Viewer。设置和配置中的文件需要复制到App Service的站点。具体操作步骤如下:
将服务二进制文件和配置/定义复制到Azure应用程序服务
进入磁盘上的web服务文件夹(例如,
使用FTP客户端将此文件夹的内容复制到App Service的(site/wwwroot/)。
复制BIN文件夹中的所有内容除了mfc100.dll, mfc100.dll, mfcm100.dll, mfcm100.dll, Leadtools.Tasks.ServerProcess.exe
注意:默认平台是win32,因此要确保从LEADTOOLS安装文件夹复制32位二进制文件。
注意:目前Azure上的免费计划允许部署32位的web应用程序。要部署64位应用程序,请从Azure门户选择App Service并单击Settings > Platform。将平台更改为64位。
在(site/wwwroot/)中创建一个名为(App_Data)的新文件夹。
复制(PACS服务器文件夹)。默认名称为(L21_PACS_SCP32)。如果你正在安装Win32,它可以在
拷贝任何LEADTOOLS许可证文件到APP_Data。
从(site/wwwroot/)编辑网页。配置文件如下:
删除对CorsSupport、Leadtools.Wcf.CorsSupportBehaviorElement的任何引用。
在“appSettings”中修改以下值:
许可证
>设置为App_Data \ licensefilename.lic
关键
>设置为App_Data \ xyz123abc
globalConfigPath
>设置为App_Data \ globalPacs。配置
storageServerServicePath
>设置为App_Data \ L21_PACS_SCP32 \
缓存。启用
>设置为假
缓存。一生
>设置为00:00:00
有关在网上使用设置的更多信息。配置文件管理缓存,请参阅管理医疗Web查看器自定义缓存.
从(site/wwwroot/App_Data),打开globalPacs。config文件并编辑连接字符串(LeadStorageServer21_32或LeadStorageServer21_64),使其指向上面创建的Azure SQL数据库。
从(site/wwwroot/App_Data/L21_PACS_SCP32)编辑高级。配置文件如下:
storeAddIn
节点,使用以下代码:< storeAddIn storageLocation =“d: \ \数据\ L21_PACS_SCP32 \商店”
hangingProtocolLocation =“d: \ \ L21_PACS_SCP32 \ \数据存储\ HangingProtocol”
storeFileExt =“dcm”preventStoringDuplicateInstance =“假”createBackupBeforeOverwrite =“真正的”
overwriteBackupLocation =“d: \ \ L21_PACS_SCP32 \ \数据存储\覆盖”
deleteFiles =“真正的”backupFilesOnDelete =“假”deleteBackupLocation =“d: \ \数据\ L21_PACS_SCP32 \ \存储备份”
createThumbnailImage =“假”DeleteAnnotationsOnImageDelete =“假”
saveCStoreFailures =“假”cStoreFailuresPath =“d: \ \ L21_PACS_SCP32 \ \数据存储\ StoreFailures”
autoTruncateData =“假”useMessageQueue =“真正的”autoCreateFolderLocations =“真正的”>
< directoryStructure createPatientFolder =“真正的”createSeriesFolder =“真正的”
usePatientName =“假”splitPatientId =“假”/>
如果选项2,修改
使歌珥。为了测试,允许所有(*)连接。启用CORS有助于从计算机上测试web服务。完成后一定要删除它。
添加一个新的Web App。Azure门户>新>计算>应用服务> Web App
将Web应用程序命名为“MedicalViewer21”
转到新的App Service > Overview,获取FTP,并确保同时获取FTP用户名
使用您最喜欢的FTP客户端(例如,Windows资源管理器)浏览到该站点的位置
导航网站/ wwwroot /
同样需要从已安装的LEADTOOLS设置和已配置的Medical Web Viewer中复制文件。请执行以下步骤:
复制服务二进制文件和配置/定义。要做到这一点,转到磁盘上的web服务文件夹(例如,(安装)\Examples\DotNet\PACSFramework\MedicalWebViewer\JS\MedicalWebViewerDemo)
使用FTP客户端将此文件夹的内容复制到App Service的(site/wwwroot/)。
搜索标签<基地href = " " / >
从(site/wwwroot/),打开网页。配置文件,并更改(serviceUrl)的值,以指向部署在Azure上的web服务。您可以从Azure门户获取web服务URL。
从Azure门户获取URL,并使用internet浏览器导航到它。您应该能够登录并使用web查看器的大部分功能
如果您决定将(createTableAndData.sql)脚本部署到数据库,默认的用户名/密码是:admin/admin。
在这里下载创建表和数据的示例SQL脚本!(在使用之前解压下载的文件。)
如果修改了其globalpac,则可以使用Storage Server演示程序来浏览和管理数据。配置和先进的。config文件的修改方法与应用程序服务相同(对于win32这些文件在Bin\Dotnet4\ win32 & Bin\Dotnet4\ win32 \L21_PACS_SCP32中找到)。使用Storage Server演示是可选的,但是非常有帮助。
由于Azure服务应用程序使用的平台的性质,以下功能不能工作:
二次捕获
打印到PDF并刻录注释(已实现)
对高级的
注意,为了将BLOBS上传到云存储而不是本地存储,StoreLocally
需要设置为false。
请确保替换以下值(它们在以下代码部分突出显示):
<外接程序的名字=“ExternalStore”>
< customData >
<自定义名称=“ExternalStoreOptions”类型=“Leadtools.Medical.Winforms.ExternalStore。ExternalStoreOptions Leadtools.Medical。Winforms,版本=21.0.0.1,文化=中性,PublicKeyToken=null"
extraTypeCount =“7”extraType0 =“Leadtools.Medical.Winforms.Forwarder.Scheduling。工作,Leadtools.Medical。Winforms,版本=21.0.0.1,文化=中性,PublicKeyToken=null"
extraType1 =“Leadtools.Medical.ExternalStore.Atmos.Addin。AtmosConfiguration Leadtools.Medical.ExternalStore.Atmos。插件,版本=21.0.0.1,文化=中性,PublicKeyToken=null"
extraType2 =“Leadtools.Medical.ExternalStore.Atmos.Addin。AtmosExternalStoreAddinConfig Leadtools.Medical.ExternalStore.Atmos。插件,版本=21.0.0.1,文化=中性,PublicKeyToken=null"
extraType3 =“Leadtools.Medical.ExternalStore.Azure.Addin。AzureConfiguration Leadtools.Medical.ExternalStore.Azure。插件,版本=21.0.0.1,文化=中性,PublicKeyToken=null"
extraType4 =“Leadtools.Medical.ExternalStore.Azure.Addin。AzureExternalStoreAddinConfig Leadtools.Medical.ExternalStore.Azure。插件,版本=21.0.0.1,文化=中性,PublicKeyToken=null"
extraType5 =“Leadtools.Medical.ExternalStore.Sample.Addin。SampleConfiguration Leadtools.Medical.ExternalStore.Sample。插件,版本=21.0.0.1,文化=中性,PublicKeyToken=null"
extraType6 =“Leadtools.Medical.ExternalStore.Sample.Addin。SampleExternalStoreAddinConfig Leadtools.Medical.ExternalStore.Sample。插件,版本=21.0.0.1,文化=中性,PublicKeyToken=null">
< ExternalStoreOptions xmlns: xsd =“http://www.w3.org/2001/XMLSchema”
xmlns: xsi =“http://www.w3.org/2001/XMLSchema-instance”>
1 < ExternalStoreIndex > < / ExternalStoreIndex >
<项目>
< ExternalStoreItem >
< ImageHold > 0 < / ImageHold >
< < HoldInterval >天/ HoldInterval >
<确认>假> < /验证
< ExternalStoreAddinConfig xsi: type =“AtmosExternalStoreAddinConfig”>
云存储< < FriendlyName >大气压/ FriendlyName >
< ConfigurationObject xsi: type =“AtmosConfiguration”>
< AtmosUrl > api.atmosonline.com < / AtmosUrl >
< Uid >输入Uid Uid > < /
< SharedSecret >输入共享秘密< / SharedSecret >
<口> 443 < /端口>
<超时> 100 > < /超时
< StorageModel > < / StorageModel对象>
< StoreLocally >真正的< / StoreLocally >
< / ConfigurationObject >
< Guid > 09 f258df - 1 -快速公车提供- 46 - fc - 9106 f9ecfee15a59 < / Guid >
< / ExternalStoreAddinConfig >
< / ExternalStoreItem >
< ExternalStoreItem >
< ImageHold > 0 < / ImageHold >
< < HoldInterval >天/ HoldInterval >
<确认>假> < /验证
< ExternalStoreAddinConfig xsi: type =“AzureExternalStoreAddinConfig”>
< FriendlyName > Azure云存储< / FriendlyName >
< ConfigurationObject xsi: type =“AzureConfiguration”>
< StorageAccountName >storageserver< / StorageAccountName >
< StorageAccountKey >NeLB3owGvuH9ziMJphMNmFmD9JB4wz9jmEneJqRy5gk + Q + dvstjBtPOfUFtbbaFQrwO2oueLdw = =< / StorageAccountKey >
< ContainerName >testcontainer1< / ContainerName >
< UseHttps >假< / UseHttps >
< StoreLocally >假< / StoreLocally >
< / ConfigurationObject >
< Guid > 845 b878d - 2786 - 4445 - 99 - ed - 9 a1514093b96 < / Guid >
< / ExternalStoreAddinConfig >
< / ExternalStoreItem >
< ExternalStoreItem >
< ImageHold > 0 < / ImageHold >
< < HoldInterval >天/ HoldInterval >
<确认>假> < /验证
< ExternalStoreAddinConfig xsi: type =“SampleExternalStoreAddinConfig”>
LEAD Sample External Store Addin < ConfigurationObject xsi: type =“SampleConfiguration”>
<标识>输入用户ID < / UserId >
< <密码>输入密码/密码>
<名称>输入名称< /名称>
<性别>男性性别> < /
年龄18岁< > < / >
位置> < F: \ LEADTOOLS21 \ Bin \ Dotnet4 \ x64 \ ExternalStoreSampleStore > < /位置
< StoreLocally >真正的< / StoreLocally >
< / ConfigurationObject >
< Guid > 0868 aee8 f7fa - 435 - 8 - f40 - 00386 c339ae3 < / Guid >
< / ExternalStoreAddinConfig >
< / ExternalStoreItem >
> < /项目
< / ExternalStoreOptions >
< /自定义>
< / customData >
< /外接程序>
storeAddIn
节点)