Find

Article
· Jul 30, 2024 3m read

Previnindo o crescimento da base HSAUDIT

Introdução

Talvez você já tenha reparado que a base HSAUDIT não tem uma tarefa de expurgo já configurada na maioria das versões do HealthShare, e isso pode ser um problema já que ela tem mapeamentos de globais em vários namespaces.

Se você notou que essa base está ocupando muito espaço em disco e está com dificuldades de limpá-la, esse artigo é para você.

Se você já tem uma ideia de como fazer isso, mas está utilizando uma versão mais antiga do HealthShare, onde a tarefa não existe pronta, ou o PurgeByDaysToKeep não existe, esse artigo também é para você.

 

Passo a passo

Criar a classe de tarefa

Crie uma classe de expurgo que estende de %SYS.Task.Definition no namespace %SYS. Eu usei o nome custom.Task.Purge.ExpurgoHSAUDIT. Defina o parâmetro TaskName como uma string com o nome da tarefa e a propriedade KeepDays como a quantidade de dias para manter. Defina o método OnTask(). 

Class custom.Task.Purge.ExpurgoHSAUDIT Extends %SYS.Task.Definition
{

Parameter TaskName = "PurgeHSAUDIT";

Property KeepDays As %Integer;

Method OnTask() As %Status
{}
}

Dentro do método, vamos mudar de namespace para onde as globais de HSAUDIT estejam mapeadas e queremos expurgar. Vamos definir a data a de << KeepDays >> dias atrás e expurgar os dados como veremos a seguir.

A HSAUDIT é gerida pelo pacote  HS_IHE_ATNA_Repository, onde vamos encontrar algumas classes e métodos úteis para o expurgo. Primeiro, verificamos em HS.IHE.ATNA.Repository.Exclusion se os dados estão OK para expurgo com o método OKToPurge(). Depois, selecionamos os dados para expurgo na tabela HS_IHE_ATNA_Repository.Aggregation e deletamos com o método PurgeEvent() da classe Exclusion referida acima.

Method OnTask() As %Status
{
    Set tStatus = $$$OK
	Set tDate = $ZDATETIME($PIECE($HOROLOG, ",", 1)-..KeepDays,3)
	
	Do $ZUTIL(5,"NamespaceEDGE")
	
	If '##class(HS.IHE.ATNA.Repository.Exclusion).OKToPurge()
	{
		Set tStatus = $System.Status.Error(5001, "HS.IHE.ATNA.Repository.Exclusion returned NOT OK TO PURGE")
		Quit tStatus
	}
	
	Set tSQL="Select ID from HS_IHE_ATNA_Repository.Aggregation where IndexedDate < ?"
	SET tStatement = ##class(%SQL.Statement).%New()
	Set tStatus=tStatement.%Prepare(tSQL)
	
	If $System.Status.IsError(tStatus) Quit
	
	Set tResultSet=tStatement.%Execute(pDate)

	While tResultSet.%Next()
	{
		Set tId=tResultSet.%Get("ID")
		
		Do ##class(HS.IHE.ATNA.Repository.Exclusion).PurgeEvent(tId)
	}
	
	Quit tStatus
}
}

 

Por fim, retornamos um status. Você pode configurar esse mesmo método para repetir o código para todos os namespaces, ou definir o namespace como propriedade e configurar várias tarefas para cada namespace no próximo passo.

 

Configurar a tarefa

Abra o Portal de Administração da instância. Vá para Operação do Sistema > Gerenciador de Tarefas > Nova tarefa. Escolha a tarefa de nome definido no parâmetro TaskName no passo anterior. Escolha o namespace %SYS e a quantidade de dias a manter no parâmetro KeepDays. Escolha um usuário com acesso ao namespace %SYS e aos outros acessados na tarefa.
Selecione Avançar e defina a frequência de execução da tarefa.

 

Cuidado

Ao configurar essa tarefa no seu Edge, pode haver uma perda irrecuperável ao apagar os dados de auditoria. Leia com atenção a documentação antes de executá-la, em especial o aviso no link.

Discussion (0)1
Log in or sign up to continue
Article
· Jul 30, 2024 3m read

第九章 使用进程私有全局变量来支持非常大的消息

第九章 使用进程私有全局变量来支持非常大的消息

使用进程私有全局变量来支持非常大的消息

默认情况下、 Web 服务在解析请求或响应时通常使用本地数组内存。可以强制它改用进程私有全局变量;这使 Web 服务能够处理非常大的消息。

为此,请指定 Web 服务类的 USEPPGHANDLER 参数,如下所示:

Parameter USEPPGHANDLER = 1;

如果此参数为 1,则 Web 服务在解析请求或响应时始终使用进程私有全局变量。如果此参数为 0,则 Web 服务始终使用本地数组内存来实现这些目的。如果未设置此参数,则 Web 服务使用默认值,通常是本地数组内存。

