Protocolo de integração de laboratórios terceiros

Este capítulo aborda a integração entre laboratórios terceirizados e o Sistema de Gestão em Saúde Pública, detalhando os processos de envio de solicitações de exames e cancelamentos, bem como o recebimento de resultados e registro de problemas na coleta. São apresentados os requisitos técnicos, fluxos de comunicação via webservices e exemplos de estrutura XML para garantir a interoperabilidade eficiente entre os sistemas.

Envio de requisições/solicitações e cancelamento de coletas

Atenção: Esse capítulo é uma transcrição do arquivo original enviado pela empresa responsável pelo Sistema de Gestão Pública de Saúde, para acessar o documento original na integra realize o download abaixo

Integração laboratório - Envio de Solicitação.pdf

Objetivo do documento

Este manual de interoperabilidade tem como objetivo permitir que as empresas responsáveis pelos sistemas de laboratórios terceirizados desenvolvam drivers de comunicação capazes de receber requisições de exames, assim como o cancelamento das mesmas, provenientes do sistema de gestão em saúde pública.

Com essa integração, o laboratório contratado terá acesso rápido e automatizado às informações disponibilizadas pelo cliente, o que agilizará significativamente as atividades laboratoriais do dia a dia.

Detalhes Técnicos

Pré-requisitos

Envio de requisições - Fluxo simplificado

Após o alinhamento dos códigos do laboratório terceiro e a ativação do serviço para a unidade específica, no momento em que a coleta de amostras dos exames for registrada, as solicitações serão enviadas para uma fila de transmissão interna. Em um curto intervalo de tempo, as solicitações da fila serão transmitidas via webservice.

No processo de transmissão, o sistema Vivver aguardará o retorno do request dos exames para atualizar os dados nas respectivas solicitações. Isso garante que posteriormente, os resultados sejam recebidos e registrados corretamente, proporcionando a atualização dos dados pertinentes ao atendimento médico e à rotina laboratorial.

Endereço do Serviço

URL do Serviço: http://url_endpoint/InterfaceService.asmx ou host da VPN
Método HTTP: POST
SOAPAction: "ReceberPedido"
Content-Type: text/xml;charset=UTF-8

Definição do XML de envio de envio de requisição

Campo Descrição Tipo do Dado Tamanho
pedido_lab.ordem_servico Número da solicitação de exames no Sistema de Gestão Pública de Saúde Numérico 13
pedido_lab.codigo_pedido Número da solicitação de exames no Sistema de Gestão Pública de Saúde Numérico 13
pedido_lab.pedido.codigo Número da solicitação de exames no Sistema de Gestão Pública de Saúde Numérico 13
pedido_lab.pedido.ordem_servico Número da solicitação de exames no Sistema de Gestão Pública de Saúde Numérico 13
pedido_lab.pedido.origem Nome da unidade saúde que solicitou os exames Texto 255
pedido_lab.pedido.profissional Nome do profissional da unidade de saúde que solicitou os exames Texto 255
pedido_lab.pedido.ufconselho UF do conselho do profissional que solicitou os exames Texto 2
pedido_lab.pedido.orgaoemissor Nome do órgão emissor do profissional solicitante Texto 255
pedido_lab.pedido.numconselho Número do conselho do profissional solicitante Texto 13
pedido_lab.pedido.equipe Número INE da equipe em que o profissional solicitante está vinculado Numérico 10
pedido_lab.pedido.posto Posto de Coleta sugerido Texto 120
pedido_lab.pedido.urgente Indica se o exame é urgente (S = Sim, N = Não) Texto 1
pedido_lab.pedido.cnesUnidadeExecutante Código CNES da unidade de saúde que executará o exame. Numérico 7
pedido_lab.pedido.codconvenio Código do plano de saúde no sis relacionado a solicitação Numérico 3
pedido_lab.pedido.convenio Descrição do plano de saúde relacionado a solicitação. Texto 255
pedido_lab.pedido.observacao Justificativa da solicitação Texto 1400
pedido_lab.pedido.gestante Indica se no momento da solciitação a paciente está gestante (S ou N). Texto 1
pedido_lab.pedido.codcid Código do cid relacionado a solicitação. Texto 4
pedido_lab.pedido.datahora Data e hora da solicitação YYYY-MM-DD HH:MM:SS Texto 19
pedido_lab.paciente.codigo Número prontuário do paciente no Sistema de Gestão Pública de Saúde Numérico 13
pedido_lab.paciente.nome Nome do paciente no Sistema de Gestão Pública de Saúde Texto 120
pedido_lab.paciente.sexo Sexo do paciente no Sistema de Gestão Pública de Saúde Texto 1
pedido_lab.paciente.dt_nascimento Data de nascimento do paciente no Sistema de Gestão Pública de Saúde - AA-MM-DD Texto 8
pedido_lab.paciente.raca Código da raça/cor informada no cadastro do paciente:

