Nueva publicación

Encontrar

Artículo
· 14 mins atrás Lectura de 2 min

Reseñas en Open Exchange - #62

Si uno de vuestros paquetes en OEX recibe una reseña, OEX os notificará únicamente sobre vuestro propio paquete. La valoración refleja la experiencia del revisor con el estado del paquete en el momento de la reseña.
Es como una “fotografía” del estado en ese momento y podría haber cambiado desde entonces. Las reseñas realizadas por otros miembros de la comunidad se marcan con un * en la última columna.

Además, el revisor puede enviar Pull Requests en GitHub cuando encuentra un problema que se puede solucionar. Algunas puden ser aceptadas y fusionadas, y otras simplemente ignoradas.
Así que, si habéis realizado un cambio importante y esperáis que la reseña cambie, simplemente avisad al revisor.

# Package Review Stars IPM Docker *
1 JSON2Persistent Now also available in IPM 6.0 y y  
2 one-to-many-case The first of 2026 5.0 y y  
3 IRIS_dockerization promising composition 4.4   y  
4 GlobalsDB-NodeJS-Admin Historic artefact 3.8      
5 iris-jsonschema just partial working 3.8      
6 GlobalsDB-Admin-NodeJS Historic artefact #2 3.5      
7 Pivot partner posting        
8 DbVisualizer partner posting        
9 PIQXL Gateway partner posting        
10 Symedical partner posting        
11 Fhirgure partner posting        
12 iknowAV Another artefact        
13 OMNI-Lab partner posting        

NOTA:
Si alguna reseña no os resulta legible, puede que todavía esté esperando la aprobación de los administradores de OEX.

Comentarios (0)1
Inicie sesión o regístrese para continuar
Pregunta
· 26 mins atrás

HS.FHIRServer.Interop.Service returning error status code and OperationOutcome

I'm using this service to create a FHIR facade. 

I want to return OperationOutcome to the calling application when I detect an error. 

My code at present is :

 

set quickStreamOut=##class(HS.SDA3.QuickStream).%New()

set operationOutcome = ##class(HS.FHIR.DTL.vR4.Model.Resource.OperationOutcome).%New()

s issue = ##class(HS.FHIR.DTL.vR4.Model.Element.OperationOutcome.issue).%New()

s issue.severity = "error"

s issue.code = "exception"

s issue.details = ##class(HS.FHIR.DTL.vR4.Model.Datatype.CodeableConcept).%New()

try {

s issue.details.text = exception.DisplayString()

} catch ex {

s issue.details.text = "Unknown exception"

}

d operationOutcome.issue.Insert(issue)

$$$ThrowOnError(quickStreamOut.CopyFrom(operationOutcome.ToJSON()))

set response = ##class(HS.FHIRServer.Interop.Response).%New()

set response.Response.ResponseFormatCode="JSON"

set response.Response.Status=200

set response.ContentType="application/fhir+json"

set response.CharSet = "utf8"

set response.QuickStreamId = quickStreamOut.%Id()

If I change the response code to 422, the calling app doesn't get the OperationOutcome. Instead I get 


The custom error module does not recognize this error.
 

Do I need to implement a custom error? 

Comentarios (0)1
Inicie sesión o regístrese para continuar
Pregunta
· 2 hr atrás

An Operation can't find a .iostream file

A .iostream file got stored in /intersystems/HCENG01B12/mgr/Temp for a BatchFileOperation class while HC was on the secondary node.  HealthConnect is now on the primay node and cannot find that .iostream file path.  The operation starts throwing errors when the RolloverSchedule is reached

OnKeepalive() returned ERROR #5012: File '/intersystems/HCENG01B12/mgr/Temp/QWhoZAwFF3f9jQ.iostream'
does not exist

How can I resolve this issue?

1 nuevo comentario
Comentarios (1)1
Inicie sesión o regístrese para continuar
Artículo
· 3 hr atrás Lectura de 3 min

在无法访问系统 x509 证书/密钥的情况下生成 JWT

如果要从 x509 证书/密钥生成JWT,对%SYS.X509Credentials的任何操作(包括读取)都需要 %Admin_Secure 资源上的 U。之所以需要 %Admin_Secure,是因为 %SYS.X509Credentials 是持久的,这样做是为了防止所有用户访问私钥。

如果 %Admin_Secure 资源在运行时不可用,可以使用以下变通方法。

在查看 JWT 生成代码时,我发现 JWT 代码仅利用 %SYS.X509Credentials 作为 PrivateKeyPrivateKeyPasswordCertificate 的运行时数据源。作为一种变通方法,您可以使用 X.509 接口的运行时非持久化实现,只公开这些属性。如果要使用互操作性,证书/PK 可以存储在凭证中,以便安全访问:

