go to post Enrico Parisi · Jun 29, 2025 Please provide more context and details when you post questions. To get the request submitted body (if any) you can use the Content property of the %CSP.Request object (i.e. %request). For the response it's not possible, the response is "sent to the browser" (via Web Gateway....) immediately, there is no buffer or anything. If you want to capture YOUR response, put it in a buffer and when you are done, send it from your buffer "to the browser"
go to post Enrico Parisi · Jun 29, 2025 Hi @Irène Mykhailova, I think the Idea I posted does contains all the information you asked, maybe not formatted as requested. Anyway, I've edited the Idea with the same info but...formatted differently 😊
go to post Enrico Parisi · Jun 25, 2025 If I recall it correctly when a message is suspended a warning event is logged in the Event Log. Try searching for warnings from that BO around the time it was suspended and from there you can get the trace.
go to post Enrico Parisi · Jun 22, 2025 Hi @Benjamin De Boe, this is GREAT news, it's going to be EXTREMELY useful in many environments I'm working with. I fully agree with you that most of the times exporting statistics from a development environment to a production environment is not advisable, so much so that I've created an entry in the Ideas Portal to give us the option to disable exporting statistics (i.e. use /exportselectivity=0 qualifier) when exporting production component.Note that at the moment is not possible to export without including statistics when exporting a Production or Production components and this a pity, therefore I created the Idea: Do not include table statistics when exporting Production for deploymentI encourage anyone that agree or is interested to vote for ti! 😊
go to post Enrico Parisi · Jun 20, 2025 I suggest to start from the documentation: Introduction to Namespaces and Databases Then come back if you have more specific questions.
go to post Enrico Parisi · Jun 18, 2025 Have a look to this two posts: How to programmatically obtain a list of configured namespaces How can I get the name of the data database in the current namespace?
go to post Enrico Parisi · Jun 16, 2025 In case anybody cares, I've submitted the idea of supporting 2FA in DBeaver. Add support for two-factor authentication in DBeaver
go to post Enrico Parisi · Jun 16, 2025 If you think that it can be important to add something else, please let us know. How about support for two-factor authentication? Now days 2FA/MFA is virtually mandatory in some environment.
go to post Enrico Parisi · Jun 16, 2025 Hi @Evgeny Shvarov, as per your suggestion I've submitted the idea: Make DICOM iteroperability adapter usable in Mirror configuration/environment If anyone think this can be useful can now vote for it 😊
go to post Enrico Parisi · Jun 14, 2025 No, it doesn't. If the variable String contains a Base 64 encoded HL7 message, then: Set HL7MessageResponse=##class(EnsLib.HL7.Message).ImportFromString($system.Encryption.Base64Decode(String),.sc) ; handle sc error here Set DocType=##class(EnsLib.HL7.Schema).ResolveSchemaTypeToDocType(HL7MessageResponse.TypeVersion,HL7MessageResponse.Name) Set sc=HL7MessageResponse.PokeDocType(DocType) ; handle sc error here After that, the variable HL7MessageResponse is an instance (OREF, object reference) of an Ens.HL7.Message with proper DocType, Name, etc. that you can use as HL7 response back to your HL7 BP Router.
go to post Enrico Parisi · Jun 13, 2025 What's the datatype of the HL7 message in SendMessageRespose? I assume that the HL7 message in SendMessageRespose is a %String. String variable contains the HL7 message, then: Set HL7MessageResponse=##class(EnsLib.HL7.Message).ImportFromString(String,.sc) ; handle sc error here Set DocType=##class(EnsLib.HL7.Schema).ResolveSchemaTypeToDocType(HL7MessageResponse.TypeVersion,HL7MessageResponse.Name) Set sc=HL7MessageResponse.PokeDocType(DocType) ; handle sc error here
go to post Enrico Parisi · Jun 13, 2025 How did you installed set up your FHIR Server? When installed using the IRIS portal the FHIR Web Application is automatically created and configured with the following Application Roles :%DB_HSCUSTOM%DB_HSLIB%DB_HSSYS%DB_<YourNamespace>X0001R%DB_<YourNamespace>X0001V%HS_DB_<YourNamespace>%HS_ImpersonateUser
go to post Enrico Parisi · Jun 12, 2025 The log from ^ISCLOG you posted does not reflect the code you posted. Something MUST happen to the CBORDRequest.encodedMessage property AFTER the code you posted before the request is sent. Please post as much code you can up until InvokeClient().
go to post Enrico Parisi · Jun 11, 2025 Fixed for you: /// Returns Age in years from DOB in YYYYMMDD format /// Make sure DOB is not null ("") before calling the function. ClassMethod GetAge(DateOfBirth As %String) As %Integer { Set today=$zd($h,8) Set age=$e(today,1,4)-$e(DateOfBirth,1,4) If $e(today,5,8) < $e(DateOfBirth,5,8) Set age=age-1 Quit age } Not that complex after all.
go to post Enrico Parisi · Jun 11, 2025 From the ISCSOAP log it's evident that the the content of encodedMessage property/tag is not the encoded HL7 raw message but it was assigned with an oref (object reference, an object instance) of the osuwmc.Nutrition.OSU.CBOARDNetMenuRequest.SendMessageRequest class. This is not what the code you posted is doing, so I guess the actual code is different or the encodedMessage property is set to an oref after the code you posted. It looks like somewhere after that code there is a: Set CBORDRequest.encodedMessage=CBORDRequest Beside that, my curiosity: set a = $SYSTEM.Encryption.Base64Encode((pMsgOut.RawContent))Why two parenthesis? set CBORDRequest.encodedMessage = $Get(a)Why using $Get for a variable that is indeed/for sure defined?
go to post Enrico Parisi · Jun 11, 2025 What product? IRIS, IRIS fir Health, HealthShare HC or HealthShare? How did you created in the Management Portal the new database/namespace?
go to post Enrico Parisi · Jun 10, 2025 Do you need to decode a Base64 stream or you just need to read a stream to a string? If so, then: Set string=stream.Read($$$MaxStringLength)
go to post Enrico Parisi · Jun 10, 2025 Set string= $System.Encryption.Base64Decode(stream.Read($$$MaxStringLength))
go to post Enrico Parisi · Jun 10, 2025 If the B64 is "small" to fit a %String (~3.5MB or less), then just use $System.Encryption.Base64Decode()
go to post Enrico Parisi · Jun 8, 2025 IMHO the best approach is to take advantage of the object-oriented development environment that IRIS provide and have the common functions/methods in a single (or multiple) classes, possible abstract classes, and inherit them in the "main" class. Class Community.perf.ClassMain Extends Community.perf.ClassAbs { ClassMethod Compare(NumCalls As %Integer) { Set Start=$zh Do ..ClassCalls(NumCalls) Set End=$zh Write "Class calls: ",End-Start,! } ClassMethod ClassCalls(NumCalls As %Integer) { For i=1:1:NumCalls { Set x=..Compute(NumCalls) } } } Class Community.perf.ClassAbs [ Abstract ] { ClassMethod Compute(Num As %Integer) { ;Quit Num Set ret=Num Quit ret } } How about performance? EPTEST>do ##class(Community.perf.ClassMain).Compare(100000000) Class calls: 31.675438 In latest version of IRIS (and Cachè?) inherited members method code is no longer duplicated, so there is no difference then using separate classes but I think this approach is more modern, elegant and, depending on situations, MUCH more flexible,