Artigo
· 2 hr atrás 2min de leitura

Adaptador de Arquivo Personalizado – Tabela de Consulta / Arquivos Dinâmicos

Meu problema era separar mensagens HL7 por tipo de mensagem. Eu precisava criar várias Operações de Arquivo. Com código personalizado, consegui usar 1 adaptador de arquivo para 1 interface e vários tipos de mensagem. Cheguei a experimentar extrair o MSH-4 do conteúdo bruto para acessar informações dinâmicas adicionais, mas isso pode trazer a necessidade de verificações de erro mais robustas e/ou ações padrão de consulta.

Seguindo a convenção de nomenclatura recomendada de "To_FILE_<IntegrationName>"

Eu decidi usar um nome e um caminho de arquivo genéricos nas configurações padrão.

Criei uma classe personalizada que estende EnsLib.File.OutboundAdapter, com um código customizado que me permite controlar dinamicamente o caminho do adaptador de arquivo específico para cada tipo de mensagem por meio de uma tabela de consulta (lookup table). Se eu não tiver um valor definido, o caminho genérico padrão será utilizado. Caso contrário, meu código sobrescreve o caminho e o nome do arquivo. O nome da lookup table pode ser qualquer um, desde que corresponda ao que está definido no código.


 

Código customizado

//SRC1 Extrair a 3ª parte do nome da operação de saída "<IntegrationName>"

//SRC2 Extrair a 1ª parte do NOME DO DOCTYPE "ORM" / "ADT" / "ORU" / etc.

// Definir uma nova variável SRC para concatenar SRC1_SRC2 juntos

//Nova tabela de lookup que irá controlar os nomes dos caminhos em um único lugar.

 

Set src1=$PIECE(..%ConfigName,"_",3,3)
Set src2=$PIECE(pDocument.DocTypeName,"_",1,1)
If src=""
{
Set src=src1_"_"_src2
} Set pFilename = ..Adapter.CreateFilename(##class(%File).GetFilename(src), $PIECE((##class(Ens.Rule.FunctionSet).Lookup("HL7FileNamePath",src)),"^",2,2)_..Filename) $$$TRACE(pFilename)
//Reset file path to return a file path based on the Lookup and PIECE function(s)
Set ..Adapter.FilePath =$PIECE((##class(Ens.Rule.FunctionSet).Lookup("HL7FileNamePath",src)),"^",1,1)
$$$TRACE(..Adapter.FilePath)
Set tSC = ..Adapter.open(pFilename) Quit:$$$ISERR(tSC) tSC
Set $ZT="Trap"
Use ..Adapter.Device  Set tSC=..OutputFramedToDevice(pDocument,pSeparators,"",0,..IOLogEntry,.pDoFraming) Use ..Adapter.OldIO
Set $ZT=""

Discussão (0)1
Entre ou crie uma conta para continuar