Dmitrii Baranov · Nov 5, 2022 go to post

Laptop - Windows 11 

AMD workstations - Windows 10 Home (official OEM, with fresh updates)

Dmitrii Baranov · Nov 5, 2022 go to post

I know about messages.log, but in my case it's pretty short (~2kb) and contains no useful trace info :( There are workarounds with Docker and VMs, both approaches work

Dmitrii Baranov · Nov 5, 2022 go to post

UPD1: launched the installation package via the "Run as administrator" menu item. Now the messages.log file contains the following diagnostics info:

- on Ryzen 3900 - the processor has too many cores which is not allowed by Community edition license

- on Athlon 3000G the error message is less informative: `11/06/22-01:06:28:788 ( 5200) 3 irisctl.dll (error during startup):(289) IRIS failed to start.  IRIS Control Process terminated abnormally (exit code = 0).`

Dmitrii Baranov · Nov 6, 2022 go to post

Thanks but I doubt it's a license issue. The IRIS installer creates another log in C:\Windows directory, and it also contains no useful information. At some point the installation process just hangs as well as the log file stops growing.

Dmitrii Baranov · Jan 8, 2023 go to post

I'm using Postman, the default Accept header value was */*, then according your advice I tried application/json, then application/fhir+json, both not working, IRIS still produces HTML

<div id="content">
		<div class="content-container">
			<fieldset>
				<h2>500 - Internal server error.</h2>
				<h3>There is a problem with the resource you are looking for, and it cannot be displayed.</h3>
			</fieldset>
		</div>
	</div>
Dmitrii Baranov · Jan 9, 2023 go to post

Thanks, I caught your idea but no, IIS is not a cause, although the issue exists in Windows but not in Linux

Dmitrii Baranov · Mar 21, 2023 go to post

I need to find a reason of a performance bug in the source code of the original class :) 

Dmitrii Baranov · Apr 30, 2023 go to post

Finally, I've implemented the following brute solution. I don't like the look of this at all, but it works

ClassMethod test() As %Status
{
  #dim request as %CSP.Request
  set request = %request

  #dim headerName as %String
  set headerName = ""
  set headerName = request.NextCgiEnv(headerName)
  while (headerName '= "") {
    if $find(headerName, "HTTP_") '= 0 {
      set localHeaderName = $replace(headerName, "HTTP_", "")
      set localHeaderName = $replace(localHeaderName, "_", "- ")
      set localHeaderName = $zconvert(localHeaderName, "L")
      set localHeaderName = $zconvert(localHeaderName, "W")
      set localHeaderName = $replace(localHeaderName, "- ", "-")
      write localHeaderName, ": ", request.GetCgiEnv(headerName), !
    }
    set headerName = request.NextCgiEnv(headerName)
    }
    return $$$OK
}

Dmitrii Baranov · May 17, 2023 go to post

Here it is:

Class MyHL7HTTPService Extends EnsLib.HL7.Service.HTTPService
{

Method OnAdapterHTTPResponse(
	ByRef pStatus As %Status,
	ByRef pHTTPResponseStatus As %String,
	ByRef pBodyLen As %Integer,
	ByRef pResponseBodyStream As %Stream.Object,
	ByRef pMainResponseHeader As %String,
	ByRef pHeaderExtra As %String)
{
    set pHeaderExtra = pHeaderExtra _ "Access-Control-Allow-Origin: *"_ $char(13) _ $char(10) 
                                    _ "Access-Control-Allow-Headers: *" _ $char(13) _ $char(10) 
                                    _ "Access-Control-Allow-Methods: *" _ $char(13) _ $char(10)
}

}
Dmitrii Baranov · May 20, 2023 go to post

Got it! Now I'm struggling with adding a value to that array. Would it be correct?

set arr(arr + 1) = value
Dmitrii Baranov · Jul 19, 2023 go to post

> What parameter are you trying to change?

My subclassed Transform calls some external web service and I want to  allow a user configure that web service settings (url-port-ssl-etc) by clicking on the business process <transform> element. Also, it is crucial that such a transformation cannot be delegated to BO. So anyway, thank you, it is fine if I move settings to BP, but it is not that elegant :(

Dmitrii Baranov · Jul 25, 2023 go to post

I'm a very beginner :) but personally I would not recommend such an approach. That "syntax sugar"  will only discourage people who come from the world of Java and C#. 

Dmitrii Baranov · Jul 31, 2023 go to post

Ended up with a compromise 😊 Just replaced <transform> with a <call> and delegated that transform to BO 

Dmitrii Baranov · Sep 11, 2023 go to post

It seems to me that I found the answer (was googling for two hours and found nothing, then used forum search and voila):

  1. Declare a class which inherits Ens.Production:
Class My.Production Extends Ens.Production
{

XData ProductionDefinition
{
<Production Name="My.Production" TestingEnabled="true" LogGeneralTraceEvents="true">
  <Description></Description>
  <ActorPoolSize>1</ActorPoolSize>
</Production>
}
}
  1. And launch:
Set isProductionRunning = ##class(Ens.Director).IsProductionRunning("My.Production")
If isProductionRunning = 0 {
            Set sc = ##class(Ens.Director).StartProduction("My.Production")
}
Dmitrii Baranov · Sep 25, 2023 go to post

Interesting... I'm actively using the Write method, but for emitting console messages using constant strings. Anyway, thanks

Dmitrii Baranov · Oct 3, 2023 go to post

Thanks so much! It was not obvious for me that the DebugMode property value is of type integer (looks like boolean)

Dmitrii Baranov · Nov 21, 2023 go to post

Thanks, got it. Then perhaps this setting can somehow be changed programmatically, in the installer code?

Dmitrii Baranov · Nov 23, 2023 go to post

You have to cast your %CharacterStream to a specific implementation, say, to %GlobalCharacterStream. The latter one implements %GlobalStreamAdaptor, which inherits from %AbstractStream and %Stream.Object. Finally, the %Stream.Object class exposes the CopyFrom method which allows you to copy data from your %Stream.GlobalBinary instance (and vice versa)

Dmitrii Baranov · Feb 26, 2024 go to post

Thanks a lot! 

In short, I failed.

1. This requires installing pip3 on Unix and you'll need to be su

2. If you want to reference npm libraries, you'll need to be su (although technically it's possible to place JS library/libraries code in the XData section(s))

3. The most annoying thing is that most JS libraries are asynchronous and that's a dead end

Dmitrii Baranov · Oct 20, 2024 go to post

Thanks Robert, I've read this article, but the syntax isn't entirely clear to me:

Select ID,Company from rcc_IC.ItemList
Where FOR SOME %ELEMENT(rcc_IC.ItemList.Items) ($list(%Value,3) in ('blue','yellow'))

Here the integer is used, but I need to search using a named property

Dmitrii Baranov · Oct 21, 2024 go to post

The option with $LIST(...) works, thanks again (not so elegant though but OK as a workaround). I'm thinking about registering a feature request.

Dmitrii Baranov · Nov 2, 2024 go to post

I'm sorry for the false alarm. I've increased the FHIR server "Max Search Results" option value so now everything works fine.

Dmitrii Baranov · Nov 17, 2024 go to post

Hi Tani, in most cases the stream contains JSON. The container definition looks like:

Class MyRequest Extends (Ens.StreamContainer, %JSON.Adaptor) { }

I just want the stream content to be rendered always