Na última vez, foi descrito quais entidades básicas são usadas para armazenar dados médicos no MIS Namedi. Hoje, nos oferecemos mergulhar no mundo dos modelos de protocolos de pesquisa.
Protocolo de estudo - um documento emitido para o paciente em seus braços. O que é um modelo? Belas fotos e letras coloridas são apenas uma fachada e a base é uma estrutura armazenada em um banco de dados. Em geral, você pode escolher qualquer formato para descrever dados abstratos que permitiriam salvar uma estrutura hierárquica. Nós decidimos pelo XML.
Modelos não são dados estáticos que são inseridos no campo da tabela uma vez e são esquecidos. Com o tempo, a estrutura do modelo pode mudar. Por exemplo, algumas medidas estão faltando ou, pelo contrário, são supérfluas, e o médico não as preenche, colocando traços ou deixando espaços vazios. Outro caso de mudança na estrutura é uma extensão da funcionalidade do sistema de gabaritos ou uma repensação dos antigos. Independentemente do motivo das alterações, a versão antiga do modelo indica o tempo até o qual é válido e, para o novo, por sua vez, a que horas entra em vigor. Assim, todos os protocolos antigos não perdem ou adquirem partes e permanecem na forma em que foram dados ao paciente.
Em geral, o sistema utiliza mais de 15 tags e cada um possui seu próprio conjunto de atributos. Usando as tags básicas descritas abaixo, você pode criar um modelo para qualquer protocolo de pesquisa.
Template
O elemento raiz no qual as tags restantes estão localizadas. Usando dois atributos, indica a presença e o local da imagem principal no modelo:
- id da imagem - identificador da imagem localizada no repositório;
- posição da imagem - localização da imagem. Opções: nenhuma, superior, canto superior esquerdo, canto inferior esquerdo, canto superior esquerdo. O padrão é nenhum.
Anatomia
Usado para exibir a essência da anatomia. Atributos
- id - número da anatomia no banco de dados;
- tamanho da fonte, negrito da fonte, sublinhado da fonte - configurações da fonte;
- nome da anatomia - permite redefinir o nome da anatomia. Por padrão, o nome é obtido do banco de dados.
Anatomia-comentário
Usado para exibir o comentário da entidade. Atributos
- comment-id - número do comentário no banco de dados;
- use-default - um sinalizador indicando a necessidade de preencher automaticamente o campo de comentário com um modelo de frase padrão, marcado como "padrão". As opções são verdadeiras e falsas. O padrão é false;
- tipo de comentário - indica o tipo de comentário. Opções: comentário (comentário), conclusão (conclusão), reclamação (reclamação). O padrão é comentar.
Medição
Usado para exibir as dimensões da entidade. Atributos
- id - número de medição no banco de dados;
- max-width - a largura total do elemento;
- value-width - a largura da lista suspensa para dimensões enumeradas;
- unit-width - largura das unidades para medições numéricas;
- nome da medida - permite substituir o nome da medida, que é obtida do banco de dados por padrão;
- need-points-to-end - mostra se os pontos são necessários após o valor de uma dimensão enumerada. As opções são verdadeiras e falsas. O padrão é false;
- nome vazio - um sinalizador que permite não exibir o nome da dimensão. As opções são verdadeiras e falsas. O padrão é false;
- show-referent-interval - flag para exibir o intervalo de referência. As opções são verdadeiras e falsas. O padrão é verdadeiro.
Etiqueta de conclusão
Utilizado no final do padrão. Como resultado, uma linha verde é adicionada sobre toda a largura da linha e a palavra "Conclusão" é exibida abaixo dela.
Todas essas tags podem ser encontradas, por exemplo, no modelo da bexiga de ultrassom:
<template> <anatomy id="119" font-size="10" font-bold="true" font-underline="false" comment=" " /> <measurement id="663" comment=" " /> <measurement id="664" comment=" " /> <measurement id="665" comment=" ( )" /> <anatomy-comment comment-id="94" comment-type="comment" /> <conclusion-label spacing-before="HALF"/> <anatomy-comment comment-id="4" comment-type="conclusion" /> </template>

