go to post Luis Angel Pére... · Sep 12, 2023 And if you want to autostart the production: set production = "Your.Production" set ^Ens.Configuration("csp","LastProduction") = production do ##class(Ens.Director).SetAutoStart(production)
go to post Luis Angel Pére... · Sep 12, 2023 Well, if your IRIS doesn't support Embedded Python you can do the following (if you are using a Linux Server): Install some application like ImageMagick in your server From your Business Operation use $ZF(-100) function to execute in the server the magick command to convert the PDG to JPG, something like: $ZF(-100,"","magick","\usr\image.pdf","\usr\image.jpg") Maybe it takes some time to finish, you can wait to the end of the execution or just create a business service to get all the new pdf files.
go to post Luis Angel Pére... · Sep 11, 2023 Take a look at the following documentation: https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls...
go to post Luis Angel Pére... · Sep 11, 2023 Here you can find a similar question from @Evgeny Shvarov https://community.intersystems.com/post/how-can-i-change-production-sett...
go to post Luis Angel Pére... · Sep 11, 2023 I was thinking to use the autosave as backup, not to overwrite the class that you are editing directly. In case that the date of the autosave is later than the date of modification of the class the system should offer to load the autosaved class.
go to post Luis Angel Pére... · Sep 11, 2023 Adapt and run this query to check what are the ODBC types for your table from the SQL explorer: SELECT colname,odbctype,isnullable,isreadonly FROM utility.statement_columns('SELECT Name,DOB,Home_City,Home_State from Sample.Person')
go to post Luis Angel Pére... · Sep 11, 2023 Indeed, Yone. Usually we are focused in new and more "interesting" functionalities of InterSystems products and we totally forget the daily work and how to make the life easier for the users with this type of details.
go to post Luis Angel Pére... · Sep 11, 2023 That's easy! You only need to add in your DTL an action with the following code: Set matchFound = 0 // Get count of OBR segments Set tOBXCnt = source.GetValueAt("PIDgrpgrp(1).ORCgrp(1).OBXgrp(*)") // Loop through OBXs and evaluate field contents For tIter = 1:1:tOBXCnt { set nextIter = tIter+1 if tIter < tOBXCnt { If ((source.GetValueAt("PIDgrpgrp(1).ORCgrp(1).OBXgrp("_tIter_").OBX:ObservationValue")["SEDATION:") && (source.GetValueAt("PIDgrpgrp(1).ORCgrp(1).OBXgrp("_nextIter_").OBX:ObservationValue")["Procedure")) { Set matchFound = 1 } } } if (matchFound = 1) { do target.SetValueAt("28014-9","PIDgrpgrp(1).ORCgrp(1).OBR:UniversalServiceID.identifier") } As you can see, we keep the seach of the "SEDATION:" and "Procedure" strings and after that, if we find it in our source message, we just update the value of the specific field in the target.
go to post Luis Angel Pére... · Sep 8, 2023 As a former Java developer, my suggestion is not to use Enumerations, at the end that field is a common String, if you want to restrict the value of that column do it from the code, not from the database.
go to post Luis Angel Pére... · Sep 8, 2023 Hi @Gautam Rishi ! You can see a similar question here. You can try getting the metadata from the ResultSet or directly getting the ODBCTypes from a query.
go to post Luis Angel Pére... · Sep 8, 2023 Thank you @Robert Cemper for your more than generous evaluation of QuinielaML!
go to post Luis Angel Pére... · Sep 8, 2023 Hi @Prashant Singhal ! Please, read this interesting article to get the data type from a query: https://community.intersystems.com/post/sql-statement-metadata
go to post Luis Angel Pére... · Sep 7, 2023 Hi @Adam Raszkiewicz ! You can find here an example of a Mirroring using API developed by @Mario Sanchez Macias
go to post Luis Angel Pére... · Sep 7, 2023 Hi @lw lw ! Mirroring support the journal restore, you can read the associated documention here
go to post Luis Angel Pére... · Sep 5, 2023 Hi @Xavier Gracia Aloy! You can check this article to see how to send and receive DICOM messages from IRIS to PACS and adapt the code as you need. Maybe this response is helpful to you too.
go to post Luis Angel Pére... · Sep 5, 2023 Hi Yone! As far as I know there are no applications to compare productions (maybe I'm wrong), but It wouldn't be too hard to develop something to check it, at the end, a production is saved as any other class and you can access to the specific file of the class to compare. Here you have an example of a production class: Class QUINIELA.Production Extends Ens.Production [ Not ProcedureBlock ] { XData ProductionDefinition { <Production Name="QUINIELA.Production" LogGeneralTraceEvents="false"> <Description></Description> <ActorPoolSize>1</ActorPoolSize> <Item Name="QUINIELA.BO.ImportBO" Category="" ClassName="QUINIELA.BO.ImportBO" PoolSize="5" Enabled="true" Foreground="false" Comment="" LogTraceEvents="false" Schedule=""> </Item> <Item Name="QUINIELA.BP.ImportBPL" Category="" ClassName="QUINIELA.BP.ImportBPL" PoolSize="1" Enabled="true" Foreground="false" Comment="" LogTraceEvents="false" Schedule=""> </Item> <Item Name="QUINIELA.BO.StatusBO" Category="" ClassName="QUINIELA.BO.StatusBO" PoolSize="1" Enabled="true" Foreground="false" Comment="" LogTraceEvents="false" Schedule=""> </Item> <Item Name="QUINIELA.BS.FromWSBS" Category="" ClassName="QUINIELA.BS.FromWSBS" PoolSize="0" Enabled="true" Foreground="false" Comment="" LogTraceEvents="false" Schedule=""> </Item> <Item Name="QUINIELA.BO.PrepareBO" Category="" ClassName="QUINIELA.BO.PrepareBO" PoolSize="1" Enabled="true" Foreground="false" Comment="" LogTraceEvents="false" Schedule=""> </Item> <Item Name="QUINIELA.BO.TrainBO" Category="" ClassName="QUINIELA.BO.TrainBO" PoolSize="1" Enabled="true" Foreground="false" Comment="" LogTraceEvents="true" Schedule=""> </Item> <Item Name="QUINIELA.BP.PrepareBP" Category="" ClassName="QUINIELA.BP.PrepareBP" PoolSize="1" Enabled="true" Foreground="false" Comment="" LogTraceEvents="false" Schedule=""> </Item> <Item Name="QUINIELA.BP.TrainBP" Category="" ClassName="QUINIELA.BP.TrainBP" PoolSize="1" Enabled="true" Foreground="false" Comment="" LogTraceEvents="false" Schedule=""> </Item> <Item Name="QUINIELA.BO.UtilsBO" Category="" ClassName="QUINIELA.BO.UtilsBO" PoolSize="1" Enabled="true" Foreground="false" Comment="" LogTraceEvents="true" Schedule=""> </Item> <Item Name="QUINIELA.BO.MatchBO" Category="" ClassName="QUINIELA.BO.MatchBO" PoolSize="1" Enabled="true" Foreground="false" Comment="" LogTraceEvents="true" Schedule=""> </Item> </Production> } } And here you have an example in Python to compare the content of two files. You only need to know the path in your server to access to those class files to compare.
go to post Luis Angel Pére... · Sep 4, 2023 No problem @Christine Nyamu ! Take a look to this code: Set context.matchFound = 0 // Get count of OBR segments Set tOBXCnt = request.GetValueAt("PIDgrpgrp(1).ORCgrp(1).OBXgrp(*)") // Loop through OBXs and evaluate field contents For tIter = 1:1:tOBXCnt { set nextIter = tIter+1 if tIter < tOBXCnt { If ((request.GetValueAt("PIDgrpgrp(1).ORCgrp(1).OBXgrp("_tIter_").OBX:ObservationValue")["SEDATION:") && (request.GetValueAt("PIDgrpgrp(1).ORCgrp(1).OBXgrp("_nextIter_").OBX:ObservationValue")["Procedure")) { Set context.matchFound = 1 } } } This code will check the OBX segments and check a variable to 1 in case that "SEDATION" and "Procedure:" are in consecutive segments. You can add that code in an Activity of your BPL and check the matchFound variable.
go to post Luis Angel Pére... · Sep 2, 2023 Well, you hit the nail @Dmitry Maslennikov . Here in Spain a public contest for the public health service of Asturias was published 1 month ago for a data lake and we missed the opportunity to participate.