It's a good idea, but I haven't the ID of the row.

My idea was use the object as a parameter to pass a lot of values, and the query reads these values, instead of pass one by one the params.

I've changed my query with all of the parameters that I need to run the query

Query GetInfo(pKeyProcess As %String, pCodeSpecialist As %String, pCodeProvider As %String, pCodeCenter As %String, pDate as %TimeStamp) As %SQLQuery(CONTAINID = 1, ROWSPEC = "IdList:%String,IdProcess:%String,Duration:%String")
{
    SELECT IdList, IdProcess, Duration
    FROM Kurro.MyClass
    WHERE KeyProcess = :pKeyProcess
    AND CodeSpecialist = :pCodeSpecialist
    AND CodeProvider = :pCodeProvider
    AND CodeCenter = :pCodeCenter
    AND Date = :pDate
}

It works, but I need to pass all params. I wanted to create a class to pass all parameters, like a c# method, and try to use itself.

Thanks for all mate.

Thanks mate for your answer.

My goal was create an string with all codes of activity from a list, and it should be in order alphabetical because the list could be in other order and this key should be the same

ClassMethod CreateKey(pList As %Collection.ListOfObj) As %String
{
        for i=1:1:pList.Count()
        {
            set code = pList.GetAt(i).Codigo
            set list(code)=""
        }
        
        set myKey = ""
        set key=$ORDER(list(""))
        while (key'="")
        {
            set myKey = myKey_key_"#"
            set key=$ORDER(lista(key))
        }

        return myKey 
}

Thanks for all your time and all explications about this.

Best regards,
Kurro

Thanks for your tip, using LogFile I've found what is the error.

The problem was that the configuration of the URL

but it works if "Web Service URL" has the full path.

I have other WS Clients and they are working with the Client Class in "Web Service Client Class" field

I think if the WS is like "http://myserver.com/path/service.asmx" it should be separated in both fields. However, if it is a Java WS (it hasn't class file) it sould be in URL field.

I'll bear in mind for future implementations.

Thanks for all your help.

Kurro

Hi.

Try use this command from console (Powershell, console Linux, etc..) for Intersytems Ensemble

ccontrol.exe force HEALTHSHARE

HEALTHSHARE is the name of your instance

This command should be executed in bin folder (ex. c:\Intersystems\Healthshare\bin)

For IRIS the command is

iris.exe forece IRISHealth

IRISHealth is the name of your instance, it is in the folder bin (ex. c:\Intersystems\IRISHealth\bin)

Best regards
Francisco Lopez

This is the transformation code (if you want). In my example, I was transforming OUL^R22 to OUL^R22

Class Kurro.DTL.test Extends Ens.DataTransformDTL [ DependsOn = EnsLib.HL7.Message ]
{

Parameter IGNOREMISSINGSOURCE = 1;

Parameter REPORTERRORS = 1;

Parameter TREATEMPTYREPEATINGFIELDASNULL = 0;

XData DTL [ XMLNamespace = "http://www.intersystems.com/dtl" ]
{
<transform sourceClass='EnsLib.HL7.Message' targetClass='EnsLib.HL7.Message' sourceDocType='2.7:OUL_R22' targetDocType='2.7:OUL_R22' create='new' language='objectscript' >
<assign value='source.{PIDgrp.PID}' property='target.{PIDgrp.PID}' action='set' />
<if condition='..Length(source.{PIDgrp.PID:11(1).8})&gt;0' >
<true>
<assign value='source.{PIDgrp.PID:11(1).1}_" "_source.{PIDgrp.PID:11(1).2}' property='target.{PIDgrp.PID:11(1).1}' action='set' />
<assign value='source.{PIDgrp.PID:11(1).8}' property='target.{PIDgrp.PID:11(1).2}' action='set' />
<assign value='""' property='target.{PIDgrp.PID:11(1).8}' action='set' />
</true>
<false>
<assign value='""' property='target.{PIDgrp.PID:11(1).8}' action='set' />
</false>
</if>
</transform>
}

}

Regards,

Kurro Lopez

Hi,

if you read your requirements, that is that you have to write in your DTL

The first line copy all your PID in the new destination (green box)

the condition, check if the 11(1).8 has value, in this case, concatenate PID:11(1).1_PID:11(1).2 to new PID:11(1).1

I understand, when you say "move 11(1).8 to 11(1).2 means that the value in 11(1).8 will be empty (red box), if it is not the case, don't use this line.

For other case (step 7). remove the value of the PID:11(1).8

The DTL conditions are executed in order, It means, that the value in PID:11(1).2 in step 3 is the original then it is replaced by PID:11(1).8 in the following step.

This is the test result:

I hope it helps you,

Regards,

Kurro Lopez