自定义 Web 服务的回调

可以通过覆盖其回调方法来定制 Web 服务的行为:

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

disk provisioning in a SSD environment

Hi we are migrating to Linux from OpenVMS. which includes a new server and SAN. after reading a prior post about the differences with ESX and a VSAN I would think that the a SAN with Virtual disks all SSD type would be similar. which after reading it makes me think that using thick provisioning is the way to go. the 3rd party vendor is arguing this point with me.  is it the same premise?  is non-dedupe the way to go with thick provisioning.  we are currently on 2015.2 of Cache with the plans to go to 2018 until the app vendor is able to certify their product on the latest versin.

thanks

Paul

 

VMware vStorage APIs for Array Integration (VAAI)

For the best storage performance, customers should consider using VAAI-capable storage hardware. VAAI can improve the performance in several areas including virtual machine provisioning and of thin-provisioned virtual disks. VAAI may be available as a firmware update from the array vendor for older arrays.

Virtual Disk Types

ESXi supports multiple virtual disk types:

Thick Provisioned – where space is allocated at creation. There are further types:

  • Eager Zeroed – writes 0’s to the entire drive. This increases the time it takes to create the disk, but results in the best performance, even on the first write to each block.
  • Lazy Zeroed – writes 0’s as each block is first written to. Lazy zero results in a shorter creation time, but reduced performance the first time a block is written to. Subsequent writes, however, have the same performance as on eager-zeroed thick disks.

Thin Provisioned – where space is allocated and zeroed upon write. There is a higher I/O cost (similar to that of lazy-zeroed thick disks) during the first write to an unwritten file block, but on subsequent writes thin-provisioned disks have the same performance as eager-zeroed thick disks

In all disk types VAAI can improve performance by offloading operations to the storage array. Some arrays also support thin provisioning at the array level, do not thin provision ESXi disks on thin provisioned array storage as there can be conflicts in provisioning and management.

1 Comment
Discussion (1)1
Log in or sign up to continue
Question
· Jul 30, 2024

Extracting Resource from FHIR Bundle

Does anyone have an example of extracting the Resource from a FHIR Bundle?

{

"resourceType": "Bundle",

"type": "searchset",

"total": 5,

"link": [

{

"relation": "self",

"url": "https://hostname/instance/api/FHIR/R4/Practitioner?given=marty&family=seeger"

}

],

"entry": [

{

"link": [

{

"relation": "self",

"url": "https://hostname/instance/api/FHIR/R4/Practitioner/eUQwZHO1O.8KAThR14DRZO5EOxf.Fu6hu8pLE9e60Nh43"

}

],

"fullUrl": "https://hostname/instance/api/FHIR/R4/Practitioner/eUQwZHO1O.8KAThR14DRZO5EOxf.Fu6hu8pLE9e60Nh43",

"resource": {

"resourceType": "Practitioner",

"id": "eUQwZHO1O.8KAThR14DRZO5EOxf.Fu6hu8pLE9e60Nh43",

"identifier": [

{

"use": "usual",

"type": {

"text": "INTERNAL"

},

"value": " 10199005"

},

{

"use": "usual",

"type": {

"text": "EXTERNAL"....

 

 

I am working on a Proof of Concept to read data from our EMR FHIR Repository and was able to do it with a Response type of patient, but I am not sure how a Response Type of Bundle works.

Thanks

Scott

1 Comment
Discussion (1)2
Log in or sign up to continue
Discussion
· Jul 30, 2024

Compartilhe como a IA da Comunidade de Desenvolvedores ajudou você a ter a chance de ganhar

Olá Comunidade!

Como vocês devem saber, nossa IA da Comunidade de Desenvolvedores já está disponível há mais de um mês 🎉 Esperamos que você tenha ficado curioso o suficiente para experimentar 😁 Se ainda não experimentou, experimente! De qualquer forma, como ainda está em beta, estamos muito interessados ​​em saber o que você pensa sobre ele, e estamos ansiosos para ouvir seus pensamentos e experiências.

 

Como valorizamos seu tempo e esforço, daremos um prêmio fofo a um membro aleatório da Comunidade que compartilhar como a DC AI ajudou você. Para participar deste sorteio, você precisa seguir as diretrizes:

  • ser um membro da Comunidade (funcionários da InterSystems são bem-vindos a participar)
  • escreva um comentário descrevendo como a IA da Comunidade de Desenvolvedores ajudou você com sua pergunta (não se esqueça de adicionar um link* para o resultado) nesta discussão.

E é isso! No final do verão, usaremos random.org para escolher um sortudo dono do nosso pequeno e fofo objeto dentre todos que comentaram aqui (e seguiram as diretrizes) — máximo de 5 inscrições por pessoa.

Boa sorte!


* Para obter um link para a resposta, clique no botão de compartilhamento abaixo da resposta.

1 Comment
Discussion (1)1
Log in or sign up to continue