go to post Eduard Lebedyuk · Apr 6, 2021 Iterating through large pandas dataFrame objects is generally slow You're right. Here's a good write up on the topic.
go to post Eduard Lebedyuk · Apr 3, 2021 Thank you! Why do you map %ZLANGC00/%ZLANGF00 to %ALL? They are available everywhere by default.
go to post Eduard Lebedyuk · Apr 1, 2021 Separate REST logic form a business logic and call ObjectScript method directly? Check out this article on REST design (esp. terminal layer in the article terms).
go to post Eduard Lebedyuk · Mar 27, 2021 Use %INLIST it matches a value to the elements in a %List structured list.
go to post Eduard Lebedyuk · Mar 23, 2021 If that is indeed the case I recommend this series of articles.
go to post Eduard Lebedyuk · Mar 22, 2021 It's not a server who checks for expiry, but a client. So your flow works like this: 1. 15:00 calling application runs a GET request for patient?MRN=A2. 15:00 CSP Web application calls HIHLib.REST.Server class and forwards request on to namespace for handling (via business services,process and operations)3. 15:00:05 response is returned with EXPIRES 300 and VaryByParam set to *4. 15:10 a seperate internall process results in patient with MRN A - first name changed from pete to bob5. 15:12 calling application runs a GET request for patient?MRN=A6. 15:12 web browser (on a client side) sees that patient?MRN=A request is cached locally and still valid due to EXPIRES 300. Web browser is returning a cached value to a calling application without going to the server. And server would never get a second request (that's the point of the EXPIRING header after all). Expires controls how long the response is valid. It's for things like HTML pages which are static. If you think that a response can change every time a client requests it, you should not add an EXPIRING header.
go to post Eduard Lebedyuk · Mar 21, 2021 Sorry, meant: Do ..Adapter.%Client.SetHttpHeader(name, value)
go to post Eduard Lebedyuk · Mar 17, 2021 If you want to know if a compiled class exists, call: write $$$comClassDefined(class) It, however, does not answer the question of a compiled version being current.
go to post Eduard Lebedyuk · Mar 16, 2021 How about a slightly different architecture: Create a table, visible in all namespaces called Requests - and from Data Source namespace add 1 row to it on every new message. Create a table, visible in all namespaces called Ack which contains {RequestId, Namespace, State} In each namespace create a Business Service which would: Poll Requests/Ack tables to get new unprocessed requests (no corresponding Ack record). If an unprocessed request is found create an Ack record and send a message in a local namespace for BP processing Maybe write a response after the message is processed (or do it in BP/ProxyBP/job) Advantage of this architecture is that you decouple processing on a namespace level - so if a production in one namespace is in error state/down the rest can proceed. It also eliminates a single point of failure in namespace switching job. tl;dr instead of pushing your event make consumers pull it whenever convenient.
go to post Eduard Lebedyuk · Mar 16, 2021 Supply them in $horolog format. In a case of YYYY-MM-DD, try: $zdateh("YYYY-MM-DD", 3)