Text
Projetado para exibir texto sem formatação. Atributos
- etiqueta de texto - o texto exibido;
- max-width - largura do elemento;
- tamanho da fonte, negrito da fonte, sublinhado da fonte - configurações da fonte;
- is-color-selection - destaque em verde. As opções são verdadeiras e falsas. O padrão é falso.
Grupo de medição
Usado para exibir um grupo de dimensões de entidades. Você pode colocar tags de
medição e
texto dentro dessa tag. Atributos
- id - número do grupo de medidas no banco de dados;
- is-color-selection - destaque em verde. As opções são verdadeiras e falsas. O padrão é false;
- intervalo múltiplo - usado para exibir intervalos de referência quando duas medições estão localizadas em uma linha com eles. As opções são verdadeiras e falsas. O padrão é false;
- show-through-slash - mostra medidas através de /. Opções possíveis: verdadeiro e falso. O padrão é falso.
Uma tag pode ser usada de duas maneiras. O primeiro método: especifique apenas a tag do
grupo de medidas com os atributos desejados. O sistema, por sua vez, adicionará automaticamente todas as medidas incluídas neste grupo de medidas. Por exemplo, o modelo de ultrassom do fígado e da vesícula biliar indica:
<anatomy id="84" font-size="10" font-bold="true" font-underline="false" comment=" "/> <measurement-group id="7"/> <measurement id="429" comment=" "/> <measurement id="430" comment=" "/> <anatomy-comment comment-id="171" comment-type="comment" comment=" "/>

A segunda maneira: especifique a marca do
grupo de medidas com os atributos necessários e especifique alguns atributos das marcas de medida dentro ou adicione uma marca com texto. Por exemplo, no modelo de ultrassom BCA, o código a seguir é usado para exibir informações da artéria carótida comum:
Parte do modelo de ultrassom BCA <line comment="-"> <text text-label=" " /> <text text-label="" max-width="197" is-color-selection="true" /> <text text-label="" max-width="197" is-color-selection="true" /> </line> <anatomy id="261" font-size="10" font-bold="true" font-underline="false" comment=" " /> <measurement-group id="11" multi-interval="true" comment=" : "> <measurement id="609" unit-width="19" max-width="295" measurement-name=" (Vps)" comment="" /> <measurement id="606" unit-width="19" empty-name="true" comment="" /> </measurement-group> <measurement-group id="12" multi-interval="true" comment=" : "> <measurement id="610" unit-width="19" max-width="295" measurement-name=" " comment="" /> <measurement id="607" unit-width="19" empty-name="true" comment="" /> </measurement-group>

Para visualizar a inscrição "direita-esquerda",
estão envolvidas a etiqueta de
texto familiar e uma nova
linha , que será decifrada abaixo.
Você sempre pode encontrar uma exceção em qualquer regra. Isso também aconteceu com a pressão arterial. Este é exatamente o grupo de medidas que determinou a nova maneira de exibir grupos: os valores de medida são gravados através de uma barra e os intervalos de referência estão localizados próximos um do outro:
<measurement id="1577" max-width="247" need-points-to-end="false" measurement-name=" " /> <measurement-group id="81" show-through-slash="true" multi-interval="true"> <measurement id="1581" unit-width="27" measurement-name=" " comment=" " /> <measurement id="1582" unit-width="27" max-width="190" empty-name="true" comment=" " /> </measurement-group> <measurement id="1621" comment=" " />

Linha
Todos os elementos nesta tag estão em uma linha. A principal diferença entre a marca de
linha e o
grupo de medição é que a
linha combina visualmente dados que não estão relacionados entre si. As tags podem incluir
anatomia ,
medição e
texto . A tag usa os atributos
is-color-selection e
multi-interval , cujo comportamento corresponde aos mesmos atributos no
grupo de medidas .
Por exemplo, as seguintes medidas podem ser encontradas em uma tomografia computadorizada do cérebro:
Parte da tomografia computadorizada do cérebro <line> <measurement id="2801" measurement-name=" " /> <measurement id="2782" measurement-name=" " /> <measurement id="2781" max-width="145" measurement-name="" comment=" "/> </line> <line> <measurement id="2762" measurement-name=" " /> <measurement id="2763" measurement-name=" " /> <measurement id="2764" max-width="145" measurement-name=" " /> </line> <line> <measurement id="2743" measurement-name=" " /> <text max-width="247" text-label=" " /> </line> <line> <measurement id="2803" max-width="169" measurement-name="" /> <measurement id="2767" value-width="148" comment=" "/> </line> <line> <measurement id="2821" measurement-name=" " /> <measurement id="2841" measurement-name=" " /> </line>

