Qiao Peng · 二月 17, 2021 转到文章

对,目前IAM提供的是容器版本。如果有对IAM的需求,可以联系InterSystems的销售和销售工程师。

Qiao Peng · 四月 9, 2021 转到文章

目前这是最主要的SMART on FHIR应用市场。但不少厂商都推出了自己的SMART on FHIR应用,放在自己的官网里,有些是免费的,更多是收费的。

Qiao Peng · 四月 12, 2021 转到文章

ECP1:HIS-AAA4:CACHE 这也是一台Redhat主机吗?配置了几个ECP应用服务器?查看一下ECP的Maximum number of application servers设置,看看是多大。

Qiao Peng · 四月 13, 2021 转到文章

如果需要在InterSystems IRIS中对不同的编码的数据进行转换,可以使用函数$ZCVT。 例如将变量tStr的unicode值转换为GB2312:

s tOutput=$ZCVT(tStr,"O","GB2312")
Qiao Peng · 四月 15, 2021 转到文章

系统类%Library.GTWCatalog有一个类查询SQLDataSources用来获取DSN,例如:

ClassMethod Test()
{
    set rs=##class(%ResultSet).%New()
    set rs.ClassName="%Library.GTWCatalog"
    set rs.QueryName="SQLDataSources"
    set sc=rs.Execute(1)  
    If $$$ISERR(sc) Do DisplayError^%apiOBJ(sc) Quit
    while rs.%Next() { do rs.%Print() }
}
Qiao Peng · 四月 18, 2021 转到文章

可以将Excel文件保存为CSV文件,然后直接导入IRIS即可。SMP页面路径在:系统资源管理器>SQL>向导>数据导入:

Qiao Peng · 四月 18, 2021 转到文章

我想您的问题涉及3个方面:
1. 如何以SQL访问Ensemble的数据:
Ensemble的数据可以通过SQL操作。因此第三方SQL数据库可以直接将Ensemble作为一个SQL数据库,通过XDBC访问Ensemble,并使用SQL获取数据。
同样,Ensemble也可以通过link table直接操作第三方SQL数据库。
2. 如何发现数据在第三方数据库不存在?
这需要一些逻辑,例如通过时间戳、自增的ID等信息判断。
3. 批量快读:
听起来,不是要实时进行数据同步,而是要批量处理。批量处理可以使用多种方式:a. 小批量可以通过SQL输出适配器;b. 大批量可以绕过适配器/Production,直接以link table或其它方式处理,这样不需要产生消息,效率更高。

Qiao Peng · 四月 18, 2021 转到文章

在Ensemble 2016中,使用$ZF(-4)来操作DLL是Caché的Callout网关的底层实现之一。这种方式比较通用。
当然,如果这些DLL(ActiveX/COM)注册在Ensemble服务器上(Windows服务器),还有别的调用方式:使用Caché Activate 网关,用Studio来产生这些DLL的代理类,然后您就可以像使用Ensemble/Caché类一样使用这些DLL里的方法了。

Qiao Peng · 四月 18, 2021 转到文章

如果dll重新编译过,那么是需要重新生成代理类的;其它情况下并不需要。另外,Ensemble 2016里有.net 网关,通过Studio来建立dll代理类。不过它依然需要在dll代码发生变化时重新生成代理类。

这也是后续版本(尤其是InterSystems IRIS)推出动态对象网关的原因:通过动态网关就不用生成代理类了,从而避免因为.net/java端发生代码变更而需要重新生成代理类。
$ZF()对DLL没有特殊要求。

Qiao Peng · 四月 19, 2021 转到文章

使用%request变量,它有属性CgiEnvs代表Cgi环境变量,然后找REMOTE_ADDR即可。例如: $G(%request.CgiEnvs("REMOTE_ADDR"))

Qiao Peng · 四月 23, 2021 转到文章

看起来是Windows系统SSL认证方面的问题。建议先查查Windows日志,另外考虑一下是否Cache'最近做过SSL方面的修改吗?

Qiao Peng · 四月 23, 2021 转到文章

可以调用操作系统的命令来获取CPU序列号。例如在Cache' for Windows上,可以执行:
SAMPLES>s args=3
SAMPLES>s args(1)="CPU"
SAMPLES>s args(2)="get"
SAMPLES>s args(3)="ProcessorID"
SAMPLES>d $ZF(-100,"","wmic",.args)
ProcessorId
0FABFBFF000506EX
0FABFBFF000006EX
0FABFBFF000006EX
0FABFBFF000006EX

