将PACS存储服务器和医疗Web查看器部署到Microsoft Azure应用程序服务

总结

介绍如何将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

先决条件

  • 有效的Microsoft Azure订阅
  • 最新的LEADTOOLS主或PACS设置(已安装),以及已配置的PACS存储服务器和已配置的医疗Web查看器。安装和配置是必要的,因为其中一些需要复制到App Service。

解决方案组件

  1. 托管web服务的应用程序服务
  2. 托管web客户端的应用程序服务
  3. 用于托管数据库的SQL数据库
  4. 用于存储DICOM文件的存储帐户(可选)
  5. 在本地Windows机器上运行的LEADTOOLS存储服务器(可选)

有两种不同的方法来设置组件:

选项1:在Azure上托管web服务、web客户机和数据库。使用web客户端存储DICOM文件,这些文件将存储在本地App Service驱动器上。

选项2:在Azure上托管web服务、web客户机、DICOM文件和数据库。该解决方案更适合于企业解决方案。使用LEADTOOLS Storage Server是管理DICOM文件的好方法。

下面的说明适用于选项1和选项2。[有一个步骤只适用于选项2。这一步是对高级模式的额外编辑。配置文件,包含在主题末尾的“选项2编辑”部分。]

部署存储帐户

执行以下步骤,添加一个新的经典Storage帐户:

  1. 从Azure门户选择> New > Storage > Storage Account
  2. 添加一个blob容器
  3. 获取帐户、容器和主访问键的名称(后面将需要这些)

部署SQL数据库

运行“CSPacsDatabaseConfigDemo.exe”演示在Azure中安装你的数据库,更多信息请参见:创建Microsoft azure托管数据库

将Web服务部署到Azure应用程序服务

执行以下步骤将web服务部署到Azure应用程序服务:

  1. 添加一个新的Web App:从Azure门户> new > Compute > App Services > Web App
  2. 将Web应用程序命名为“MedicalViewerServices21”
  3. 转到新的App Service > Overview,获取FTP URL,并确保同时获取FTP用户名
  4. 使用您喜欢的FTP客户端(例如,Windows资源管理器)浏览到该站点位置
  5. 导航网站/ wwwroot /
  6. 从本地安装复制文件如下:

从本地安装复制文件到Azure应用程序服务

前提条件之一是安装LEADTOOLS设置,并配置Medical Web Viewer。设置和配置中的文件需要复制到App Service的站点。具体操作步骤如下:

  1. 将服务二进制文件和配置/定义复制到Azure应用程序服务

    1. 进入磁盘上的web服务文件夹(例如,\Examples\DotNet\PACSFramework\MedicalWebViewer\Leadtools.Medical.WebViewer.WCF)。

    2. 使用FTP客户端将此文件夹的内容复制到App Service的(site/wwwroot/)。

    3. 复制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位。

  2. 在(site/wwwroot/)中创建一个名为(App_Data)的新文件夹。

  3. 复制globalPacs。配置从the installation folder to the App_Data folder. For example, to deploy a 32-bit application, copy the globalPacs.Config from \ bin \ Dotnet4 \ Win32。
  4. 复制(PACS服务器文件夹)。默认名称为(L21_PACS_SCP32)。如果你正在安装Win32,它可以在\bin\Dotnet4\Win32中找到。

  5. 拷贝任何LEADTOOLS许可证文件到APP_Data。

编辑Azure应用程序服务的配置文件

  1. 从(site/wwwroot/)编辑网页。配置文件如下:

    1. 删除对CorsSupport、Leadtools.Wcf.CorsSupportBehaviorElement的任何引用。

    2. 在“appSettings”中修改以下值:

    许可证>设置为App_Data \ licensefilename.lic

    关键>设置为App_Data \ xyz123abc

    globalConfigPath>设置为App_Data \ globalPacs。配置

    storageServerServicePath>设置为App_Data \ L21_PACS_SCP32 \

    缓存。启用>设置为

    缓存。一生>设置为00:00:00

    有关在网上使用设置的更多信息。配置文件管理缓存,请参阅管理医疗Web查看器自定义缓存

  2. 从(site/wwwroot/App_Data),打开globalPacs。config文件并编辑连接字符串(LeadStorageServer21_32或LeadStorageServer21_64),使其指向上面创建的Azure SQL数据库。

  3. 从(site/wwwroot/App_Data/L21_PACS_SCP32)编辑高级。配置文件如下:

    1. 取代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. 如果选项2,修改节点的高级。配置文件。点击这里进入选项2编辑

    3. 使歌珥。为了测试,允许所有(*)连接。启用CORS有助于从计算机上测试web服务。完成后一定要删除它。

创建和部署Web客户机

  1. 添加一个新的Web App。Azure门户>新>计算>应用服务> Web App

  2. 将Web应用程序命名为“MedicalViewer21”

  3. 转到新的App Service > Overview,获取FTP,并确保同时获取FTP用户名

  4. 使用您最喜欢的FTP客户端(例如,Windows资源管理器)浏览到该站点的位置

  5. 导航网站/ wwwroot /

从本地安装中复制Web客户端的文件

同样需要从已安装的LEADTOOLS设置和已配置的Medical Web Viewer中复制文件。请执行以下步骤:

  1. 复制服务二进制文件和配置/定义。要做到这一点,转到磁盘上的web服务文件夹(例如,(安装)\Examples\DotNet\PACSFramework\MedicalWebViewer\JS\MedicalWebViewerDemo)

  2. 使用FTP客户端将此文件夹的内容复制到App Service的(site/wwwroot/)。

编辑index.htm文件

搜索标签 <基地href = " " / >

编辑Scripts/Config.js文件

从(site/wwwroot/),打开网页。配置文件,并更改(serviceUrl)的值,以指向部署在Azure上的web服务。您可以从Azure门户获取web服务URL。

启动/测试web客户端

从Azure门户获取URL,并使用internet浏览器导航到它。您应该能够登录并使用web查看器的大部分功能

设置用户名/密码

如果您决定将(createTableAndData.sql)脚本部署到数据库,默认的用户名/密码是:admin/admin。

在这里下载创建表和数据的示例SQL脚本!(在使用之前解压下载的文件。)

使用带有此配置/设置的LEADTOOLS存储服务器

如果修改了其globalpac,则可以使用Storage Server演示程序来浏览和管理数据。配置和先进的。config文件的修改方法与应用程序服务相同(对于win32这些文件在Bin\Dotnet4\ win32 & Bin\Dotnet4\ win32 \L21_PACS_SCP32中找到)。使用Storage Server演示是可选的,但是非常有帮助。

已知的限制/问题

由于Azure服务应用程序使用的平台的性质,以下功能不能工作:

  1. 二次捕获

  2. 打印到PDF并刻录注释(已实现)

选项2编辑

对高级的节点进行以下编辑。配置文件,如果您正在实现选项2

注意,为了将BLOBS上传到云存储而不是本地存储,StoreLocally需要设置为false。

请确保替换以下值(它们在以下代码部分突出显示):

  • 将StorageAccountName替换为Azure Storage帐户名称
  • 将“StorageAccountKey”替换为“Primary storage key”
  • 用您为存储创建的BLOB容器替换ContainerName
    <外接程序的名字=“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节点)
188金宝搏的网址客服|支持|联系我们|知识产权的通知
©1991 - 2021领先的技术公司。保留所有权利。