BRANCA
PRETA
PARDA
AMARELA
INDIGENA
Numérico 2
pedido_lab.paciente.etnia Enviada somente se a tag raca for 05, conforme tabela padrão do SUS.
O código enviado é uma referência ao código usado no eSUS : https://integracao.esusab.ufsc.br/ledi/documentacao/referencias/dicionario.html - Etnia
Texto 4
pedido_lab.paciente.altura Altura do paciente informada no momento da coleta Numérico 3
pedido_lab.paciente.peso Peso do paciente informado no momento da coleta Numérico 3
pedido_lab.paciente.cns Número do cartão nacional do SUS do paciente Numérico 15
pedido_lab.paciente.obscoleta Observação da coleta Texto 255
pedido_lab.paciente.nomemae Nome da mãe do paciente no SIS Texto 255
pedido_lab.paciente.nomesocial Nome social do paciente informado no SIS Texto 255
pedido_lab.paciente.endereco Endereço de residência do paciente Texto 255
pedido_lab.paciente.cep CEP de residência do paciente Numérico 8
pedido_lab.paciente.telefone Telefone principal do paciente informado no SIS Numérico 15
pedido_lab.paciente.email E Mail do paciente preenchido no SIS Texto 255
pedido_lab.paciente.rg Número do documento de identidade do paciente Texto 20
pedido_lab.paciente.cpf Número CPF do paciente Numérico 11
pedido_lab.exames.exame.codigo Código do exame no Sistema de Gestão Pública de Saúde Numérico 10
pedido_lab.exames.exame.amostra ID da amostra da solicitação / código de barras da amostra Numérico 13
pedido_lab.exames.exame.amostras.amostra.amostra.cbarra ID da amostra da solicitação / código de barras da amostra Numérico 13
pedido_lab.exames.exame.descricao Descrição do exame no Sistema de Gestão Pública de Saúde Numérico 70
pedido_lab.exame.recoleta Indica se houve registro de problema na coleta S ou N Texto 1
pedido_lab.exame.codmotivorecoleta Código do motivo de problema na coleta quando existir recoleta for S Numérico 3
pedido_lab.exame.desmotivorecoleta Descrição do motivo de problema na coleta quando recoleta for S Texto 255
pedido_lab.exames.exame.questionario.codigoPergunta Código de identificação da pergunta do questionário respondido para o exame Numérico 4
pedido_lab.exames.exame.questionario.pergunta Descrição da pergunta do questionário Texto 120
pedido_lab.exames.exame.questionario.resposta Respostas das perguntas do questionário Texto 120
pedido_lab.exames.anamnese.””tag_name”” Este bloco traz os mesmos dados das tags questionário acima, porém em uma estrutura diferente, onde o campo tag_name parametrizado nas perguntas e seus respectivos valores são enviadas como tag do objeto anamnese. Texto 120
pedido_lab.exames.exame.itens.item.codigoItem Código do item de resultado do exame no Sistema de Gestão Pública de Saúde Numérico 4
pedido_lab.exames.exame.itens.item.sgl Sigla do item de resultado do exame no Sistema de Gestão Pública de Saúde Texto 10
pedido_lab.exames.exame.itens.item.descricao Descrição da sigla do item de resultado do exame no Sistema de Gestão Pública de Saúde Texto 70

Envio de requisição via cURL

