Find

Article
· Oct 14, 2024 2m read

Funções do lado esquerdo em ObjectScript

Em ObjectScript, você tem uma ampla coleção de funções que retornam algum valor tipicamente:

set variable = $somefunction(param1,param2, ...)

Não há nada de especial nisso.
Mas há um conjunto de funções que classifico como Funções de Lado Esquerdo
A especialidade delas é que você também pode usá-las à esquerda do operador igual como um alvo no comando SET:

set $somefunction(param1,param2, ...) = value

O motivo para levantar esse assunto é que com o IRIS 2024.1 há depois de muitos anos um "novo garoto nessa vizinhança"

$VECTOR()

Atribui, retorna e exclui dados vetoriais em posições especificadas, especialmente
set $VECTOR(MyVector , position , type) = value

Eu não quero entrar em detalhes. A documentação é realmente completa.
Há também outras 3 novas funções lado direito relacionadas a vetores: $VECTORDEFINED (),  $VECTOROP(), $ISVECTOR()  

Se você seguir os exemplos na documentação, verá que a nova função relacionada SQL TO_VECTOR ()
faz praticamente o mesmo em notação SQL (na verdade, não é visível na InterSystems SQL Reference)

Como lembrete/visão geral, uma lista das funções tradicionais do lado esquerdo:

  • $BIT – Retorna ou define o valor bit de uma posição específica numa bitstring.
  • $EXTRACT – Extrai uma substring de uma string de caractere por posição, ou substitui uma substring por posição.
  • $LIST – Retorna ou substitui elementos em uma lista.
  • $PIECE – Retorna ou substitui uma substring, usando um delimitador.
  • $WEXTRACT – Extrai uma substring de uma string de caractere por posição, ou substitui uma substring por posição, reconhecendo pares de substituição.

É uma lista curta, mas pode ser altamente eficiente em alguns casos para evitar conteúdo duplicado e manipulações confusas.

Discussion (0)1
Log in or sign up to continue
Article
· Oct 14, 2024 9m read

FHIRValidation - Valide o seu próprio FHIR IG usando IRIS

Este programa de demonstração é usado para mostrar como um perfil FHIR personalizado pode ser empregado para validar a conformidade dos dados. O guia de implementação FHIR personalizado foi desenvolvido com base na Versão R4 do FHIR, e, neste exemplo, implementa a extensão do recurso Organização para validar a conformidade dos dados.

Discussion (0)1
Log in or sign up to continue
Question
· Oct 14, 2024

Using Cache, Python and pypyodbc, struggling dates

New to Python.  Attempting to use pypyodbc to select data from a table in one Cache database, and inserting into a similarly configured table in another.  Process works fine except for tables containing Date types.  NULL values in date columns are handled without issue, but when data is present, insert fails with:

An error occurred: argument 7: TypeError: 'NoneType' object cannot be interpreted as an integer.

Source table:

CREATE TABLE "SAT"."AuditAttribute" (
    "ID"                 INTEGER NOT NULL PRIMARY KEY DEFAULT $i(^SAT.AuditAttributeD),
    "AddDelete"          VARCHAR(50),
    "ConstituentId"      VARCHAR(50),
    "CreatedDate"        DATE,
    "CreatedTime"        TIME,
    "DeleteDate"         DATE,
    "DeleteTime"         TIME,
    "FinderId"           VARCHAR(50),
    "Tag"                VARCHAR(50),
    "UserName"           VARCHAR(50)
);

Target table:

CREATE TABLE "SAT_D3"."AuditAttribute_DWN" (
    "DBase"              VARCHAR(6),
    "ID_OLD"             INTEGER,
    "AddDelete"          VARCHAR(50),
    "ConstituentId"      VARCHAR(50),
    "CreatedDate"        DATE,
    "CreatedTime"        TIME,
    "DeleteDate"         DATE,
    "DeleteTime"         TIME,
    "FinderId"           VARCHAR(50),
    "Tag"                VARCHAR(50),
    "UserName"           VARCHAR(50)
)
;

select query:

 

select_query = 'select \'DWN\' as DBase, ID as "ID_OLD", AddDelete, ConstituentId, Tag, UserName, "CreatedDate" from SAT.AuditAttribute'

insert_query = 'insert into SAT_D3.AuditAttribute_DWN (DBase, "ID_OLD",  AddDelete, ConstituentId, Tag, UserName, "CreatedDate") values (?,?,?,?,?,?,?)'

Displaying row[6[ for first failing row shows this: "datetime.date(2018, 6, 28)"

Have tried various methods, datetime.strftime(),  datetime.strptime(), but haven't hit on the magic strategy.  I assume it's something simple.

Thanks for your help!

2 Comments
Discussion (2)2
Log in or sign up to continue
Announcement
· Oct 14, 2024

O Concurso de Tutoriais Técnicos InterSystems IRIS está começando!

Olá Desenvolvedores! 

Tenho o prazer de anunciar que hoje inicia o novo concurso da nossa Comunidade de Desenvolvedores InterSystems.

 

Aproveite a chance de se aprimorar e compartilhar aprendizados com a Comunidade de Desenvolvedores, e concorrer a prêmios excelentes. 
Todas as informações e regras estão publicadas no anúncio ✍️ Concurso de Tutoriais Técnicos InterSystems IRIS ✍️

Participe e compartilhe! 😉 

Discussion (0)1
Log in or sign up to continue
Digest
· Oct 14, 2024

Publicações Desenvolvedores InterSystems, Outubro 07 - 13, 2024, Resumo