Método de consulta en una clase %Persistent usándose a sí mismo como parámetros
Hola todos,
Me pregunto si es posible obtener los valores de sí mismo para ejecutar una consulta.
Quiero crear varias QUERY para encontrar un valor en una clase %Persistent pero cada una usa valores diferentes.
Class Kurro.MyClass Extends %Persistent
{
/// Key of process
Property KeyProcess As %String(MAXLEN = "");
/// Specialist
Property CodeSpecialist As %String;
/// Provider
Property CodeProvider As %String;
/// Center
Property CodeCenter As %String;
/// Date
Property Date As %TimeStamp;
/// IdList
Property IdList As %String;
/// IdProcess
Property IdProcess As %String;
/// Duration
Property Duration As %String;
Query GetInfo(pObject AS Kurro.MyClass) As %SQLQuery(CONTAINID = 1, ROWSPEC = "IdList:%String,IdProcess:%String,Duration:%String")
{
SELECT IdList, IdProcess, Duration
FROM Kurro.MyClass
WHERE KeyProcess = :pObject.KeyProcess
AND CodeSpecialist = :pObject.CodeSpecialist
AND CodeProvider = :pObject.CodeProvider
AND CodeCenter = :pObject.CodeCenter
AND Date = :pObject.Date
}
}
Entonces lo llamo de esta manera:
set obj=##class(Kurro.MyClass).%New()
set obj.KeyProcess="1033004-1#"
set obj.CodeSpecialist = "surgery"
set obj.CodeProvider = "PR002"
set obj.CodeCenter = "CENTER-01"
set obj.Date = $ZDATETIME($ZDATETIMEH("2021-04-30 15:45:00",3,1),3,1)
set result = obj.GetInfoFunc(obj)
Pero tengo el siguiente error
%Message = "ERROR #5002: Error de cache: <OBJECT DISPATCH>zGetInfoFunc+5 ^Kurro.MyClass1 * La propiedad 'KeyProcess' en la clase 'Kurro.MyClass' debe ser multidimensional"
Es extraño, porque esta propiedad es un parámetro %String simple.
Luego, intenté obtener los valores propios de la clas y llamar usando la misma instancia
Query GetInfo() As %SQLQuery(CONTAINID = 1, ROWSPEC = "IdList:%String,IdProcess:%String,Duration:%String")
{
SELECT IdList, IdProcess, Duration
FROM Kurro.MyClass
WHERE KeyProcess = KeyProcess
AND CodeSpecialist = CodeSpecialist
AND CodeProvider = CodeProvider
AND CodeCenter = CodeCenter
AND Date = Date
}
y llámalo usando esta sentencia
set result = obj.GetInfoFunc()
Pero no funciona
%Message = "ERROR # 5002: Error de cache: <PARAMETER> zGetInfo + 1 ^Kurro.MyClass.1"
¿Es posible obtener los valores del objeto para usarlo como parámetro de la consulta?
Atentamente,
Kurro