# Envio de requisição via cURL
curl --location 'http://url_endpoint/InterfaceService.asmx' \
--header 'SOAPAction: ReceberPedido' \
--header 'Content-Type: text/xml;charset=UTF-8' \
--data 'PASTE_XML_HERE'
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xmlns:viv="http://www.vivver.com.br"
                  xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soapenv:Body>
        <viv:ReceberPedido>
            <pedidoLab>
                <ordemServico>2022060003391</ordemServico>
                <codigoPedido>2022060003391</codigoPedido>
                <identificador/>
                <usuarioWebId/>

                <pedido>
                    <codigo>2022060003391</codigo>
                    <ordemServico>2022060003391</ordemServico>
                    <origem>LABORATORIO MUNICIPA</origem>
                    <profissional>PROFISSIONAL TESTE</profissional>
                    <ufconselho>MG</ufconselho>
                    <orgaoemissor/>
                    <numconselho>99999</numconselho>
                    <equipe/>
                    <posto>LABORATORIO MUNICIPAL</posto>
                    <urgente>N</urgente>
                    <cnesUnidadeExecutante>9999999</cnesUnidadeExecutante>
                    <codconvenio xsi:nil="true"/>
                    <convenio xsi:nil="true"/>
                    <observacao/>
                    <gestante>N</gestante>
                    <codcid xsi:nil="true"/>
                    <datahora>2022-06-30 11:23</datahora>
                </pedido>

                <paciente>
                    <codigo>166906</codigo>
                    <nome>Teste um</nome>
                    <sexo>F</sexo>
                    <dtNascimento>2024-01-01</dtNascimento>
                    <raca>03</raca>
                    <etnia/>
                    <altura xsi:nil="true"/>
                    <peso xsi:nil="true"/>
                    <cns>999999999999999</cns>
                    <obscoleta xsi:nil="true"/>
                    <nomemae>Estrangeira</nomemae>
                    <nomesocial xsi:nil="true"/>
                    <endereco>RUA TESTE ,1, CENTRO, MUNICIPIO TESTE</endereco>
                    <cep>35599999</cep>
                    <telefone>99999999</telefone>
                    <email xsi:nil="true"/>
                    <rg/>
                    <cpf>99999999999</cpf>
                </paciente>

                <exames>
                    <exame>
                        <codigo>299</codigo>
                        <amostra>047860200108</amostra>

                        <amostras>
                            <amostra>
                                <cBarra>047860200108</cBarra>
                            </amostra>
                        </amostras>

                        <obsexame/>
                        <descricao>HEMATOCRITO</descricao>

                        <questionario>
                            <codigoPergunta>1</codigoPergunta>
                            <pergunta>teste 1</pergunta>
                            <resposta>10</resposta>

                            <codigoPergunta>2</codigoPergunta>
                            <pergunta>teste 2</pergunta>
                            <resposta>Sim</resposta>

                            <codigoPergunta>3</codigoPergunta>
                            <pergunta>teste 3</pergunta>
                            <resposta>["", "Não pratica"]</resposta>
                        </questionario>

                        <anamnese>
                            <teste1>10</teste1>
                            <teste2>S</teste2>
                            <teste3>N</teste3>
                        </anamnese>

                        <recoleta>N</recoleta>
                        <codmotivorecoleta xsi:nil="true"/>
                        <desmotivorecoleta xsi:nil="true"/>

                        <itens>
                            <item>
                                <codigoItem>1</codigoItem>
                                <sgl>HEMAT</sgl>
                                <descricao>HEMATOCRITO</descricao>
                            </item>
                            <item>
                                <codigoItem>999</codigoItem>
                                <sgl>IntExa</sgl>
                                <descricao>Integração Exame</descricao>
                            </item>
                        </itens>
                    </exame>
                </exames>
            </pedidoLab>
        </viv:ReceberPedido>
    </soapenv:Body>
</soapenv:Envelope>

Definição do XML esperado no response de envio de requisição

