Esta es la cuarta parte de una serie de artículos sobre migración desde las principales bases de datos del mercado a InterSystems IRIS. En esta parte, explicaré los pasos para migrar desde Microsoft SQL Server.
Preguntas frecuentes de InterSystems
Para resolver el error <PROTECT>, hay que eliminar el atributo de solo lectura de la base de datos de la biblioteca de todo el sistema (IRISLIB para InterSystems IRIS, CACHELIB para Caché/Ensemble/HealthShare (basado en Caché))
Una vez se haya terminado de importar la rutina, hay que acordarse de volver a cambiarla a solo lectura.
[Versión 2013.1 y superior]
[Portal de Gestión] > [Administración] > [Configuración] > [Configuración de Sistema] > [Bases de Datos Local] Desmarcad "Mount Read-Only" (Montar solo lectura) en el enlace del nombre de la base de datos.
Preguntas frecuentes de InterSystems
Si se establece una relación y hay una gran cantidad de n en una proporción de 1:n, se puede consumir una gran cantidad de memoria debido al procesamiento secuencial de la relación.
Después de hacer referencia a un objeto de muchos lados en un programa y cambiarlo internamente, simplemente liberar la variable que contiene el OREF (eliminarla, establecer otro valor, etc.) no liberará el objeto de muchos lados ni el objeto de relación. Ésta es la causa.
Preguntas frecuentes de InterSystems
Cuando ejecutéis comandos del SO, utilizad el comando $ZF(-100).
do$ZF(-100,"",program,args) // Execute the Windows command [synchronously].do$ZF(-100,"/ASYNC",program,args) // Executes a Windows command [asynchronously].Cuando ejecutéis comandos de la shell del SO, como mkdir o copy, hemos de especificar /SHELL.
do$zf(-100,"/shell /async","mkdir","c:\temp\x")Preguntas frecuentes de InterSystems
Para crear un error definido por el usuario, hemos de preparar un XML que describa el código de error y el mensaje correspondiente que desea utilizarse como error definido por el usuario.
Hemos de establecer el código de error como un número entero negativo.
<?xml version="1.0" encoding="UTF-8"?>
<MsgFileLanguage="en"><MsgDomainDomain="UserErrors"><MessageId="-111"Name="MyError">An error has occured</Message>
<MessageId="-222"Name="MyError2">An error has occured 2</Message>
</MsgDomain></MsgFile>Preguntas frecuentes de InterSystems
Para ejecutar un backup online desde un comando, se puede utilizar la rutina API BACKUP^DBACK.
Este es un ejemplo de realización de un backup completo.
set status = $$ BACKUP ^DBACK( "" , "F" , "full backup" , "c:\backup\full.cbk" , "Y" , "c:\backup\full-log.log" , " NOINPUT" , "Y" , "Y" , "" , "" )El valor de retorno es 1 si el backup se realiza con éxito, y 0 si el backup no se realiza correctamente. Por favor, consultad el fichero log para conocer más detalles sobre el fallo.
Preguntas frecuentes de InterSystems
Para rutinas (*.mac)
Se puede ocultar el código fuente exportando/importando solo el *.obj que se genera después de compilar el programa fuente.
El ejemplo de ejecución de comandos especifica EX1Sample.obj y EX2Sample.obj, que se generan al compilar EX1Sample.mac y EX2Sample.mac, como destinos de exportación y los exporta al segundo archivo de argumentos.
Después de pasarlo a otro namespace, se usa el archivo XML exportado para realizar la importación.
Continuamos analizando las posibilidades de Django, y su uso con IRIS. En la primera parte de esta serie, mostramos cómo definir modelos y conectarlos con tablas ya existentes en IRIS; en la segunda parte, mostramos un Portal de Administración, con la capacidad de ver qué datos tenemos en esos modelos, con filtros, edición e incluso paginación.
Ahora es el momento de pasar a la acción real - vamos a crear algunas API Rest, en Django, basadas en los mismos datos que usamos antes, del paquete posts-and-tags.
Para hacerlo, usaremos el framework Django REST
El problema
En un entorno clínico acelerado, en el que la toma rápida de decisiones es crucial, la falta de sistemas eficientes de almacenamiento y acceso a los documentos plantea varios obstáculos. Aunque existen soluciones de almacenamiento de documentos (por ejemplo, FHIR), el acceso y la búsqueda eficaz de datos específicos de pacientes dentro de esos documentos puede suponer todo un reto.
La motivación
Preguntas frecuentes de InterSystems
La información sobre las propiedades definidas en una clase se puede obtener usando las siguientes clases del sistema:
%Dictionary.PropertyDefinition
El ejemplo de descripción del código es el siguiente.
Preguntas Frecuentes de InterSystems
El significado de cada valor de tiempo de espera es el siguiente.
1. [Tiempo de espera de respuesta del servidor]
Si el procesamiento de IRIS/Caché (ejecución de rutina o consulta) no finaliza dentro de este tiempo establecido, el navegador devolverá un error.
Por ejemplo, si este valor es 60 segundos y se necesitan 90 segundos para ejecutar una rutina/método/consulta, se producirá un error.
Preguntas frecuentes de InterSystems
Una herramienta (utilidad ^GLOBUFF) está disponible para verificar el uso de la memoria caché de la base de datos para cada global.
La utilidad se puede ejecutar directamente o mediante programación en el namespace %SYS .
Así se ejecutaría directamente:
Preguntas frecuentes de InterSystems
ObjectScript permite pasar cualquier número de argumentos utilizando arrays. Se hace añadiendo ... después del nombre del argumento.
Os muestro un ejemplo. En la sentencia del ejemplo, la información del argumento se establece en una variable global (una variable almacenada en la base de datos) para que pueda ser fácilmente verificada después de que se ejecute el método.
Class TEST.ARGTEST1 Extends%RegisteredObject
{
ClassMethod NewMethod1(Arg... As %String) As %Boolean
{
kill ^a
merge ^a = Arg
}
}Preguntas frecuentes de InterSystems
En el siguiente ejemplo, un archivo de imagen se codifica en una cadena Base64 en una propiedad de clase, se guarda, se decodifica la cadena en Base64 y se restaura en otro archivo.
【Classe ejemplo】
Class User.test Extends %Persistent
{
Property pics As %GlobalBinaryStream;
}
【Cuando se importa】
SSHes unframework relativamente representativo de Java, que fue popular hace muchos años. Están Struts+Spring+hibernate y Spring MVC+Spring+hibernate. Por supuesto, utilicé la segunda en la universidad. Si puedo conectar IRIS a Hibernate como librería, ¿significa también que, en teoría, IRIS puede ser desarrollado utilizando el framework SSH?
Herramientas y entorno
JDK 1.8
Maven
Hibernate 5.X.X
IRISHealth-2022.1.3
intellij idea
Windows 10 64
Preguntas frecuentes de InterSystems
Se pueden recuperar estos datos utilizando el esquema INFORMATION_SCHEMA.
INFORMATION_SCHEMA es un esquema de sistema y no se muestra por defecto en el menú SQL del Portal de Gestión.
El método para mostrarlo es el siguiente:
- Abrir el Portal de Gestión → Explorador → SQL.
- Marcar "Sistema" a la izquierda del desplegable de esquemas.
- Seleccionar INFORMATION_SCHEMA en el desplegable.
El SQL para obtener el ID, el nombre del campo (COLUMN_NAME), el tipo de datos (DATA_TYPE) y la descripción (DESCRIPCIÓN) de la tabla especificada (Sample.Human) es el siguiente.
No se encuentra el método InstallFoundation (IRIS 2023.2+)
Recientemente se lanzó IRIS 2023.2. Esta versión eliminó este método InstallFoundation de esta clase HS.HC.Util.Installer. Este era un método privado y no estaba documentado. Pero la comunidad lo utilizó ampliamente para instalar el servidor FHIR.
Entonces, si encuentramos este error:
<METHOD DOES NOT EXIST> *InstallFoundation,HS.HC.Util.Installer
En una demostración de nuestro propio servidor FHIR, podremos solucionarlo reemplazando esta línea:
do ##class(HS.HC.Util.Installer).InstallFoundation(namespace)
Por:
Preguntas frecuentes de InterSystems
De cara a la reconstrucción de los índices de una clase persistente/tabla, hay que utilizar el método %BuildIndices(), proporcionado por dicha clase. Para ello hay que especificar los valores de inicio y fin de los ID para los cuales se quieren reconstruir índices en los argumentos del método.
Por ejemplo, para reconstruir el índice NameIDX y el índice ZipCode en la clase Sample.Person sólo para ID=10 a 20, ejecutad el siguiente código (el rango de ID se especifica en los argumentos quinto y sexto).
Preguntas frecuentes de InterSystems
Podéis ver el espacio libre disponible para la base de datos usando la opción "Free space view" (Ver espacio libre) en el Management Portal: System Operation > Databases.
Y se puede obtener mediante programación a través la consulta FreeSpace de la clase del sistema SYS.Database.
En este artículo, exploramos el uso de parámetros, fórmulas y etiquetas en Logi Report Designer (anteriormente Logi JReport Designer). ¿Para qué sirven y cómo crearlos?
Utilizando la funcionalidad básica de InterSystems Reports Designer, parámetros, fórmulas y etiquetas, se puede mejorar significativamente la información del informe generado. Además, estas herramientas permiten automatizar algunos de los procesos, lo que agiliza y facilita enormemente la creación de informes.
Analicemos ahora cada herramienta por separado.
En este artículo, analizaremos las complejidades de configurar tablas y gráficos para mejorar la legibilidad de los datos.
Logi ofrece una amplia gama de herramientas de visualización de datos. Se puuede encontrar de todo, desde una amplia variedad de plantillas de gráficos hasta estilos CSS personalizados. Comprender la variedad de configuraciones y opciones puede resultar bastante difícil. Primero, crearemos un gráfico y una tabla con la configuración predeterminada y les daremos un aspecto presentable utilizando InterSystems Reports (basado en tecnología de Logi Report).
Como se señaló en el artículo anterior, la API nativa tiene algunos límites. Así que investigué un poco sobre una interfaz más parecida a una Terminal. De manera a permitirme una consola al estilo terminal de IRIS para permitir $QUERY y otros comandos útiles que no son compatibles/mapeados a la API nativa para ObjectScript.
Las herramientas básicas están bien preparadas y disponibles
- Connection()crea una partición estable y completamente operativa
- Function()permite llamar a cualquier rutina o método que necesite
- ClassMethodValue y ClassMethodVoid similares
Preguntas frecuentes de InterSystems
Se puede obtener mediante la consulta AllFields de la clase %SYS.ProcessQuery.
Para más detalles, consultad el documento Process (Job)【IRIS】/Process (Job).
Un ejemplo de ejecución en el terminal es el siguiente:
Preguntas frecuentes de InterSystems
Si el valor de una variable local es un OREF o no se puede determinar usando $IsObject(). Sea v la variable que desea verificar,
$IsObject(v)=1// v is an OREF$IsObject(v)=0// v is not an OREF$IsObject(v)=-1// v is an OREF but does not point to a valid objectTenga en cuenta que $IsObject(v) dará un error UNDEFINED si v no está definido.
Para evitar errores UNDEFINED, se recomienda utilizar $Get así:
$IsObject($Get(v))Esta pregunta apareció originalmente en los comentarios de la publicación: Descargar globales desde un servidor en particular
Este artículo se inspiró en una pregunta reciente de @Evgeny.Shvarov.
Descargar globales desde un servidor en particular
No es un código de hacer clic y ejecutar, sino un borrador que requiere ajustes para cubrir las necesidades de cada caso de uso. Para ello debe agregar:
En este artículo, analizo la clase %JSON.Adaptor. Esta clase es extremadamente útil para exportar datos a JSON serializado e importar objetos JSON y guardarlos en un objeto de clase.
Comenzaré con %JSON. Parámetros del adaptador. Los parámetros son una parte crucial de las operaciones de importación y exportación de JSON.
Hice una pregunta por correo electrónico y obtuve algunas respuestas de colegas.
Pergunta:
Preguntas frecuentes de InterSystems
※ Utilizad este método si queréis comparar bases de datos que se han replicado mediante mirror, shadow o algún otro mecanismo.
Podéis utilizar la utilidad DATACHECK para comparar globals. (Consultad la documentación para más información: Descripción general de DataCheck [IRIS])
***
Las comparaciones de rutinas usan la rutina del sistema %RCMP o el Portal de Administración.
FHIR ha revolucionado la industria de la atención médica al proporcionar un modelo de datos estandarizado para crear aplicaciones y promocionar el intercambio de datos entre diferentes sistemas. El estándar FHIR se basa en enfoques modernos impulsados por APIs, lo que lo hace más accesible para los desarrolladores web y móviles. Sin embargo, interactuar con las API de FHIR aún puede ser un desafío, especialmente cuando se trata de consultar datos usando lenguaje natural.
InterSystems IRIS actualmente limita sus clases a 999 propiedades.
Pero, ¿qué hacer si necesita almacenar más datos por objeto?
Este artículo respondería a esta pregunta (con el apunte adicional de Community Python Gateway y cómo transferir conjuntos de datos amplios a Python).
En realidad, la respuesta es muy simple: InterSystems IRIS actualmente limita las clases a 999 propiedades, pero no a 999 primitivas. La propiedad en InterSystems IRIS puede ser un objeto con 999 propiedades y así sucesivamente; el límite se puede ignorar fácilmente.