go to post Marc Mundt · Jul 10, 2020 Here's an example of the DTL. You may need to set other fields in the ECRUpdateRequest based on your local needs.
go to post Marc Mundt · Jul 9, 2020 If you are interested in Business Services, Operations, Processes (as well as DTLs, and routing rules) as Benjamin mentioned the new Interface Maps may be of help. Interface Maps doesn't exist in 2017.1, but you could upgrade a test instance to 2020.1 to do your analysis of orphans before doing the main upgrade.
go to post Marc Mundt · Jun 12, 2020 Have you tried exporting the DTL classes from System Management Portal >> System Explorer >> Classes?
go to post Marc Mundt · Jun 12, 2020 You can get a list of DTLs with a query like this: SELECT Name FROM %Dictionary.CompiledClass WHERE Super = 'Ens.DataTransformDTL' And then you can iterate through the list and use $System.OBJ.Export() to export them to files.
go to post Marc Mundt · Apr 20, 2020 There are some open source tools available that convert HTML to PDF: https://wkhtmltopdf.org/
go to post Marc Mundt · Apr 8, 2020 I'd recommend capturing the status value returned by FileInfo() -- it's possible that the call is failing. set tSC=..%sftpSession.FileInfo(pFilename,.tFileInfoList) if $$$ISERR(tSC) { // There was an error, do something }
go to post Marc Mundt · Mar 31, 2020 Cache Terminal doesn't have a setting similar to Putty. Windows has methods for finding a specific window that belongs to another app and bringing it to the foreground. You could write a C++ or C# program to do that: https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-se...https://stackoverflow.com/questions/11512373/findwindow-and-setforegroun... Or many scripting languages have libraries that use those Windows methods: https://www.autoitscript.com/forum/topic/113390-bring-application-or-pro...https://www.programcreek.com/python/example/89828/win32gui.SetForeground...https://metacpan.org/pod/Win32::GuiTest
go to post Marc Mundt · Mar 26, 2020 "Insert(^content)" doesn't work because you can't store an object reference in a global. When you do "set ^content=citasPrimarias.datos.GetAt(j)", it converts the object reference to a string before storing it in the global.
go to post Marc Mundt · Mar 26, 2020 In BPL, you can use a "Trace" activity to log a value to the trace log.
go to post Marc Mundt · Mar 26, 2020 Yone, what is the data type of the property "datos" in Mensajes.Response.HistoriaClinica.ConsultaCitasResponse. I assume it's a list of a custom class that has two properties named fecha and hora? Property datos as List of my.class.dato; If so, you would do something like this: set dato=##class(my.class.dato).%New() set dato.fecha=fecha set dato.hora=hora do target.datos.InsertAt(dato,indice)
go to post Marc Mundt · Mar 10, 2020 Right now you're deleting items from the same list you're iterating through. As an alternative you could loop through the original list but in the loop you build a new list. Only insert an item into the new list if it doesn't contain the characters you're trying to remove.
go to post Marc Mundt · Feb 28, 2020 The following works for me: TESTING>write ##class(Ens.Util.FunctionSet).ConvertDateTime("20200228210000", "%K(0)%q", "%K(-5)%q")20200228160000
go to post Marc Mundt · Feb 28, 2020 The syntax for the informat and outformat fields is documented here:https://docs.intersystems.com/healthconnectlatest/csp/docbook/DocBook.UI... Have a look at the %K modifier in particular.
go to post Marc Mundt · Feb 25, 2020 I just did a test with .Find() and was able to compile with no error and the rule executes correctly depending on the values in the inbound record. Here's what my rule looks like: Is your router receiving the Record object from the record map or the batch object? Since Find() doesn't meet your use case, it sounds like you'll need to loop through all of the values in that field. Routing rules can't do loops, so the right way to do this would be to create a custom function and pass it either the main Document or Document.ObservationValue. In your custom function you can iterate through the entire list and return a boolean. Docs on creating a custom function:https://docs.intersystems.com/healthconnect20191/csp/docbook/Doc.View.cl...
go to post Marc Mundt · Feb 20, 2020 Hi Neil, Can you provide some more details? Is this record map being used for pulling data into the system or for outputting data?Which component is logging the error -- business service, router/business process, business operation?What is the error message?Can you give an example of a record that causes the error?Can you show the record map definition? -Marc
go to post Marc Mundt · Feb 18, 2020 Yone, I think there's a problem with your Write() method. It is outputting data from the "stream" object, but "stream" is always set to a new (empty) stream and populated with data from "writer", which is also a new (empty) %XML.Writer object. So I don't see how this method could ever output any data. Regarding the CSP error when requesting the WSDL, have you checked the application log to see what the actual error is? -Marc
go to post Marc Mundt · Feb 13, 2020 You can't directly store an object in a global like this. In your code, you're actually just storing a text description of the object reference in the global. The way to store an object in a global is to either (1) define it as a persistent class and let the system handle storing it automatically, (2) make the list of objects a property of a parent class which is itself persistent, or (3) serialize the object into a string that can be stored directly in the global. Can you explain why you need to store copyList in this manner? If you just want to persist the objects in copyList, you can consider making RSPK21QUERYRESPONSE a persistent class. https://docs.intersystems.com/healthconnect20191/csp/docbook/DocBook.UI....https://docs.intersystems.com/healthconnect20191/csp/docbook/Doc.View.cl...https://docs.intersystems.com/healthconnect20191/csp/docbook/Doc.View.cl... Also, it's worth noting that when you define the property RSPK21QUERYRESPONSE as a list of objects where the child object extends %SerialObject, then that entire list will be stored in the same global as the parent class. One other note: At the top of your code example, you set RSPK21QUERYRESPONSE as a %ListOfDataTypes:SET RSPK21QUERYRESPONSE = ##class(%ListOfDataTypes).%New() While later you try to clone it into a %ListOfObjects, which is not equivalent:set copyList = ##class(%ListOfObjects).%New()set copyList = pResponse.RSPK21QUERYRESPONSE.%ConstructClone(1)
go to post Marc Mundt · Feb 13, 2020 Try changing EsquemasDatos.Gasometros.hl7.RSPK21.QUERYRESPONSE.CONTENT to extend %SerialObject: Class EsquemasDatos.Gasometros.hl7.RSPK21.QUERYRESPONSE.CONTENT Extends (%SerialObject, %XML.Adaptor)
go to post Marc Mundt · Feb 12, 2020 The source for this JSON seems to think that "data" holds a string rather than an object. Still, we can convert that back to a proper object using %DynamicObject's %FromJSON() method: USER>set myJSONObj={"app_id":"5cf57b56-c3b4-4a0d-8938-4ac4466f93af","headings":{"en":"Cita Atención Primaria","es":"Cita Atención Primaria"},"subtitle":{"en":"C.P. ISORA","es":"C.P. ISORA"},"contents":{"en":"Aqui el contenido del mensaje si aplicase","es":"Aqui el contenido del mensaje si aplicase"},"data":"{\"centro\":\"C.P. ISORA\",\"fecha\":\"yyy/mm/dd\",\"hora\":\"hh:mm\",\"profesional\":\"nombre del profesional\",\"nomUsuario\":\"nombre de usuario\",\"codcita\":\"idCita\",\"sepuedeborrar\":\"1\"}","include_player_ids":["c2917a6f-6ecf-4f45-8b31-9b72538580fd"]} USER>write myJSONObj.data {"centro":"C.P. ISORA","fecha":"yyy/mm/dd","hora":"hh:mm","profesional":"nombre del profesional","nomUsuario":"nombre de usuario","codcita":"idCita","sepuedeborrar":"1"} USER>set dataObj=##class(%DynamicObject).%FromJSON(myJSONObj.data) USER>write dataObj 11@%Library.DynamicObject USER>set myJSONObj.data = dataObj USER>write myJSONObj.%ToJSON() {"app_id":"5cf57b56-c3b4-4a0d-8938-4ac4466f93af","headings":{"en":"Cita Atención Primaria","es":"Cita Atención Primaria"},"subtitle":{"en":"C.P. ISORA","es":"C.P. ISORA"},"contents":{"en":"Aqui el contenido del mensaje si aplicase","es":"Aqui el contenido del mensaje si aplicase"},"data":{"centro":"C.P. ISORA","fecha":"yyy/mm/dd","hora":"hh:mm","profesional":"nombre del profesional","nomUsuario":"nombre de usuario","codcita":"idCita","sepuedeborrar":"1"},"include_player_ids":["c2917a6f-6ecf-4f45-8b31-9b72538580fd"]}