Campo Descrição Tipo do Dado Tamanho
ordemServico Código da ordem de serviço String 50
codigoPedido Código do pedido do cliente String 50
exames.exame.codigo Código do exame String 50
exames.exame.amostras.amostra.codig oBarra Código de barras
da amostra - não é obrigatório
String 50
exames.exame.amostras.amostra.etique ta Dados da etiqueta String 50
retorno Situação da geração do pedido Boolean 50
desErro Descrição da situaçãp geração do pedido String 50
<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
    <s:Body>
        <ReceberPedidoResponse xmlns="http://www.vivver.com.br">
            <ReceberPedidoResult xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
                <ordemServico>2023090000007</ordemServico>
                <codigoPedido>2023090000007</codigoPedido>

                <exames>
                    <exame>
                        <codigo>127</codigo>
                        <amostra>0121000208</amostra>
                    </exame>
                </exames>

                <retorno>true</retorno>
                <desErro i:nil="true"/>
            </ReceberPedidoResult>
        </ReceberPedidoResponse>
    </s:Body>
</s:Envelope>

Envio de cancelamento - Fluxo Simplificado

No momento em que o cancelamento da coleta de um determinado exame da solicitação, ou de todos, é efetuado, a situação do registro já existente na fila de transmissão interna é atualizada para ser cancelada. Em um curto intervalo de tempo, estes cancelamentos da fila serão transmitidos via webservice para método específico.

Endereço do Serviço

URL do Serviço: http://url_endpoint/InterfaceService.asmx ou host da VPN
Método HTTP: POST
SOAPAction: "ReceberCancelamento"
Content-Type: text/xml;charset=UTF-8

Definição do XML de envio de envio de requisição

Campo Descrição Tipo do Dado Tamanho
pedidoLab.identificador Nome do sistema de gestão em saúde pública String fixa SISGS
pedido_lab.pedido.codigo Número da solicitação de exames no SIS Vivver Numérico 13
pedido_lab.pedido.ordem_servico Número da solicitação de exames no SIS Vivver Numérico 13
pedido_lab.pedido.cancelamentoTotal Indica se é cancelamento outal ou somente de determinado registro boolean false ou true
pedido_lab.pedido.exames.exame.codigo Código do exame cancelado Integer 5
pedido_lab.pedido.exames.exame.codmotivorecoleta Código no SIS do motivo do cancelamento da amostra Integer 5
pedido_lab.pedido.exames.exame.desmotivorecoleta Descrição do motivo do cancelamento da amostra Texto 255
# Envio de requisição via cURL para cancelamento de exames
curl -X POST http://vpn1.root.ooo:7017/InterfaceService.asmx \
-H "SOAPAction: \"ReceberCancelamento\"" \
-H "Content-Type: text/xml;charset=UTF-8" \
-d 'PASTE_XML_HERE'
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xmlns:viv="http://www.vivver.com.br"
                  xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soapenv:Body>
        <viv:ReceberCancelamento>
            <pedidoLab>
                <identificador>SISGS</identificador>

                <pedido>
                    <codigo>2024080000008</codigo>
                    <ordemServico>2024080000008</ordemServico>
                    <cancelamentoTotal>false</cancelamentoTotal>
                </pedido>

                <exames>
                    <exame>
                        <codigo>1554</codigo>
                        <codmotivorecoleta>32</codmotivorecoleta>
                        <desmotivorecoleta>AMOSTRA INSUFICIENTE</desmotivorecoleta>
                    </exame>
                    <exame>
                        <codigo>10</codigo>
                        <codmotivorecoleta>31</codmotivorecoleta>
                        <desmotivorecoleta>AMOSTRA INCORRETA</desmotivorecoleta>
                    </exame>
                </exames>
            </pedidoLab>
        </viv:ReceberCancelamento>
    </soapenv:Body>
</soapenv:Envelope>

Definição do XML esperado no response de envio de cancelamento

Campo Descrição Tipo do Dado Tamanho
pedido.codigo Número da solciitação String 50
exames.exame.codigo Código do exame String 50
exames.exame.desricaoRetorno Descrição da situação do cancelamento do exame String 50
.situacao Situação da geração do cancelamento Boolean 50
descricao Descrição da situaçãp geração do cancelamento String 50

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:s="http://www.w3.org/2001/XMLSchema">
    <SOAP-ENV:Body>
        <ReceberCancelamentoResponse xmlns="http://www.example.com">
            <ReceberCancelamentoResult>true</ReceberCancelamentoResult>

            <s01:retornoLab xmlns="http://www.example.com/cancelamento"
                            xmlns:s01="http://www.example.com">
                <pedido>
                    <codigo>2024080000087</codigo>
                </pedido>

                <exames>
                    <exame>
                        <codigo>839</codigo>
                        <descricaoRetorno>Exame(s) Cancelado(s) com sucesso.</descricaoRetorno>
                    </exame>
                    <exame>
                        <codigo>003</codigo>
                        <descricaoRetorno>Exame(s) Cancelado(s) com sucesso.</descricaoRetorno>
                    </exame>
                </exames>

                <situacao>true</situacao>
                <descricao>Processo realizado com sucesso.</descricao>
            </s01:retornoLab>
        </ReceberCancelamentoResponse>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Recebimento de Resultados e Registros de Problemas de Coleta

