Mirth Connect:REST API导入代码模板

时间:2017-10-24 09:56:25

标签: mirth-connect

每当我尝试使用服务' POST / codeTemplateLibraries / _bulkUpdate'来导入codeTemplates时,我都会收到错误。

我正在使用节点客户端发送它:



const options = {
method: 'POST',
url: `...`,
headers:
{
'content-type': 'multipart/form-data',
Cookie: this.cookie
},
multipart: {
chunked: true,
data: [
{
'Content-Disposition': "form-data; name='libraries'",
'Content-Type': 'application/xml',
body: `<list>${xmlSetCodeLibs}</list>`
}
,
{
'Content-Disposition': "form-data; name='updatedCodeTemplates'",
'Content-Type': 'application/xml',
body: `<list>${xmlSetCodeTemplates}</list>`
}
]
}
};
&#13;
&#13;
&#13;

我也尝试了一个PUT / codeTemplateLibraries,但结果并不是我所期待的。我收到http状态200并插入了库,但没有插入codeTemplates

1 个答案:

答案 0 :(得分:0)

我自己偶然发现了该解决方案,我可以回答该解决方案充其量是违反直觉的。

复制codeTemplateLibrary(不要与codeTemplate混淆)时,Mirth会同时更新codeTemplateLibrary和codeTemplates,但看不到codeTemplates。为了使它们可见(并修复错误),必须在对codeTemplateLibrary进行完全更新之后,使用PUT / codeTemplates / {codeTemplateId}调用分别更新每个codeTemplate。

因此您的代码解决方案应该:

  1. 调用完整的codeTemplateLibraries(一定要发送标头,以表明您还希望包含codeTemplate代码,因为默认情况下会省略它)
  2. 将codeTemplateLibraries推送到所需的任何Mirth实例
  3. 使用E4X或类似的XML解析工具来提取您在先前调用的codeTemplateLibraries中找到的每个codeTemplate实例(您不必知道哪个codeTemplate在哪个codeTemplateLibrary下,因为已经发送了该数据)。
  4. 提取codeTemplate ID(使用E4X或类似版本)
  5. 使用您提取的ID,调用PUT / codeTemplates / {codeTemplateId}(将{codeTemplateId}替换为您提取的ID),从而对现在添加的codeTemplate进行“更新”(因此您需要包括完整的代码)再次)针对您在codeTemplateLibraries列表中找到的每个单独的codeTemplate。这将使该特定的codeTemplate可见。

在对每个codeTemplate实例执行步骤4至5之后,您应该找到的是codeTemplate现在在Mirth中可见。是的,它效率低下又缓慢,但是目前这是我设法工作的唯一方法。