Qiao Peng · 四月 23, 2021 转到文章

是Windows吗?在Windows命令行,执行wmic CPU get ProcessorID,能得到CPU序列号吗?

Qiao Peng · 四月 23, 2021 转到文章

SAMPLES>s x=$system.Encryption.SHA1Hash("ensmble")
 
SAMPLES>s hashs="" f i=1:1:$l(x) s hashs=hashs_$zh(+$a($e(x,i)))
 
SAMPLES>w hashs
74BA9A6CBBC92F06D9B4166F9C5B4F7F8251AED

Qiao Peng · 四月 24, 2021 转到文章

用$ZF(-1), 可以将OS命令输出保存到文件里。例如:
w $ZF(-1,"wmic CPU get ProcessorID > c:\temp\cpuinfo.txt")

Qiao Peng · 四月 24, 2021 转到文章

返回值是1,说明报错了。确认一下是否OS命令写正确了。
另外,输出不是看返回值,是看输出的文件

Qiao Peng · 四月 24, 2021 转到文章

2016之后的版本,RSAEncrypt可以接收X.509证书或RSA公钥,而2016中RSAEncrypt接收证书参数。
Ensemble2016上使用RSAEncrypt,如果拿不到证书,仅用公钥,请联系InterSystems 销售工程师。

Qiao Peng · 五月 24, 2021 转到文章

查看Cache'的对应服务是否开启,同时检查服务器是否开放了23端口。

Qiao Peng · 五月 24, 2021 转到文章

你要做哪些JSON操作?太早的版本使用某些JSON操作可能会比较麻烦。

Qiao Peng · 五月 24, 2021 转到文章

你是要遍历XML DOM树?可以如下使用:

ClassMethod Test()
{
    Set x="<?xml version=""1.0"" ?><root xmlns=""test"" xmlns:mc=""test1"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xsi:schemaLocation=""test2""><!--this is a test--><id code=""test3""/></root>"

    try
    {

    $$$ThrowOnError(##class(%XML.XPATH.Document).CreateFromString(x, .doc))
    Set doc.PrefixMappings="s test"
    $$$ThrowOnError(doc.EvaluateExpression("/s:root", ".", .field))
    #dim obj As %XML.XPATH.DOMResult = field.GetAt(1)
    
    while obj.Read() 
    {
      if obj.HasValue 
      {
        write obj.Path,": ",obj.Value,!
      }
      if obj.HasAttributes
      {
          for i=1:1:obj.AttributeCount
          {
            d obj.MoveToAttributeIndex(i)
            w obj.Name,":",obj.Value,!
          }
      }
    }
    
  }catch(ex)
  {
    write "Error ", ex.DisplayString(),!
  }
}

输出:
xmlns:xml:http://www.w3.org/XML/1998/namespace
xmlns:test
xmlns:mc:test1
xmlns:xsi:http://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocation:test2
root\: this is a test
code:test3

Qiao Peng · 十二月 24, 2021 转到文章

IRIS的镜像(Mirroring)支持多个报告类型(Reporting Asyncs)的异步成员,这些异步成员可以用于查询、报表运行、BI等多种场景。

Qiao Peng · 十二月 27, 2021 转到文章

可以封装一个REST服务用于前端api调用,这个REST服务根据不同api操作和路径,在后台调用不同服务器上的REST API或SQL操作。
或者也可以考虑使用InterSystems API管理器做这个事。

Qiao Peng · 六月 6, 2022 转到文章

应该是没开启SOAP测试页能力。搜一下三级等保文章,里面有介绍

Qiao Peng · 六月 16, 2022 转到文章
SAMPLES>s cls=##class(%Dictionary.ClassDefinition).%OpenId("Sample.Person")
SAMPLES>s cls2=cls.%ConstructClone(cls)
SAMPLES>s cls2.Name="User.Person"
SAMPLES>w cls2.%Save()
Qiao Peng · 九月 1, 2022 转到文章
最新docker引擎做了变化,运行IRIS的2022.2之前的版本,要增加一个参数--check-caps false,例如:
docker run --name test2 --publish 1972:1972 --publish 52773:52773 docker.iscinternal.com/intersystems/irishealth:2021.1.0.215.0 --check-caps false --key <keyfile-path>
Qiao Peng · 十月 6, 2022 转到文章

带Z是UTC时间,使用下面的方法会将其转换为本地时间。

s x="2022-09-30T07:24:57.899Z"
w $Replace($ZDT($ZDTH(x,3,8),3,1),"-","/")
返回:2022/09/30 15:24:57