Atenção: Esse capítulo é uma transcrição do arquivo original enviado pela empresa responsável pelo Sistema de Gestão Pública de Saúde, para acessar o documento original na integra realize o download abaixo

Integração laboratório - Recebimento de resultados e problemas.pdf

Objetivo do documento

Este documento tem como objetivo descrever o processo de recebimento de resultados de exames enviados pelo laboratório terceiro, bem como a funcionalidade de registro de problemas na coleta dos exames. Essas informações serão transmitidas por meio da integração SIS (Sistema de Integração de Saúde) por parte do laboratório terceiro, utilizando um serviço web (Webservice). Esse sistema permite que o laboratório contratado entregue de forma eficiente e automatizada os resultados dos exames ao cliente, otimizando assim os procedimentos laboratoriais. Além disso, a funcionalidade de registro de problemas na coleta dos exames proporcionará um controle mais abrangente e preciso sobre eventuais dificuldades encontradas durante o processo de coleta, contribuindo para uma gestão mais eficaz da operação.

Pré requisitos

Autenticação

O Sistema de Gestão Pública de Saúde aguardará o laboratório consumir o serviço de envio na seguinte estrutura:

ENDPOINT sistema: https://sorocaba-sp.vivver.com

Response:
O token tem validade de 10 minutos. e94c0dbf34af4564ac23bcc013eaa7e4

Envio dos resultados de exames

Ao consumir o serviço o laboratório terceiro deve enviar um XML conforme a estrutura descrita abaixo. Após o recebimento deste XML o SIS irá traduzir os resultados para a linguagem própria e incluir em sua base junto ao registro do paciente.

Exemplo:
Verbo -> POST EnviaResultadoURI:
https://sorocaba-sp.vivver.com/lab/integracao_afip/envia_resultado

image.png

O Token adquirido no método requisita_token, deve ser informado no cabeçalho da requisição e enviar o xml de resultado, conforme exemplificado abaixo:

image.png

Definição do XML

O XML para recebimento de resultados do laboratório terceiro seguirá o seguinte padrão:

