go to post Dmitry Maslennikov · May 26, 2021 If you currently have running instance with all the namespaces together, for some time, you may look at ^GLOBUFF, to see how your global buffers used by now, and decide how to split that buffer for each instance.
go to post Dmitry Maslennikov · May 26, 2021 Switch to Docker will have much more pluses in your case.
go to post Dmitry Maslennikov · May 24, 2021 It’s a binary file and it’s contest for the current context not so important, what’s important is an ownership of the file. So ls -la /usr/local/etc/irissys/iris.reg
go to post Dmitry Maslennikov · May 21, 2021 Depends on what are you trying to achieve. Import as is, with an iterator Class User.Test Extends (%RegisteredObject, %JSON.Adaptor) { Property name As %String; ClassMethod Import() { Set data = [{ "name": "test1" }, { "name": "test2" }] Set iter = data.%GetIterator() While iter.%GetNext(.key, .value) { Set obj = ..%New() Set tSC = obj.%JSONImport(.value) Write !,obj.name } } } Import with a wrapper object Class User.TestList Extends (%RegisteredObject, %JSON.Adaptor) { Property items As list Of User.Test; ClassMethod Import() { Set data = [{ "name": "test1" }, { "name": "test2" }] #; wrap to object Set data = { "items": (data) } Set list = ..%New() Set tSC = list.%JSONImport(.data) For { set obj = list.items.GetNext(.key) Quit:key="" Write !,obj.name } } }
go to post Dmitry Maslennikov · May 20, 2021 Could you try to open URL in any Browser. http://192.168.245.118:57789/api/atelier/ It should offer to enter login and password, in a modal dialog, and after that should some JSON. In your case, looks like it responses with some HTML, probably with some error, like not found 404.
go to post Dmitry Maslennikov · May 17, 2021 LuhnMCheckSum(input) public { Set input = $Piece(input, "#", 1) Set codePoints = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/:" Set n = $Length(codePoints) Set sum = 0 Set factor = 2 Set len = $Length(input) For i = len:-1:1 { Set codePoint = $Find(codePoints, $Extract(input, i)) - 2 Set addend = factor * codePoint Set factor = $Case(factor, 2: 1, : 2) Set addend = (addend \ n) + (addend # n) Set sum = sum + addend } Set remainder = sum # n Set checkCodePoint = (n - remainder) # n Return $Extract(codePoints, checkCodePoint + 1) } LuhnMValidate(input) public { Set checksum = $Piece(input, "#", 2) Set input = $Piece(input, "#") Return $$LuhnMCheckSum(input) = checksum }
go to post Dmitry Maslennikov · May 13, 2021 So, you just need help in find the place in the class which cause an error? I would suggest to try removing each class member one by one, until you’ll narrow it to one member, and maybe you’ll realize why it’s happening.
go to post Dmitry Maslennikov · May 11, 2021 Yeah, sure, it's quite simple to do. JWT tokens contain three parts separated by a pointer sign. Header, with the algorithm of the signature and the type of token Payload, any data in JSON format Signature needs to verify the token All of those parts are encoded with Base64 Set token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c" #; Extract parts of the token Set $ListBuild(header, payload, sign) = $ListFromString(token, ".") #; Decode and parse Header Set header = $System.Encryption.Base64Decode(header) Set header = {}.%FromJSON(header) Write !,"header" Write !,"alg = ",header.alg Write !,"typ = ",header.typ #; Decode and parse Payload Set payload = $System.Encryption.Base64Decode(payload) Set payload = {}.%FromJSON(payload) Write !!,"data" Write !,"name = ", payload.name Write !,"iat = ", payload.iat
go to post Dmitry Maslennikov · May 10, 2021 As I said, you have to get it from your client, It's no publicly available anymore.
go to post Dmitry Maslennikov · May 7, 2021 ObjectScript does not have such thing as an Interface. The only way to get something like this is to use Abstract class, with methods that throw an error, while not overridden.
go to post Dmitry Maslennikov · May 2, 2021 So, you may have something like this in your CSP file <csp:class super="%CSP.Page,App.Utils"> By default, it has only %CSP.Page class, but you may have some other class, where you may the logic with method OnPreHTTPafter
go to post Dmitry Maslennikov · Apr 26, 2021 Are you sure, that the process was terminated? You should check cconsole.log/messages.log journal records, you should find there where transaction was started, you changed the data, check if change was really in transaction and any other records within the process, it should be commit or rollback. In any case, when restart Cache, it should terminate any unfinished processes and rollback data.
go to post Dmitry Maslennikov · Apr 23, 2021 just set it to the local array or global, will sort it set arr("cba")="" set arr("abc")="" zw arr
go to post Dmitry Maslennikov · Apr 20, 2021 Those are special symbols used to draw UI in textual interfaces and no way to get any readable text from it, it can be translated to the same symbols only, just in the different codepage.
go to post Dmitry Maslennikov · Apr 20, 2021 VSCode and Cache server can be far from each other, on different machines, so, it’s not as easy to implement. And as I said, it’s not a task for VSCode, it’s mostly a deployment task, which have to be done separately.
go to post Dmitry Maslennikov · Apr 16, 2021 How many files are you trying to import this way? Unfortunately VSCode not so good for such a task, and even any editor. In fact, the best way will be to do it directly with Caché. Just using $system.OBJ.LoadDir, will do it much better.
go to post Dmitry Maslennikov · Apr 16, 2021 So, in this case, In fact, if you are not going to migrate that data to IRIS in the end, I see no reasons to use IRIS for such data. And microservices has written in some other languages, really a better way. Would it be possible to synchronize the date from other services with IRIS? So, your patient data still will be there, and backed up in IRIS, with FHIR endpoint. So, in this case, you can use IRIS Production to do this particular task.
go to post Dmitry Maslennikov · Apr 15, 2021 That's interesting, but did you try to discover the differences, not only in the number of rows? I would suggest, that the issue in time formats. Try to play with different modes in SMP
go to post Dmitry Maslennikov · Mar 30, 2021 You should use flag /importselectivity=1, it has value 2 by default, which keeps existing values if present. Details in the documentation.