go to post Enrico Parisi · Nov 20, 2023 Again, difficult to tell from the limited info provided. What are you doing after instantiating HS.FHIRServer.API.Data.Request ? HS.FHIRServer.API.Data.Request is a serial class, not a persistent class, are you using it in a SendRequest(Sync/Async) call? If so, then you cannot do that. But again, this is only a guess, please provide more context. Enrico
go to post Enrico Parisi · Nov 20, 2023 Difficult to tell from the limited info provided. What I can guess is that it seems you are trying to use a serial class (HS.FHIRServer.API.Data.Request) as message. But I might be wrong, please provide more context. Enrico
go to post Enrico Parisi · Nov 20, 2023 My guess/bet is that they need/want to include the specimen label(s) in PDF format. I think that crating a custom schema with custom Z segment, possibly a repeating segment, is an option. Enrico
go to post Enrico Parisi · Nov 18, 2023 Hi Yone, it would be nice of you if you provide a feedback on the answers you receive. Enrico
go to post Enrico Parisi · Nov 18, 2023 Thank you Dan for your effort. A possible place to share your project can be InterSystems Corporation Github where other samples like Sample.Person and other are available. If possible it would be nice to include the next/fixed version of JDBC, if the fix it's only a new jar and not within IRIS. Ideally all the relevant info should be added to the documentation. Enrico
go to post Enrico Parisi · Nov 18, 2023 The documentation includes a lot of info about INSERT OR UPDATE Sql command, including: "An existing row is one in which the value being inserted already exists in a column that contains a unique constraint. For more details, see Uniqueness Checks." "When using INSERT OR UPDATE, you can only insert IDKEY column values, not update them. If the table has an IDKEY index and another UNIQUE constraint, INSERT OR UPDATE matches these columns to determine whether to perform an insert or an update. If the other key constraint fails, this forces INSERT OR UPDATE to perform an update rather than an insert. However, if the specified IDKEY column values do not match the existing IDKEY column values, this update fails and generates an SQLCODE -107 error, because the update is attempting to modify the IDKEY columns." I suggest to read carefully the relevant documentation page. Enrico
go to post Enrico Parisi · Nov 14, 2023 It seems that character 8211 (en dash) is not utf-8 but utf-16, google is your best friend and I'm not an expert in unicode, utf-8, utf-16 etc.! 😊 Set xml="<?xml version=""1.0"" encoding=""UTF-8""?>"Set xml=xml_"<Text>This is n-dash "_$wc(8211)_" in xml</Text>"Set xml=$ZCONVERT(xml,"O","UTF8")Set sc=##class(%XML.XPATH.Document).CreateFromString(xml, .xmlDoc)Write scSet sc=xmlDoc.EvaluateExpression("/Text","text()",.result)Write result.GetAt(1).Value,! Result: This is n-dash – in xml Enrico
go to post Enrico Parisi · Nov 14, 2023 Out of curiosity, was the system upgraded from a Cahcé based product? (Ensemble, HealthShare etc.) Enrico
go to post Enrico Parisi · Nov 14, 2023 "I realized that the headers are being reseted, keeping just 3 basic headers for the redirection" Sounds/looks like a bug to me. Enrico
go to post Enrico Parisi · Nov 14, 2023 I suspect you have some inconsistency in the Character Encoding in your XML. Is the XML Character Encoding declared? If yes, how? i.e. does the first line contains something like "<?xml version="1.0" encoding="utf-8"?>" ? How are you crating the %XML.XPATH.Document instance from your XML? It would be helpful if you can post a tiny code to reproduce the issue. Enrico
go to post Enrico Parisi · Nov 10, 2023 %SYS>s return=1 %SYS>do display^GLOBUFF(200,.return) After the call return() contains the sorted array with same info s displayed. Enrico
go to post Enrico Parisi · Nov 10, 2023 If a server installation running Caché wants to migrate to IRIS most likely need to upgrade/move/migrate the Operating System as well. What IRIS officially supported Server Operating System supports older processor CPU architecture/model? Please note that mine is a genuine question, I don't want to open a debate. Enrico
go to post Enrico Parisi · Nov 8, 2023 I was surprised that overriding the OnFailureTimeout() in the custom BO class did not work! According to the description that was definitely the way to go. But it indeed does not work(ed). I opened a WRC and it turned out that there is a bug "around" the OnFailureTimeout() implementation in Ens.BusinessOperation. So, if anyone need to implement OnFailureTimeout() with Set ..Retry=1, first it requires to contact WRC, explain the problem and reference DP-426250 to get the fix. Enrico
go to post Enrico Parisi · Nov 8, 2023 Sorry, forgot the namespace, try this: do ##class(%XML.XPATH.Document).CreateFromStream(pResponse.ContentStream, .tPnRXML) Set tPnRXML.PrefixMappings="ns urn:oasis:names:tc:ebxml-regrep:xsd:rs:3.0" Set sc=tPnRXML.EvaluateExpression("/XMLMessage/ContentStream/ns:RegistryResponse/ns:RegistryErrorList/ns:RegistryError","@errorCode",.tPnRResult) Set tPnRResult.GetAt(1).Value ; Value=XDSRegistryDeprecatedDocumentError
go to post Enrico Parisi · Nov 7, 2023 do ##class(%XML.XPATH.Document).CreateFromStream(pResponse.ContentStream, .tPnRXML) Set sc=tPnRXML.EvaluateExpression("/XMLMessage/ContentStream/RegistryResponse/RegistryErrorList/RegistryError","@errorCode",.tPnRResult) Set errorCode=tPnRResult.GetAt(1).Value ; errorCode=XDSRegistryDeprecatedDocumentError Enrico
go to post Enrico Parisi · Nov 7, 2023 Hi Dan! I'm please you are listening 😊 "I am listening! $system.external does not replace the old Java Gateway but the old Java and JDBC Gateways should still be available." I know it's "still there" and works, however all the documentation for the old Java and .NET Gateway has been removed since long time (starting from IRIS?), so implementing it today it's difficult for any developer without previous experience.In addition, I'm not sure if it would be a good idea to implement today external calls using the old Gateway, I assume that using the new $system.external is preferred.In fact the documentation contains some info for converting from old gateway to new $system.external: "...upgrading your code is a simple matter of replacing certain class and method references..." Assuming that upgrading is "simple matter of replacing certain class and method references", unfortunately for MANY use cases there is no documentation of what to replace with what. The problem is that now we have no documentation of the (still available) old gateway and "scarce" documentation for the new one.I don't remember the details of the old gateway documentation, however it offered two GREAT code samples where most (if not all) the functionality was implemented: %Net.Remote.DotNet.Test%Net.Remote.Java.Test Using only documented feature/methods of $system.external is not possible to convert the old samples to use $system.external. So, my idea was to encourage the implementation of two samples (maybe Phyton as well?) with all the features. That's the issue at hand. Ciao,Enrico
go to post Enrico Parisi · Nov 7, 2023 Try this: Class Community.HL7.Laboratorio.ORUToCUPv1 Extends Ens.DataTransformDTL [ ClassType = "", DependsOn = EnsLib.HL7.Message, ProcedureBlock ] { Parameter IGNOREMISSINGSOURCE = 0; Parameter REPORTERRORS = 0; Parameter TREATEMPTYREPEATINGFIELDASNULL = 0; XData DTL [ XMLNamespace = "http://www.intersystems.com/dtl" ] { <transform sourceClass='EnsLib.HL7.Message' targetClass='EnsLib.HL7.Message' sourceDocType='2.5:ORU_R01' targetDocType='2.5:ORU_R01' create='new' language='objectscript' > <assign value='source.{MSH}' property='target.{MSH}' action='set' /> <assign value='source.{PIDgrpgrp().PIDgrp.PID}' property='target.{PIDgrpgrp().PIDgrp.PID}' action='set' /> <assign value='source.{PIDgrpgrp().PIDgrp.PV1grp}' property='target.{PIDgrpgrp().PIDgrp.PV1grp}' action='set' /> <assign value='source.{PIDgrpgrp().PIDgrp.NTE()}' property='target.{PIDgrpgrp().PIDgrp.NTE()}' action='set' /> <assign value='0' property='ORCCounter' action='set' /> <foreach property='source.{PIDgrpgrp(1).ORCgrp()}' key='ORC' > <assign value='source.{PIDgrpgrp().ORCgrp(ORC).ORC}' property='target.{PIDgrpgrp(1).ORCgrp(ORC).ORC}' action='set' /> <assign value='source.{PIDgrpgrp().ORCgrp(ORC).OBR}' property='target.{PIDgrpgrp(1).ORCgrp(ORC).OBR}' action='set' /> <assign value='source.{PIDgrpgrp(1).ORCgrp(1).TQ1grp(ORC)}' property='target.{PIDgrpgrp(1).ORCgrp(ORC).TQ1grp(ORC)}' action='set' /> <foreach property='source.{PIDgrpgrp(1).ORCgrp(ORC).OBXgrp()}' key='OBX' > <if condition='1=0' > <true> <assign value='source.{PIDgrpgrp(1).ORCgrp(ORC).OBXgrp(OBX)}' property='target.{PIDgrpgrp(1).ORCgrp(OBX).OBXgrp(OBX)}' action='set' /> </true> <false> <assign value='ORCCounter+1' property='ORCCounter' action='set' /> <assign value='source.{PIDgrpgrp(1).ORCgrp(ORC).OBR}' property='target.{PIDgrpgrp(1).ORCgrp(ORCCounter).OBR}' action='set' /> <assign value='source.{PIDgrpgrp(1).ORCgrp(ORC).ORC}' property='target.{PIDgrpgrp(1).ORCgrp(ORCCounter).ORC}' action='set' /> <assign value='source.{PIDgrpgrp(1).ORCgrp(ORC).TQ1grp()}' property='target.{PIDgrpgrp(1).ORCgrp(ORCCounter).TQ1grp()}' action='set' /> <assign value='source.{PIDgrpgrp(1).ORCgrp(ORC).OBXgrp(OBX)}' property='target.{PIDgrpgrp(1).ORCgrp(ORCCounter).OBXgrp(OBX)}' action='set' /> </false> </if> </foreach> </foreach> </transform> } } Ciao, Enrico P.S.: I changed the IF condition for testing
go to post Enrico Parisi · Nov 7, 2023 Sorry, I mixed things up! Classes in the package HS.FHIR.vSTU3.* are deprecated but HS.FHIR.DTL.vSTU3.* classes are not deprecated. At least to my knowledge. Why do you think they are deprecated? When I read your post I assumed you referred to the deprecated HS.FHIR.vSTU3.* classes, in fact you mentioned HS.FHIR.DTL.vSTU3.Model.Resource.Bundle, so I got confused. Using:Set payload=##class(HS.FHIR.DTL.vSTU3.Model.Resource.Bundle).FromJSON(pHttpResponse.Data,"vSTU3") You should be able to "convert" (import) the stream bundle to the corresponding classes and then "navigate" the bundle, including the resources within it, as a classic IRIS class. Enrico