If you are missing other templates from Atelier or Studio... add the following links:

Installer Wizard

"Installer Wizard": "${serverUrl}/isc/studio/templates/%25Installer.InstallerWizard.cls?Namespace=${namespace}${serverAuth}"
 

DeepSeek PI Wizard

"DeepSeek PI Wizard": "${serverUrl}/isc/studio/templates/%25DeepSee.Template.DeepSeeKPIWizard.cls?Namespace=${namespace}${serverAuth}"
 
Best regards,
Kurro Lopez

Hi,

The $HOROLOG is the cache datetime format, then the first part is de date and the second part is the time. The time is in seconds, then if you want to increase 15 minutes, you should to plus the time (15*60)

This is a example:

It only works if you are in the same day, because it raises an error

The best way to increase minutes, days, months, etc... is using $system.SQL.DATEADD method

https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY...

Best regards,
Kurro

Hi Sean,

I've created my Business Operation using the wizard to create SOAP Client.

I've modified the object to change the location and namespace according to the provider. This value is into the message.

This is a pice of the code:

Method MyMethod(pRequest As MyMessageWS.RequestsearchInfoRequest, Output pResponse As MyMessageWS.RequestsearchInfoResponse) As %Library.Status
{
    do ..prepareOperation(pRequest)
    Set tSC = ..Adapter.InvokeMethod("searchInfo",.info,pRequest.idSpeciality,pRequest.listaActs,pRequest.healthCenter,pRequest.aditionalInfo)
    Quit:$$$ISERR(tSC) tSC
    Set tSC = pRequest.NewResponse(.pResponse)  Quit:$$$ISERR(tSC) tSC
    Set pResponse.InfoCentro=$get(info)
    Quit $$$OK
}

Method prepareOperation(pRequest As MyMessageWS.Request.base) As %Status
{
 Set ..Adapter.%Client.Namespace = pRequest.Namespace
 Set ..Adapter.%Client.Location = pRequest.Url
 Quit $$$OK
}

The problem is the InvokeMethod is raising the error, so I'm not able to modify this code. It's part of the %Soap library.

Delete class from Ensemble

set classToDelete = "mypackage.myclass"
if ($$$ISOK($system.OBJ.IsValidClassname(classToDelete)))
{
    do $system.OBJ.Delete(classToDelete,"e")
}

Remove a Host from production

set productionName = "mypackage.myproduction"
set itemName = "NameItemInProduction"

If ##class(Ens.Config.Item).NameExists(productionName,itemName,.idItem)
{
    Set production = ##class(Ens.Config.Production).%OpenId(productionName)
    Set objItem = production.FindItemByConfigName(itemName)
    Do production.RemoveItem(objItem)
    Set st = production.%Save()
    Do ##class(Ens.Director).RestartProduction(0,1)
}

I hope this code helps you.

Best regards,
Kurro Lopez

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