Campo Descrição Tipo do Dado Obrigatório
RecebeResultado.ResultadoLab.ordem Servico Número da solicitação de exames no Sistema de Gestão Pública de Saúde String(13) Sim
RecebeResultado.ResultadoLab.cnesU nidadeExecutante Código CNES - Código Nacional de
Estabelecimentos de Saúde
Integer Não
RecebeResultado.ResultadoLab.pedido. codigo Número do pedido na base do laboratório terceiro String(12) Não
RecebeResultado.ResultadoLab.pedido.
posto
Código posto de coleta Integer Não
RecebeResultado.ResultadoLab.pedido. postoDescricao Posto em que foi feito a coleta String(80) Não
RecebeResultado.ResultadoLab.pedido. convenio Número do convênio String Não
RecebeResultado.ResultadoLab.pedido. ordemServicoApoio Ordem de serviço de apoio String Não
RecebeResultado.ResultadoLab.pedido. dadosCadastrais Dados cadastrais adicionais String Não
RecebeResultado.ResultadoLab.pacient e.codigo Número do prontuário do paciente no Sistema de Gestão Pública de Saúde Integer Não
RecebeResultado.ResultadoLab.pacient e.nome Nome do paciente no Sistema de Gestão Pública de Saúde String Não
RecebeResultado.ResultadoLab.pacien te.sexo Nome do paciente no Sistema de Gestão Pública de Saúde String(1) Não
RecebeResultado.ResultadoLab.pacient e. Data de nascimento do paciente no Sistema de Gestão Pública de Saúde String(8) AAAAMMDD Não
RecebeResultado.ResultadoLab.pacient e.cpf CPF do paciente no Sistema de Gestão Pública de Saúde String(11) Não
RecebeResultado.ResultadoLab.exame s.exame.codigo Código do exame no Sistema de Gestão Pública de Saúde Integer Sim
RecebeResultado.ResultadoLab.exame s.exame.mnemonico Dado adicional sobre exame String Não
RecebeResultado.ResultadoLab.exame s.exame.descricao Descrição do exame String Não
RecebeResultado.ResultadoLab.exame s.exame.mascara.data Data texto máscara. Uso do laboratório terceiro String Não
RecebeResultado.ResultadoLab.exame s.exame.mascara.hora Hora texto máscara. Uso do laboratório terceiro String Não
RecebeResultado.ResultadoLab.exame
s.exame.mascara.versaoMascara
Versão da máscara. Uso do laboratório terceiro String Não
RecebeResultado.ResultadoLab.exame s.exame.amostras.amostra.codigoBarra Código de barras.Uso do laboratório terceiro String Não
RecebeResultado.ResultadoLab.exame s.exame.amostras.amostra.tipo Tipo da amostra. Uso do laboratório terceiro String Não
RecebeResultado.ResultadoLab.exame
s.exame.guia
Código da guia. Uso do laboratório terceiro String Não
RecebeResultado.ResultadoLab.exame s.exame.observacao Observação do exame String Não
RecebeResultado.ResultadoLab.exame
s.exame.solicitacao.data
Data da soliciação do exame String Não
RecebeResultado.ResultadoLab.exame s.exame.solicitacao.hora Hora da solicitação do exame String Não
RecebeResultado.ResultadoLab.exame s.exame.coleta.data Data / hora coleta no laboratório terceiro String DD/MM/AAAA
HH:MM:SS
Não
RecebeResultado.ResultadoLab.exame s.exame.coleta.hora Hora coleta no laboratório
terceiro
String HH:MM:SS Não
RecebeResultado.ResultadoLab.exame
s.exame.coleta.codResponsavel
Código do responsável pela
coleta no laboratório terceiro
String(8) Não
RecebeResultado.ResultadoLab.exame s.exame.coleta.nomeResponsavel Nome do responsável pela
coleta no laboratório terceiro
String Não
RecebeResultado.ResultadoLab.exame s.exame.liberacao.data Data / hora liberação no laboratório terceiro String DD/MM/AAAA
HH:MM:SS
Não
RecebeResultado.ResultadoLab.exame s.exame.liberacao.hora Hora liberação no laboratório
terceiro
HH:MM:SS Não
RecebeResultado.ResultadoLab.exame
s.exame.liberacao.codResponsavel
Código do responsável pela
liberação no laboratório terceiro
String(8) Não
RecebeResultado.ResultadoLab.exame s.exame.liberacao.nomeResponsavel Nome do responsável pela
liberação no laboratório terceiro
String Não
RecebeResultado.ResultadoLab.exame
s.exame.assinado
Assinatura do resultado do
exame no laboratório terceiro
String Não
RecebeResultado.ResultadoLab.exame s.exame.resultados.resultado.apelido Sigla do exame no Sistema de Gestão Pública de Saúde String(5) Sim
RecebeResultado.ResultadoLab.exame
s.exame.resultados.resultado.valor
Valor do resultado do exame Decimal Sim
RecebeResultado.ResultadoLab.exame s.exame.resultados.resultado.tipo Tipo do resultado do exame.
Uso do laboratório terceiro
String Não
RecebeResultado.ResultadoLab.exame s.exame.resultados.resultado.unMedida Unidade de medida do
resultado do exame. Uso do laboratório terceiro
String Não
RecebeResultado.ResultadoLab.exame s.exame.resultados.resultado.vlReferen
cia
Valor de referência do exame. Uso do laboratório terceiro String Não
RecebeResultado.ResultadoLab.exame
s.exame.resultados.resultado.limiteSup erior
Limite superior do resultado de exame. Uso do laboratório
terceiro
String Não
RecebeResultado.ResultadoLab.exame
s.exame.resultados.resultado.limiteInferi or
Limite inferior do resultado de
exame. Uso do laboratório terceiro
String Não
RecebeResultado.ResultadoLab.exame s.exame.resultados.resultado.processo Processo do resultado de
exame. Uso do laboratório terceiro
String Não
RecebeResultado.ResultadoLab.exame s.exame.resultados.resultado.metodolo
gia
Metodologia do resultado de exame. Uso do laboratório
terceiro
String Não
RecebeResultado.ResultadoLab.exame s.exame.resultados.resultado.culturaPo
sitiva
Resultado do exame cultura foi positivo String Não
RecebeResultado.ResultadoLab.exame s.exame.resultados.resultado.imagemb
ase64
Imagem do resultado do exame formato base 64 Base 64 Não
RecebeResultado.ResultadoLab.exame s.exame.resultadosCultura Resultados do exame de
cultuta
String Não
RecebeResultado.ResultadoLab.exame
s.exame.resultadoPdf
Arquivo PDF dos resultados
dos exames da solicitação
Base 64 Não
RecebeResultado.ResultadoLab.exame s.exame.resultadoUrlExame URL do resultado do exame da
solicitação
String Não
RecebeResultado.ResultadoLab.resulta
doURLPedido
URL do resultado da solicitação
de exames
String Não