Class User.X509 Extends %RegisteredObject
{

Property PrivateKey As %VarString;
Property PrivateKeyPassword As %String;
Property Certificate As %VarString;
Property HasPrivateKey As %Boolean [ InitialExpression = {$$$YES} ];
ClassMethod GetX509() As User.X509
{
    set x509 = ..%New()
    set x509.PrivateKey = ..Key()
    set x509.Certificate = ..Cert()
    quit x509
}

/// Get X509 object from credential.
/// Username is a Cert, Password is a Private Key
ClassMethod GetX509FromCredential(credential) As User.X509
{
    set credentialObj = ##class(Ens.Config.Credentials).%OpenId(credential,,.sc)
    throw:$$$ISERR(sc) ##class(%Exception.StatusException).ThrowIfInterrupt(sc)
    
    set x509 = ..%New()
    set x509.PrivateKey = credentialObj.Password
    set x509.Certificate = credentialObj.Username
    quit x509
}

ClassMethod Key()
{
    q "-----BEGIN RSA PRIVATE KEY-----"_$C(13,10)
    _"YOUR_TEST_KEY"_$C(13,10)
    _"-----END RSA PRIVATE KEY-----"
}

ClassMethod Cert() As %VarString
{
    q "-----BEGIN CERTIFICATE-----"_$C(13,10)
    _"YOUR_TEST_CERT"_$C(13,10)
    _"-----END CERTIFICATE-----"
}

}

您还可以通过以下方式生成 JWT:

ClassMethod JWT() As %Status
{
    Set sc = $$$OK
    //Set x509 = ##class(%SYS.X509Credentials).GetByAlias("TempKeyPair")
    Set x509 = ##class(User.X509).GetX509()
    
    Set algorithm ="RS256"
    Set header = {"alg": (algorithm), "typ": "JWT"}
    Set claims= {"Key": "Value" }
    
    #; create JWK
    Set sc = ##class(%Net.JSON.JWK).CreateX509(algorithm,x509,.privateJWK)
    
    If $$$ISERR(sc) {
        Write $SYSTEM.OBJ.DisplayError(sc)
    }

    #; Create JWKS
    Set sc = ##class(%Net.JSON.JWKS).PutJWK(privateJWK,.privateJWKS)
    
    If $$$ISERR(sc) {
        Write $SYSTEM.OBJ.DisplayError(sc)
    }

    Set sc = ##Class(%Net.JSON.JWT).Create(header,,claims,privateJWKS,,.pJWT)
    
    If $$$ISERR(sc) {
        Write $SYSTEM.OBJ.DisplayError(sc)
    }
    
    Write pJWT
	Return sc
}

或者,您也可以使用动态对象来跳过类的创建,在这种情况下,它将看起来像这样:

ClassMethod JWT(credential) As %Status
{
    Set sc = $$$OK
    //Set x509 = ##class(%SYS.X509Credentials).GetByAlias("TempKeyPair")
    Set credentialObj = ##class(Ens.Config.Credentials).%OpenId(credential,,.sc)
    throw:$$$ISERR(sc) ##class(%Exception.StatusException).ThrowIfInterrupt(sc)
    
    Set x509 = {
        "HasPrivateKey": true,
        "PrivateKey": (credentialObj.Password),
        "PrivateKeyPassword":"",
        "Certificate":(credentialObj.Username)
    }

    Set algorithm ="RS256"
    Set header = {"alg": (algorithm), "typ": "JWT"}
    Set claims= {"Key": "Value" }
    
    #; create JWK
    Set sc = ##class(%Net.JSON.JWK).CreateX509(algorithm,x509,.privateJWK)
    
    If $$$ISERR(sc) {
        Write $SYSTEM.OBJ.DisplayError(sc)
    }

    #; Create JWKS
    Set sc = ##class(%Net.JSON.JWKS).PutJWK(privateJWK,.privateJWKS)
    
    If $$$ISERR(sc) {
        Write $SYSTEM.OBJ.DisplayError(sc)
    }

    Set sc = ##Class(%Net.JSON.JWT).Create(header,,claims,privateJWKS,,.pJWT)
    
    If $$$ISERR(sc) {
        Write $SYSTEM.OBJ.DisplayError(sc)
    }
    
    Write pJWT
    Return sc
}
Comentarios (0)1
Inicie sesión o regístrese para continuar
Anuncio
· 4 hr atrás

新的人工智能 CCR 助手

CCR 现在包括一个人工智能驱动的 "CCR 助手",可供测试人员使用。CCR 助手可帮助您快速获得有关常见 CCR 工作流程、术语或最佳实践的答案。每个回复都包含相关 ICC 培训课程的参考资料,方便您深入了解任何主题。作为未来的改进,这些链接将直接指向用于生成回复的 ICC 培训 PDF 的特定页面。

要访问该助手,请点击 CCR 应用程序右下方的蓝色 "打开 CCR 助手 "图标。对话会在浏览器会话中保存,但会在注销时清除。

您可以通过点击 "竖起大拇指 "或 "摁下大拇指 "按钮并输入可选评论来提交对任何回复的反馈意见。我们非常感谢您的反馈,这将有助于我们继续提高回复质量!

要试用 CCR 助手,请导航到侧边栏的用户菜单,选中您的个人资料下的测试版测试员复选框,然后单击保存。您可以随时取消选中该复选框。

有关 CCR 助手的快速操作演示,请观看下面的视频。

Comentarios (0)1
Inicie sesión o regístrese para continuar