Bem, restam mais algumas tags, mas vamos para a letra e depois para uma descrição seca do restante "bom".
Cada modelo é anexado a um preço específico (serviço). Todos os preços, por sua vez, são distribuídos entre grupos de preços. Estes últimos já estão incluídos em quaisquer modalidades. Por exemplo:
- coluna cervical (serviço) - pescoço (grupo de preços) - ressonância magnética [RM] (modalidade);
- coluna cervical (serviço) - pescoço (grupo de preços) - tomografia computadorizada [TC] (modalidade);
- consulta com um clínico geral (serviço) - terapia (grupo de preços) - consultas e manipulações [CM] (modalidade);
- rins e glândulas supra-renais (serviço) - cavidade abdominal (grupo de preços) - ultra-som [ultra-som] (modalidade).
Se considerarmos o preço com mais detalhes, poderemos distinguir os seguintes tipos:
- principal;
- adicional;
- análise.
Serviços e análises adicionais estão sempre associados aos principais e não podem ser pagos e executados separadamente deles. Em geral, a introdução de serviços adicionais no âmbito do serviço principal não apenas aumenta a quantidade de informações recebidas durante o exame (relevante para estudos realizados em vários equipamentos), mas também facilita a introdução no IIM do conceito de consultas primárias e repetidas de um médico especialista.
Considere uma consulta com um terapeuta. Se traduzirmos a idéia de uma consulta inicial para o idioma dos preços, constataremos que essa consulta consiste nos preços de uma consulta com um clínico geral (preço principal) e exame de um clínico geral (preço adicional). Enquanto isso, um segundo compromisso é apenas uma consulta de preços. Da mesma forma para outros especialistas. Essa abordagem de dividir a recepção em duas listas de preços separadas permite que o paciente emita uma opinião apenas com as informações necessárias.
Ao gerar o protocolo de pesquisa, a versão atual do modelo é levada em consideração, vinculada à lista de preços principal atual. Se um paciente paga, por exemplo, o serviço "Ultrassom do pâncreas" ou "consulta com um médico", não há perguntas quando ele é exibido ao médico. Mas o que fazer se não apenas a consulta de um clínico geral for paga, mas também um exame? Como adicionar um modelo vinculado ao exame médico?
Não menos interessante é a exibição do protocolo de pesquisa para diagnóstico laboratorial (LD), que utiliza uma abordagem diferente das listas de preços adicionais. É por isso que um tipo separado de preço foi alocado para análises. Cada lista de preços LD principal (teste de esfregaço / raspagem, teste de urina etc.) serve para combinar várias listas de preços com o tipo "análise" relacionado a diferentes grupos de preços em um único todo. Como resultado, para cada lista principal de preços, apenas um protocolo de estudo é emitido, independentemente do número de análises pagas. Se, por exemplo, vários exames de sangue foram solicitados (o preço principal é um exame de sangue) e um esfregaço urológico (o preço principal é um estudo de esfregaço / raspagem), serão emitidas duas conclusões.
Não devemos esquecer que alguns lugares em modelos diferentes podem ser duplicados, ou o modelo é muito grande e é difícil de navegar. Por exemplo, um conjunto de medidas para as amígdalas direita e esquerda é encontrado em exames de clínico geral, endocrinologista, pneumologista, etc.
Portanto, é necessário, em primeiro lugar, extrair um fragmento de código XML em um modelo separado e adicioná-lo a um local especial; em segundo lugar, anexar listas ou análises de preços adicionais ao modelo de modelo principal. Para essas tarefas, precisamos das três tags restantes.
Certamente surgiu a pergunta: por que usar tags especiais quando você pode simplesmente adicionar um modelo ao final de outro, enquanto recebe uma espécie de locomotiva com vagões? Sim, existe esse caminho. No entanto, o sistema de modelos deve ser flexível e capaz de inserir modelos diferentes no local necessário, enquanto observa uma certa ordem.
Construtor de modelos
Usado como uma referência para outro modelo. O atributo
id especifica o número do modelo inserido.
Como exemplo, fornecemos os modelos das amígdalas direita e esquerda, que são usados no modelo para examinar especialistas.
Padrão da amígdala direita <template> <line> <anatomy id="524" font-size="10" font-bold="true" font-underline="false" comment=" " /> <measurement id="1542" max-width="112" empty-name="true" comment=" " /> <measurement id="1543" max-width="161" empty-name="true" comment=" " /> </line> <line> <measurement id="1550" measurement-name="" comment=" " /> <measurement id="1551" measurement-name="" comment=" " /> <measurement id="1552" measurement-name="" comment=" " /> </line> </template>
Padrão da amígdala esquerda <template> <line> <anatomy id="525" font-size="10" font-bold="true" font-underline="false" comment=" " /> <measurement id="1554" max-width="112" empty-name="true" comment=" " /> <measurement id="1555" max-width="161" empty-name="true" comment=" " /> </line> <line> <measurement id="1556" measurement-name="" comment=" " /> <measurement id="1557" measurement-name="" comment=" " /> <measurement id="1558" measurement-name="" comment=" " /> </line> </template>
Parte do modelo de exame especializado, em que o modelo número 516 é para a amígdala direita e 517 é para a amígdala esquerda:
<template-builder id="516"/> <anatomy-comment comment-id="372" comment-type="comment" comment=" " /> <template-builder id="517"/> <anatomy-comment comment-id="373" comment-type="comment" comment=" " />

