go to post Marc Mundt · Jul 5, 2024 Good question. In OAuth the response will include the expiration time, so that's what I was expecting here. If the response doesn't include an expiration time does the vendor's documentation say anything about if tokens can be used for more than 1 request and if so how long it's valid for? If you know it's supposed to be valid for 60 minutes then you could just log the time when you requested the token and use that to track it.
go to post Marc Mundt · Jul 5, 2024 It doesn't look like OAuth. If it were, the payload should include a grant_type and username is called "username" rather than "email": https://www.oauth.com/oauth2-servers/access-tokens/password-grant/https://www.oauth.com/oauth2-servers/access-tokens/client-credentials/
go to post Marc Mundt · Jul 5, 2024 There could be non-OAuth token-based authentication methods. I expect the %SYS.OAuth stuff won't work for something non-OAuth. What does the payload look like that you have to send in order to get a token? We can see if it looks like OAuth or not.
go to post Marc Mundt · Jul 5, 2024 OnInit() only gets called when starting the operation. If your tokens have an expiration time then you need to check if the token is expired on each call and fetch a new one if needed. You can just store the token and expiration time in properties and check them on each call.
go to post Marc Mundt · Jul 5, 2024 I would start by checking if some other process is already using port 5000 (or whatever port JavaGateway is trying to run on). It would also be good to check the JavaGateway Since you're on Linux you can check this with netstat: netstat --listening --numeric-ports
go to post Marc Mundt · May 7, 2024 The Interoperability FHIR Client can handle the OAuth pieces. It uses HTTPOperation for transport but does the work of setting everything up: https://docs.intersystems.com/irisforhealth20233/csp/docbook/DocBook.UI....
go to post Marc Mundt · May 25, 2023 I found this in the docs: From the server, users can: Run, filter and modify reports. Export to a variety of formats. Schedule reports to be distributed via email or FTP. https://docs.intersystems.com/components/csp/docbook/DocBook.UI.Page.cls... And docs on the API:https://reportkbase.logianalytics.com/v23.1/api/index.html
go to post Marc Mundt · May 25, 2023 Have you looked at the Zen demos in the SAMPLE namespace?https://docs.intersystems.com/ens201817/csp/docbook/DocBook.UI.Page.cls?... This demo page shows a file upload control:http://<HOST>:PORT/csp/samples/ZENDemo.ControlTest.cls
go to post Marc Mundt · May 18, 2023 One quick/dirty(?) way is to do a "View Code in Namespace" for "%SYS". Under the %SYS namespace the percent classes are not filtered out.
go to post Marc Mundt · May 10, 2023 Have a look at the HTTP Passthrough Service/Operation. They work with messages of type EnsLib.HTTP.GenericMessage, which can be used in a similar way to what you described with Interop requests.
go to post Marc Mundt · Apr 14, 2023 I found a tokenize method in one of the %DeepSee packages: USER>w ##class(%DeepSee.extensions.utils.StringMatchUtils).tokenize("this is a string blah blah.",.tokenArray) 1 USER>w tokenArray=6 tokenArray(1)="this" tokenArray(2)="is" tokenArray(3)="a" tokenArray(4)="string" tokenArray(5)="blah" tokenArray(6)="blah" USER>
go to post Marc Mundt · Apr 5, 2023 Would the built-in management reports meet your needs?https://docs.intersystems.com/hs20222/csp/docbook/DocBook.UI.Page.cls?KE... And these docs on HealthShare auditing should be helpful:https://docs.intersystems.com/hs20222/csp/docbook/DocBook.UI.Page.cls?KE...
go to post Marc Mundt · Mar 22, 2023 Standalone installers for Caché ODBC drivers are available on the software distribution page in the WRC.
go to post Marc Mundt · Mar 20, 2023 Hi Rochdi, You don't need to use %File and then copy it to a file stream. You can just use %Stream.FileCharacter to directly open and read the file: Set stream=##class(%Stream.FileCharacter).%New() Set sc=stream.LinkToFile("c:\myfile.txt") While 'stream.AtEnd { Set line=stream.Read() ; Process the chunk here } And I can confirm that I've also seen %Stream.FileCharacter significantly outperform %File for reads. -Marc
go to post Marc Mundt · Feb 7, 2023 I suspect the problem is that you're using a %DynamicObject. BPLs should use persistent/persistable objects because business process execution can in some cases be suspended temporarily and then resumed. Before execution is suspended, context objects are saved into the DB. %DynamicObjects are not persistent objects, so their values are lost when execution is suspended. You can overcome this by using %ToJSON to serialize the %DynamicObject into a stream property of the context object. Streams are persistable. The life cycle of a business process requires it to have certain state information saved to disk and restored from disk, whenever the business process suspends or resumes execution. This feature is especially important for long-running business processes, which may take days or weeks to complete. https://docs.intersystems.com/irisforhealth20223/csp/docbook/DocBook.UI....
go to post Marc Mundt · Jan 18, 2023 I've seen Zen reports used extensively for Chinese content, so they can definitely handle the far reaches of the Unicode realm. What happens if you do this? write !,"<PostInfo>My GE: "_$c(8805)_"</PostInfo>" or this? write !,"<PostInfo>My GE: "_$zcvt($c(8805),"O","UTF8")_"</PostInfo>" Some other things to check: Check if the TTF file for the font you're using contains that glyph. Make sure your report is set to use UTF-8 encoding: https://docs.intersystems.com/ens201815/csp/docbook/DocBook.UI.Page.cls?... Look at the intermediary files (the .xml which contains the data in particular) that Zen generates to see if/how that item was output: https://docs.intersystems.com/ens201815/csp/docbook/DocBook.UI.Page.cls?... https://docs.intersystems.com/ens201815/csp/docbook/DocBook.UI.Page.cls?... Check to see if FOP is reporting any errors: https://docs.intersystems.com/ens201815/csp/docbook/DocBook.UI.Page.cls?...
go to post Marc Mundt · Jan 12, 2023 It's not clear to me what "early binding" means in the context of a data transformation. Do you mean something that happens at the time the DTL is compiled rather than at runtime? If you can clarify what you mean by "early binding" that will help us get you an answer.
go to post Marc Mundt · Jan 12, 2023 It would be great to have a cheat-sheet for all of these keyboard shortcuts and other tricks, especially in terms of "if you used to do X in Studio, here's how to do that in VS Code". A few months ago I happened across the incantation for the VS Code equivalent of Studio's "Find in Files" (free text search of server-side classes) but forgot the key combination and haven't had the time to try to figure out which docs to check and guess at whether it's a standard feature of VS Code or of the ObjectScript plug-in.
go to post Marc Mundt · Dec 6, 2022 Yes, you can absolutely do that. You separate statements with 2 spaces. Here's an example: for i=1:1:10 { write i,! write i*10,! } This gives the same output: for i=1:1:10 { write i,! write i*10,! } It also works without brackets, but IMHO is less readable: for i=1:1:10 write i,! write i*10,!
go to post Marc Mundt · Nov 7, 2022 Menno, In your ObjectScript code you never base64 decode the key: set key="pZR8qfrz7t47G+dboyJCH4NnJRrF+dJbvxq37y/cLUo=" ... Set encrypted=$SYSTEM.Encryption.AESCBCEncrypt($zcvt(text,"O","UTF8"),key,iv) But you did this in Python: keyBase64="pZR8qfrz7t47G+dboyJCH4NnJRrF+dJbvxq37y/cLUo=" key = base64.b64decode(keyBase64) ... cipher = AES.new(key, AES.MODE_CBC)