New post

Find

Announcement
· Jan 22

[Video] Open Source LLMs

Hi Community!

We're happy to share the next video in the series dedicated to Gen AI on our InterSystems Developers YouTube:

⏯ Open Source LLMs

In this video, we explore the differences between open-source and proprietary large language models (LLMs). Proprietary models, like those from OpenAI or Google, operate as black boxes hosted in their cloud environments, offering high-quality performance but limiting data control and fine-tuning options. In contrast, open-source models can be downloaded and run locally, offering greater flexibility, transparency, and control over data, though they often require significant hardware resources and may deliver lower-quality output.

🗣  Presenter@Don Woodlock, Vice President, Healthcare Solutions Development, InterSystems

Enjoy watching, and look forward to more videos! 👍

Discussion (0)1
Log in or sign up to continue
Question
· Jan 22

Question about using ODBC for SQL Gateway connections

I am currently experiencing frustration with trying to Authenticate an Active Directory account through JDBC as the Hospital System moves from OnPrem SQL Server to using Azure SQL Server with Microsoft Entra Authentication.

Microsoft cannot give me a straight answer of what is required from a JDBC standpoint to authenticate from a Linux environment.

I am working with WRC, but we are both struggling to find the specific answer for JDBC. If I use my local desktop and JDBC to connect through DBeaver I don't have an issue. So, I am thinking the issue is with not having a java keystore, or keys setup within Linux for this to work.

It got me thinking is that we do not have this issue with the Linux ODBC connections we use with Perl so maybe I should move to using ODBC in Intersystems as well. But we have so much code developed using the existing JDBC SQL Gateway connections, so I have some questions.

  • What is the difference between using JDBC vs ODBC for SQL Gateway connections?
  • How does it affect the SQL Adapters/code that is already in use if we move to ODBC from JDBC?
  • Where does the ODBC.ini have to live for InterSystems to work?
    • the Documentation references the Templates in the bin directory, but those are templates. Where do I need to put the true odbc.ini that I intend to use?
  • Can I use my existing Linux ODBC.ini?

 

Thanks

Scott

2 Comments
Discussion (2)1
Log in or sign up to continue
Announcement
· Jan 22

Looking for Exam Design Feedback for InterSystems ObjectScript Specialist Certification Exam

Hi Everyone!

The Certification Team of InterSystems Learning Services is currently developing an InterSystems ObjectScript Specialist certification exam, and we are reaching out to our community for feedback that will help us evaluate and establish the contents of this exam.   

Please note that this is one of two exams being developed to replace our InterSystems IRIS Core Solutions Developer exam. You can find more details about the other exam, InterSystems IRIS Developer Professional exam, here

How do I provide my input? Complete our Job Task Analysis (JTA) survey! We will present you with a list of job tasks, and you will rate them on their importance as well as other factors. 

How much effort is involved? It takes about 20-30 minutes to fill out the survey. You can be anonymous or identify yourself and ask us to get back to you.  

How can I access the survey? You can access the survey here

  • Survey does not work well on mobile devices - you can access it, but it will involve a lot of scrolling.
  • Survey can be resumable if you return to it on the same device in the same browser – Use the Next button at the bottom of the page to save your answers 
  • Survey will close on March 15, 2025 

What’s in it for me? You get to weigh in on the exam topics for our new exam, and as a token of our appreciation, all participants will be entered into a raffle where 10 lucky winners will receive a $50 Tango gift card, Global Masters points, and potentially other swag. Note: Tango gift cards are only available for US-based participants. InterSystems and VA employees are not eligible. 

Here are the exam title and the definition of the target role: 

InterSystems ObjectScript Specialist 

An IT professional who is familiar with object-oriented programming concepts and: 

  • creates InterSystems IRIS classes, 
  • writes and reviews InterSystems ObjectScript and SQL code, and 
  • uses both objects and SQL for data access. 

At least six months to one year of experience with the tasks listed above is recommended. 

3 Comments
Discussion (3)2
Log in or sign up to continue
InterSystems Official
· Jan 22

Aprende FHIR como nunca antes

¡Tenemos un nuevo curso para ti!... pero sólo si te interesa estar a la última en el mundo de la interoperabilidad en entornos sanitarios. 

Igual no lo sabes, pero la familia de productos de InterSystems, con IRIS for Health y Health Connect a la cabeza, son la tecnología base para gestionar e integrar datos clínicos y administrativos de más de la mitad de la población de España... (por no hablar de EEUU, UK, Paises Bajos,...). Así que, teniendo en cuenta esto, si te dedicas al desarrollo de soluciones  o a la implementación de interfaces o integraciones en el sector salud, este es otro curso que no te puedes perder. Pincha y regístrate. ¡¡No lo dudes!!. Más que nada porque las plazas son limitadas... (ahí lo dejo, que luego me dicen que no lo aviso 😉).

¡Ah!, que se me olvidaba, el curso se llama: Implementación e integración de soluciones FHIR; es un curso online, de 21 horas lectivas y con él aprenderás cómo construir soluciones e integraciones con el protocolo HL7-FHIR en InterSystems IRIS for Health™ y HealthShare® Health Connect.  

¡¡Apúntate la fecha y resérvate los días!! 3 al 6 de Marzo de 2025(*).

Además, por ser la primera convocatoria que hacemos de este curso, quien se registre antes del 15 de Febrero tendrá un descuento del 60%.

¡¡Vamooooss!! Que las plazas son limitadas... lo he dicho ya, no? Pues avisado queda!! 🙂