Preço-modelo-construtor
Indica a inserção de um modelo, cuja disponibilidade depende do pagamento. Por exemplo, exame de um médico, vários testes. Contém apenas um atributo de
identificação , onde o número do modelo é gravado.
Modelo de consulta do terapeuta:
<template> <price-template-builder id="336"/> <anatomy-comment comment-id="370" comment-type="comment" comment=" " /> <conclusion-label spacing-before="HALF"/> <anatomy-comment comment-id="371" comment-type="conclusion" comment=" " /> </template>

Modelo de exame de terapeuta <template> <anatomy-comment comment-id="358" comment-type="complaint" comment=" " /> <measurement id="8541" comment=" " /> <line> <measurement id="1521" measurement-name="" comment=" " /> <measurement id="1559" measurement-name="" comment=" " /> <measurement id="1560" empty-name="true" comment=" " /> </line> <template-builder id="516"/> <anatomy-comment comment-id="372" comment-type="comment" comment=" " /> <template-builder id="517"/> <anatomy-comment comment-id="373" comment-type="comment" comment=" " /> <line> <measurement id="1181" comment=" " /> <measurement id="1182" measurement-name="" comment=" " /> <measurement id="1183" empty-name="true" comment=" " /> </line> <line> <measurement id="1561" max-width="247" measurement-name="" comment=" " /> <measurement id="1562" measurement-name=" " comment=" " /> <measurement id="1563" max-width="70" empty-name="true" comment=" " /> </line> <line> <measurement id="1564" measurement-name=" " comment=" " /> <measurement id="1565" empty-name="true" comment=" " /> <measurement id="1566" empty-name="true" comment=" " /> </line> <line> <measurement id="1567" measurement-name=" " comment=" " /> <measurement id="1568" empty-name="true" comment=" " /> <measurement id="1569" empty-name="true" comment=" " /> </line> <line> <measurement id="1570" measurement-name=" " comment=" " /> <measurement id="1571" empty-name="true" comment=" " /> <measurement id="1572" comment=""/> </line> <measurement id="1153" max-width="247" need-points-to-end="false" comment=" "/> <line> <measurement id="1573" measurement-name=" " /> <measurement id="1574" comment=" " /> </line> <measurement id="1575" comment=" " /> <measurement id="1576" comment=" " /> <measurement id="1577" max-width="247" need-points-to-end="false" measurement-name=" " /> <measurement-group id="81" show-through-slash="true" multi-interval="true" is-color-selection="false"> <measurement id="1581" unit-width="27" measurement-name=" " comment=" " /> <measurement id="1582" unit-width="27" max-width="190" empty-name="true" comment=" " /> </measurement-group> <line> <measurement id="1578" measurement-name="" comment=" " /> <measurement id="1579" empty-name="true" comment=" " /> <measurement id="1580" empty-name="true" comment=" " /> </line> <measurement id="1621" comment=" " /> <measurement id="1583" comment=" " /> <measurement id="1587" comment=" ()" /> <line> <measurement id="1584" max-width="247" comment=" " /> <measurement id="1585" comment=" " /> <measurement id="1586" max-width="70" empty-name="true" comment=" " /> </line> </template>