Exemplo da requisição de recebimento de resultados

# Envio de requisição via HTTP para envio de resultados laboratoriais
Method: POST
RequestUri: 'https://www.municipio-mg.vivver.com/lab/integracao_afip/envia_resultado'
Version: 1.1
Content: System.Net.Http.StringContent
Headers:
{
    Accept-Encoding: deflate
    Cache-Control: no-cache, max-age=0
    Authorization: Token AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    SOAPAction: http://tempuri.org/IServicoRecebeResultado/RecebeResultado
    Content-Type: text/xml; charset=utf-8
}
<?xml version="1.0" encoding="UTF-8"?>
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"
          xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
    <Body>
        <RecebeResultado>
            <ResultadoLab xmlns="">
                <ordemServico>2022120014372</ordemServico>
                <cnesUnidadeExecutante/>

                <pedido>
                    <codigo>123456</codigo>
                    <posto i:nil="true"/>
                    <postoDescricao i:nil="true"/>
                    <convenio i:nil="true"/>
                    <ordemServicoApoio i:nil="true"/>
                    <dadosCadastrais i:nil="true"/>
                </pedido>

                <paciente>
                    <codigo>29727</codigo>
                    <nome>NOME DO CIDADÃO</nome>
                    <sexo>F</sexo>
                    <dtNascimento>20020708</dtNascimento>
                    <cpf i:nil="true"/>
                </paciente>

                <exames>
                    <exame>
                        <codigo>91</codigo>
                        <mnemonico>HEMOGRAMA COMPLETO</mnemonico>
                        <descricao i:nil="true"/>

                        <mascara>
                            <data i:nil="true"/>
                            <hora i:nil="true"/>
                            <versaoMascara i:nil="true"/>
                        </mascara>

                        <amostras>
                            <amostra>
                                <codigoBarra>047876500108</codigoBarra>
                                <tipo/>
                            </amostra>
                        </amostras>

                        <guia i:nil="true"/>
                        <observacao i:nil="true"/>

                        <solicitacao>
                            <data i:nil="true"/>
                            <hora i:nil="true"/>
                        </solicitacao>

                        <coleta>
                            <data>08/07/2022 15:39:00</data>
                            <hora i:nil="true"/>
                            <codResponsavel>DANUZAMX</codResponsavel>
                            <nomeResponsavel i:nil="true"/>
                        </coleta>

                        <liberacao>
                            <data>08/01/2022 16:50:00</data>
                            <hora i:nil="true"/>
                            <codResponsavel>BIOQUIM1</codResponsavel>
                            <nomeResponsavel i:nil="true"/>
                        </liberacao>

                        <assinado i:nil="true"/>

                        <resultados>
                            <resultado>
                                <apelido>GRUABODET</apelido>
                                <valor>A</valor>
                                <tipo i:nil="true"/>
                                <unMedida i:nil="true"/>
                                <vlReferencia i:nil="true"/>
                                <limiteSuperior i:nil="true"/>
                                <limiteInferior i:nil="true"/>
                                <processo i:nil="true"/>
                                <metodologia i:nil="true"/>
                                <culturaPositiva i:nil="true"/>
                                <imagembase64 i:nil="true"/>
                            </resultado>
                            <resultado>
                                <apelido>OBS</apelido>
                                <valor/>
                                <tipo i:nil="true"/>
                                <unMedida i:nil="true"/>
                                <vlReferencia i:nil="true"/>
                                <limiteSuperior i:nil="true"/>
                                <limiteInferior i:nil="true"/>
                                <processo i:nil="true"/>
                                <metodologia i:nil="true"/>
                                <culturaPositiva i:nil="true"/>
                                <imagembase64 i:nil="true"/>
                            </resultado>
                        </resultados>

                        <resultadosCultura/>
                        <PDF i:nil="true"/>
                        <resultadoUrlExame i:nil="true"/>
                    </exame>
                </exames>

                <resultadoURLPedido/>
            </ResultadoLab>
        </RecebeResultado>
    </Body>