Tienes toda la oferta formativa en nuestra página web, en la sección: Servicios de formación para partners y clientes
(*) Las fechas pueden variar. Consulta siempre la web para la información más actual

1 Comment
Discussion (1)2
Log in or sign up to continue
Article
· Jan 22 4m read

JSON Support in IRIS SQL

While working on getting JSON support for some Python libraries, I discovered some capabilities IRIS provided.

  • JSON_OBJECT - A conversion function that returns data as a JSON object.
  • JSON_ARRAY - A conversion function that returns data as a JSON array.
  • IS JSON - Determines if a data value is in JSON format.
  • JSON_TABLE function returns a table that can be used in a SQL query by mapping JSON.
  • JSONPath support - is a query language for querying values in JSON.

Well, let's test what these functions really can do.

JSON_OBJECT

JSON_OBJECT(key:value [,key:value][,...] 
  [NULL ON NULL | ABSENT ON NULL])

JSON_OBJECT takes a comma-separated list of key:value pairs (for example, 'mykey':colname) and returns a JSON object containing those values. You can specify any single-quoted string as a key name; JSON_OBJECT does not enforce any naming conventions or uniqueness check for key names. You can specify for value a column name or other expression.

Let's try it out

  • Instead of empty value get '\u0000', or just $char(0). Yes, this is how an empty value is represented in IRIS SQL, but I did not expect it in JSON.
  • No way to make JSON booleans, IRIS SQL does not have booleans only 1 or 0
  • Nested objects supported
  • It is possible to omit null values in the resulting JSON

JSON_ARRAY

JSON_ARRAY takes an expression or (more commonly) a comma-separated list of expressions and returns a JSON array containing those values. JSON_ARRAY can be combined in a SELECT statement with other types of select-items. JSON_ARRAY can be specified in other locations where an SQL function can be used, such as in a WHERE clause.

Let's try it out

  • The same issue with empty values, and booleans
  • 1e12 is a real type, and supposed to keep type
  • to make an empty array, require put null and set an option to omit it

IS JSON

scalar-expression IS [NOT] JSON [keyword]

The IS JSON predicate determines if a data value is in JSON format.

IS JSON (with or without the optional VALUE keyword) returns true for any JSON array or JSON object. This includes an empty JSON array '[]' or an empty JSON object '{}'.

The VALUE keyword and the SCALAR keyword are synonyms.

scalar-expression

A scalar expression that is being checked for JSON formatting.

keyword

An optional argument. One of the following: VALUE, SCALAR, ARRAY, or OBJECT. The default is VALUE.

Let's try it out

USER>do ##class(%SQL.Statement).%ExecDirect(, "SELECT 'yes' is_json_object WHERE ? IS JSON OBJECT", {}).%Display()
is_json_object
yes

1 Rows(s) Affected
USER>do ##class(%SQL.Statement).%ExecDirect(, "SELECT 'yes' is_json_array WHERE ? IS JSON ARRAY", []).%Display()
is_json_array
yes

1 Rows(s) Affected

Seems good, but this is totally ObjectScript way. Let's try with JDBC

  • Now there is no more json object or json array, only value or scalar
  • Null value not even a json, and not a not json as well, it's just something in between
  • JSON_OBJECT, JSON_ARRAY from above, not an object and not an array anyway, it's something else
  • JSON is JSON but not an object not an array, so what it is
  • There is no way to get is json object/array working via ODBC/JDBC

JSON_TABLE

JSON_TABLE( json-value, json-path col-mapping )

The JSON_TABLE function returns a table that can be used in a SQL query by mapping JSONOpens in a new tab values into columns. Mappings from a JSON value to a column are written as SQL/JSON path language expressions.

As a table-valued function, JSON_TABLE returns a table that can be used in the FROM clause of a SELECT statement to access data stored in a JSON value; this table does not persist across queries. Multiple calls to JSON_TABLE can be made within a single FROM clause and can appear alongside other table-valued functions.

  • empty string or null values, are the same
  • supported even nested use of json_array/json_object

JSONPath

A SQL/JSON path language expression is a sequence of operators that define a path through a JSON document to a desired set of values.  

In addition to JSON_TABLE, it can be directly used on JSON using ObjectScript using apply method on any json object

Extract values from JSON Array

USER>zwrite [{"value":"test"},{"value":123},{"value":1.23},{"value":""},{"value":null}].apply("$.value")
["test",123,1.23,"",""]   ; <DYNAMIC ARRAY,refs=1>
USER>zwrite [{"value":null}].apply("$.value")
[""]   ; <DYNAMIC ARRAY,refs=1>
USER>zwrite [].apply("$.value")
[]   ; <DYNAMIC ARRAY,refs=1>

And from one JSON Object

USER>zwrite {"value":null}.apply("$.value")
[""]   ; <DYNAMIC ARRAY,refs=1>
USER>zwrite {"value":123}.apply("$.value")
[123]   ; <DYNAMIC ARRAY,refs=1>
USER>zwrite {}.apply("$.value")
[]   ; <DYNAMIC ARRAY,refs=1>
USER>zwrite {"value":""}.apply("$.value")
[""]   ; <DYNAMIC ARRAY,refs=1>
  • Again there is no difference between empty string and null
  • Even for a single object it still returns an array

Conclusion

Every function tested has problems distinguishing between null and empty strings, which have a difference in SQL or JSON. No way to generate boolean values in JSON.

Working with JSON from Python, would require even more out of this, such as more value types, but it will be so 

At this point, I don't see any purpose for any of these functions. And not sure if it can be used in Python libraries.

 
What I expect

 

3 Comments
Discussion (3)3
Log in or sign up to continue