Grupo de preço
Usado para exibir o grupo de preços nos modelos de análise. Pode conter uma tag de
preço-modelo-construtor . Atributos
- id - número do grupo de preços do banco de dados;
- bgcolor - cor de fundo;
- fgcolor - cor do texto.
Considere um protocolo de exame de sangue para listas de preços pagos, status lipídico, aspartato aminotransferase (AcAT), alanina aminotransferase (AlAT), testosterona total, estradiol, prolactina, hormônio do crescimento (STH).
Parte de um modelo de teste de sangue <template> <price-group id="9" bgcolor="#E18C8E" fgcolor="#FFFFFF"> <price-template-builder id="368"/> <price-template-builder id="369"/> <price-template-builder id="370"/> <price-template-builder id="371"/> <price-template-builder id="372"/> <price-template-builder id="373"/> <price-template-builder id="374"/> <price-template-builder id="375"/> <price-template-builder id="379"/> </price-group> <price-group id="10" bgcolor="#E18C8E" fgcolor="#FFFFFF"> <price-template-builder id="380"/> <price-template-builder id="381"/> <price-template-builder id="382"/> <price-template-builder id="383"/> <price-template-builder id="384"/> <price-template-builder id="385"/> <price-template-builder id="716"/> <price-template-builder id="717"/> </price-group> <price-group id="17" bgcolor="#E18C8E" fgcolor="#FFFFFF"> <price-template-builder id="425"/> <price-template-builder id="426"/> <price-template-builder id="427"/> <price-template-builder id="428"/> <price-template-builder id="429"/> <price-template-builder id="430"/> <price-template-builder id="431"/> <price-template-builder id="432"/> </price-group> <price-group id="31" bgcolor="#E18C8E" fgcolor="#FFFFFF"> <price-template-builder id="445"/> <price-template-builder id="446"/> </price-group> <anatomy-comment comment-id="6"/> </template>
Modelo para status lipídico (número no banco de dados - 379):
<template> <measurement id="36" comment=""/> <measurement id="37" comment=" "/> <measurement id="38" comment=" ()"/> <measurement id="39" comment=" ()"/> <measurement id="40" comment=" ("/> <measurement id="41" comment=" "/> </template>
Modelo para alanina aminotransferase (AlAT) (número no banco de dados - 381):
<template> <measurement id="43" comment=" ()"/> </template>

O sistema possui alguns atributos que podem ser encontrados em todas as tags:
- comentário - é ignorado pelo sistema e atua como uma marca para o desenvolvedor;
- espaçamento antes - espaçamento extra entre linhas. Opções possíveis: NENHUM, MEIO, CHEIO. O padrão é NENHUM;
- is-short - indica o tipo de string: normal (falso) ou curto (verdadeiro). O padrão é falso.
Usando o atributo
is-short , você pode criar um protocolo de pesquisa, onde a figura principal está localizada à esquerda e várias dimensões e grupos de medidas à direita. Uma dessas conclusões é um ultra-som da glândula tireóide, cujo modelo é dado abaixo:
Modelo de ultrassom da tireóide <template image-id="5" need-warning="true" image-position="left-top-corner"> <anatomy id="22" font-size="10" font-bold="true" font-underline="false" is-short="true" comment=" "/> <line is-short="true" spacing-before="HALF"> <measurement id="310" max-width="156" comment=""/> <measurement id="341" max-width="156" comment=""/> </line> <line is-short="true"> <measurement id="308" max-width="156" comment=""/> <measurement id="342" max-width="156" comment=""/> </line> <template-builder id="253" is-short="true"/> <template-builder id="254" is-short="true"/> <measurement id="307" is-short="true" measurement-name=" " spacing-before="HALF" /> <measurement id="309" measurement-name=" " /> <anatomy-comment comment-id="9" comment-type="comment" spacing-before="HALF" /> <conclusion-label spacing-before="HALF"/> <anatomy-comment comment-id="8" comment-type="conclusion" /> </template>
Padrão do lobo direito:
<template> <anatomy id="24" font-size="10" font-bold="true" font-underline="false" spacing-before="HALF" is-short="true" comment=" "/> <measurement-group id="2" is-color-selection="true" is-short="true"/> </template>
Modelo do lobo esquerdo:
<template> <anatomy id="23" font-size="10" font-bold="true" font-underline="false" spacing-before="HALF" is-short="true" comment=" "/> <measurement-group id="1" is-color-selection="true" is-short="true"/> </template>

Já mencionamos que várias metamorfoses ocorrem com uma pessoa ao longo da vida. As tags restantes são apenas para sua descrição e serão consideradas na próxima vez.