</Envelope>

Envio de problemas na coleta dos exames

Para registrar problemas durante as coletas dos exames, o laboratório terceiro terá a flexibilidade de reportar questões de duas maneiras distintas: para a solicitação como um todo, utilizando um único motivo, ou de forma específica para exames individuais. Para realizar esse processo, o laboratório deverá utilizar o Webservice de acordo com as diretrizes estabelecidas, seguindo o mesmo método de autenticação.

É importante salientar que os códigos dos motivos a serem incluídos nas requisições devem estar previamente cadastrados no Sistema de Gestão Pública de Saúde. Portanto, é necessário que o laboratório terceiro entre em contato com a equipe operacional do sistema para obter esses códigos, assegurando uma comunicação eficaz e padronizada.

Exemplo:
Verbo -> POST EnviaResultadoURI:
https://municipio-mg.empresa.com/lab/integracao_afip/cancela_exame

image.png

O Token adquirido no método requisita_token, deve ser informado no cabeçalho da requisição e enviar o xml de resultado, conforme exemplificado abaixo:

image.png

Definição do XML

O XML para recebimento de resultados do laboratório terceiro seguirá o seguinte padrão:

Campo Descrição Tipo do Dado Obrigatório
CancelamentoIntegracao.pedido.ordem Servico Número da solicitação de exames no Sistema de Gestão Pública de Saúde String(13) Sim
CancelamentoIntegracao.pedido.cancel amentoTotal indica se a requisição é para registrar problema para toda solicitação ou exames específicos true = cancelar
toda solicitação..
boolean Sim
CancelamentoIntegracao.pedido.codigo
_motivo
Código do motivo do problema. Esta tag somente é necessária se o cancelamentototal for igual a true, caso contrário não
informar.
Integer Se cancelamento total for igual a true.
CancelamentoIntegracao.pedido.exame
s.exame.codigo
Código do exame que deseja registrar problema na coleta Integer Se cancelamento total for igual a false.
CancelamentoIntegracao.pedido.exame s.exame.codigo_motivo Código do motivo de problema na coleta String(80) Somente se cancelamento total for igual a false.

Exemplo de requisição

# Envio de requisição via HTTP para cancelamento de exames
Method: POST
RequestUri: 'https://www.municipio-mg.vivver.com/lab/integracao_afip/cancela_exame'
Headers:
{
    Accept-Encoding: deflate
    Cache-Control: no-cache, max-age=0
    Authorization: Token AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    SOAPAction: http://tempuri.org/IServicoRecebeResultado/RecebeResultado
    Content-Type: text/xml; charset=utf-8
}
<?xml version="1.0" encoding="UTF-8"?>
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"
          xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
    <Body>
        <CancelamentoIntegracao xmlns="">
            <pedido>
                <ordemServico>2023090000021</ordemServico>
                <cancelamentoTotal>false</cancelamentoTotal>
                <codigo_motivo>6</codigo_motivo>

                <exames>
                    <exame>
                        <codigo>54</codigo>
                        <codigo_motivo>2</codigo_motivo>
                    </exame>
                    <exame>
                        <codigo>102</codigo>
                        <codigo_motivo>3</codigo_motivo>
                    </exame>
                </exames>
            </pedido>
        </CancelamentoIntegracao>
    </Body>
</Envelope>