Pular para conteúdo

API EHRPoster - Envio de informações clínicas em FHIR R4

https://projectcore.atlassian.net/wiki/spaces/ESP/pages/1829634049


A API EHRPoster é usada para enviar informações clínicas para a plataforma em formato FHIR. Essa API possui uma única operação (POST), através da qual as informações são enviadas, encapsuladas em um recurso Bundle, do tipo “transcation” (“type” = “transaction”). A mensagem deve ser codificada em representação JSON (Content-Type application/fhir+json; Accept application/fhir+json).

*Para suporte em formato XML (Content-Type application/fhir+xml; Accept application/fhir+json), favor solicitar a liberação antes de utilizar a API.

A API usa autenticação OAuth2. Credenciais diferentes são utilizadas nos ambientes de QA (quality assurance) - usado para testes prévios e homologação da integração - e PRD (Produção) - usado para integrações testadas e aprovadas para uso produtivo. Para obter uma credencial de acesso à API entre em contato com o administrador da API.

A API suporta diferentes tipos de Bundle, cada tipo associado a um caso de uso. Cada Bundle suportado pela API é especificado em um perfil FHIR, que possui uma “url” que o identifica. Atualmente, a API suporta os seguintes perfis:

Caso de Uso Descrição URL do perfil
Sumários de eventos clínicos Usado para representação de informações clínicas geradas em contatos assistenciais ambulatorias (Registro de Atendimento Clínicio), internações (Sumário de Alta) ou de pronto atendimento (Sumário de Pronto Atendimento). http://ehrrunner.com/fhir/StructureDefinition/EventSummary-1.0
Resultados de exames laboratoriais Usado para representação de resultados de exames laboratorias. http://ehrrunner.com/fhir/StructureDefinition/Laboratory-1.0
Resultados de exames de imagens Usados para representação de resultados de exames de imagem. http://ehrrunner.com/fhir/StructureDefinition/ImageDiagnosticReport-1.0

Cada Bundle deve sempre conter um recurso FHIR principal (obrigatório), acompanhado, conforme o caso, de recursos FHIR complementares (obrigatórios e opcionais - conforme cardinalidade indicada para cada caso de uso), todos registrados na plataforma por requisições do tipo “POST”. Esses recursos são indicados na tabela abaixo.

Caso de Uso URL do perfil Recurso principal Recursos complementares (obrigatórios e opcionais)
Sumário de Eventos Clínico http://ehrrunner.com/fhir/StructureDefinition/EventSummary-1.0 Encounter (1..1) Condition (0..)
Procedure (0..
)
ServiceRequest (0..)
MedicationRequest (0..
)
AllergyIntolerance (0..)
Observation (0..
)
Resultados de Exames Laboratorial http://ehrrunner.com/fhir/StructureDefinition/Laboratory-1.0 DiagnosticReport (1..1) ServiceRequest (0..*)
Binary (1..1)
Resultado de Exames de Imagem http://ehrrunner.com/fhir/StructureDefinition/ImageStudyReport-1.0 DiagnosticReport (1..1) ServiceRequest (0..*)
Binary (1..1)

O recurso FHIR principal deve possuir ainda:

  • um identificador (“identifier”) com informações sobre a identificação do registro no sistema de origem;
  • uma referência para o paciente, sujeito das informações clínicas.

Nos exemplos apresentados nessa documentação, as propriedades indicadas entre chaves duplas (formato Postman) {{ }} representam variáveis que devem ser substituídas pelos valores adequados, conforme o caso.

A seguir, é apresentado um exemplo de como o recurso Bundle é formado.

{
    "resourceType": "Bundle",
    "meta": {
        "profile": ["http://ehrrunner.com/fhir/StructureDefinition/Laboratory-1.0"]
    },
    "type": "transaction",
    "entry": [
        // Entry do recurso principal
        {
            "fullUrl": "urn:uuid:report-1",
            "resource": {
                "resourceType": "DiagnosticReport",
                (...)
                "identifier": [
                    {
                        "system": "urn:oid:{{oidSistemaOrigem}}",
                        "value": "{{recordId}}"
                    }
                ]
                (...)
                "subject": {
                    "reference": "Patient?identifier=urn:oid:{{patientIdOid}}%7C{{patientId}}"
                },
                (...)
            },
            "request": {
                "method": "POST",
                "url": "DiagnosticReport"
            }
        }
        // entry de recursos complementares
        (...)
    ]
}

As variáveis neste exemplo são:

Variável Significado Obervações
oidSistemaOrigem Identificador único (oid) do sistema (instância) que envia a informação Esse valor é fornecido pela governaça da plataforma. O valor é associado à credencial de segurança gerada para o parceiro que utiliza o serviço, sendo que recursos enviados contento valores não registrados pela governança são rejeitados pela API.
recordId Identificador local do registro que está sendo integrado Idealmente, esse valor deve conter o id único (ex. chave primária da tabela) no sistema de origem. É utilizado para rastreabilidade das integrações, correção de erros de integração ou substituição das informações enviadas por versões mais novas (atualizações) dos recursos. Para resultados de exames, sugere-se que esse valor contenha o número da OS (LIS ou RIS)
patientIdOid Identificador (oid) do sistema de nomes utilizado para identificar o paciente São suportados*:

Identificador OID

CPF 2.16.840.1.113883.13.237

CNS 2.16.840.1.113883.13.236
patientId Identificador do paciente CPF ou CNS, conforme o patientIdOid disponível.

*para suporte a outros NamingSystem, favor contatar o administrador da API.

Sumário de Evento Clínico

A definição formal do perfil esta disponível em: (disponível em breve).

Resultado de Exame Laboratorial

Resultados de exames de imagens são integrados na plataforma usando este perfil. O perfil deve ser utilizado para envio de um único resultado de exame, por vez. Para envio de múltiplos resultados de exames, é necessário utilizar múltiplas chamadas na API EHRPoster.

Esse perfil define um Bundle que contém:

  • (uma entry com) um recurso DiagnosticReport (obrigatório): utilizado para representar o “resultado de exame”;
  • (uma entry com) um recurso ServiceRequest (opcional): utilizado para representar o “pedido de exame” que gerou o resultado;
  • (uma ou mais entries com) recurso(s) Binary, utilizado(s) para representar os laudos formatados (presentedForm) que compõem o resultado de exame. Laudos formatados devem ser enviados em formato PDF ou HTML.

O exemplo abaixo apresenta (partes de) um Bundle com três entries/recursos: DiagnosticReport (resultado de exame); ServiceRequest (pedido de exame) e Binary (laudo formatado). Payload de exemplo completo disponível neste arquivo Postman (anexo).

{
    "resourceType": "Bundle",
    "meta": {
        "profile": ["http://ehrrunner.com/fhir/StructureDefinition/Laboratory-1.0"]
    },
    "type": "transaction",
    "entry": [
        {
            "fullUrl": "urn:uuid:report-1",
            "resource": {
                "resourceType" : "DiagnosticReport",
                "meta": {
                    "profile": ["http://ehrrunner.com/fhir/StructureDefinition/ResultadoExameLaboratorial-1.0"]
                },
                "contained": [
                    {
                        "resourceType": "Organization",
                        "id": "laboratorio",
                        "identifier": [
                            {
                                "system": "urn:oid:2.16.840.1.113883.13.36",
                                "value": "{{cnesLaboratorio}}"
                            },
                            {
                                "system": "urn:oid:2.16.76.1.3.3",
                                "value": "{{cnpjLaboratorio}}"
                            }
                        ],
                        "name": "{{nomeLaboratorio}}"
                    }
                ],
                "identifier" : [{ 
                    "system": "urn:oid:{{oidSistemaOrigem}}",
                    "value": "{{recordId}}" 
                }], 
                "basedOn" : [{ 
                    "reference": "urn:uuid:request-1"
                }], 
                "status" : "final",
                "category" : [{ 
                    "coding": [{
                        "system": "http://terminology.hl7.org/CodeSystem/v2-0074",
                        "code": "LAB",
                        "display": "Laboratory"
                    }] 
                }], 
                "code" : {     
                    "text": "{{listaMneumonicos}}"
                }, 
                "subject" : { 
                    "reference": "Patient?identifier=urn:oid:{{patientIdOid}}%7C{{patientId}}"
                }, 
                "issued" : "{{dataHoraResultado}}",
                "performer" : [
                    { "reference": "#laboratorio" }
                ],
                "presentedForm" : [
                    { 
                        "contentType": "application/pdf",
                        "url": "urn:uuid:binary-1"
                    }
                ]
            },
            "request": {
                "method": "POST",
                "url": "DiagnosticReport"
            }
        },
        {
            "fullUrl": "urn:uuid:request-1",
            "resource": {
                "resourceType" : "ServiceRequest",
                "meta": {
                    "profile": ["http://ehrrunner.com/fhir/StructureDefinition/PedidoExameLaboratorial-1.0"],
                    "versionId": "update"
                },
                "contained": [
                    {
                        "resourceType": "Practitioner",
                        "id": "solicitante",
                        "identifier": [
                            {
                                "extension": [
                                    {
                                        "url": "http://ehrrunner.com/fhir/StructureDefinition/BRJurisdicaoOrgaoEmissor-1.0",
                                        "valueCodeableConcept": {
                                            "coding": [
                                                {
                                                    "system": "http://ehrrunner.com/fhir/CodeSystem/BRUnidadeFederacao-1.0",
                                                    "code": "{{ufCrmSolicitante}}"
                                                }
                                            ]
                                        }
                                    }
                                ],
                                "type": {
                                    "coding": [
                                        {
                                            "system": "http://terminology.hl7.org/CodeSystem/v2-0203",
                                            "code": "MD"
                                        }
                                    ]
                                },
                                "value": "{{crmSolicitante}}",
                                "assigner": {
                                    "display": "CONSELHO REGIONAL DE MEDICINA (CRM)"
                                }
                            },
                            {
                                "type": {
                                    "coding": [
                                        {
                                            "system": "http://terminology.hl7.org/CodeSystem/v2-0203",
                                            "code": "TAX"
                                        }
                                    ]
                                },
                                "value": "{{cpfSolicitante}}"
                            },
                            {
                                "type": {
                                    "coding": [
                                        {
                                            "system": "http://terminology.hl7.org/CodeSystem/v2-0203",
                                            "code": "HC"
                                        }
                                    ]
                                },
                                "value": "{{cnsSolicitante}}"
                            }
                        ],
                        "name": [
                            { "text": "{{nomeSolicitante}}" }
                        ]
                    }
                ],
                "requisition" : { 
                    "system": "urn:oid:{{oidSistemaOrigem}}",
                    "value": "{{numeroOS}}" 
                }, 
                "status": "completed",
                "intent": "order",
                "category" : [{ 
                    "coding": [{
                        "system": "http://snomed.info/sct",
                        "code": "108252007",
                        "display": "Laboratory procedure"
                    }] 
                }], 
                "code" : {     
                    "text": "{{listaMneumonicos}}"
                }, 
                "orderDetail": [
                    {
                        "coding": [
                            {
                                "system": "http://www.saude.gov.br/fhir/r4/CodeSystem/BRCBHPMTUSS",
                                "code": "{{codigoPrescricaoSADT1}}",
                                "display": "{{descricaoPrescricaoSADT1}}"
                            },
                            {
                                "system": "urn:oid:{{oidSistemaOrigem}}.{{cnesLaboratorio}}",
                                "code": "{{codigoSistemaOrigemPrescricaoSADT1}}",
                                "display": "{{descricaoSistemaOrigemPrescricaoSADT1}}"
                            }
                        ]
                    },
                    {
                        "coding": [
                            {
                                "system": "http://www.saude.gov.br/fhir/r4/CodeSystem/BRCBHPMTUSS",
                                "code": "{{codigoPrescricaoSADT2}}",
                                "display": "{{descricaoPrescricaoSADT2}}"
                            },
                            {
                                "system": "urn:oid:{{oidSistemaOrigem}}.{{cnesLaboratorio}}",
                                "code": "{{codigoSistemaOrigemPrescricaoSADT2}}",
                                "display": "{{descricaoSistemaOrigemPrescricaoSADT2}}"
                            }
                        ]
                    },
                    {
                        "coding": [
                            {
                                "system": "http://www.saude.gov.br/fhir/r4/CodeSystem/BRCBHPMTUSS",
                                "code": "{{codigoPrescricaoSADT3}}",
                                "display": "{{descricaoPrescricaoSADT3}}"
                            },
                            {
                                "system": "urn:oid:{{oidSistemaOrigem}}.{{cnesLaboratorio}}",
                                "code": "{{codigoSistemaOrigemPrescricaoSADT3}}",
                                "display": "{{descricaoSistemaOrigemPrescricaoSADT3}}"
                            }
                        ]
                    },
                    {
                        "coding": [
                            {
                                "system": "http://www.saude.gov.br/fhir/r4/CodeSystem/BRCBHPMTUSS",
                                "code": "{{codigoPrescricaoSADT4}}",
                                "display": "{{descricaoPrescricaoSADT4}}"
                            },
                            {
                                "system": "urn:oid:{{oidSistemaOrigem}}.{{cnesLaboratorio}}",
                                "code": "{{codigoSistemaOrigemPrescricaoSADT4}}",
                                "display": "{{descricaoSistemaOrigemPrescricaoSADT4}}"
                            }
                        ]
                    },
                    {
                        "coding": [
                            {
                                "system": "http://www.saude.gov.br/fhir/r4/CodeSystem/BRCBHPMTUSS",
                                "code": "{{codigoPrescricaoSADT5}}",
                                "display": "{{descricaoPrescricaoSADT5}}"
                            },
                            {
                                "system": "urn:oid:{{oidSistemaOrigem}}.{{cnesLaboratorio}}",
                                "code": "{{codigoSistemaOrigemPrescricaoSADT5}}",
                                "display": "{{descricaoSistemaOrigemPrescricaoSADT5}}"
                            }
                        ]
                    },
                    {
                        "coding": [
                            {
                                "system": "http://www.saude.gov.br/fhir/r4/CodeSystem/BRCBHPMTUSS",
                                "code": "{{codigoPrescricaoSADT6}}",
                                "display": "{{descricaoPrescricaoSADT6}}"
                            },
                            {
                                "system": "urn:oid:{{oidSistemaOrigem}}.{{cnesLaboratorio}}",
                                "code": "{{codigoSistemaOrigemPrescricaoSADT6}}",
                                "display": "{{descricaoSistemaOrigemPrescricaoSADT6}}"
                            }
                        ]
                    },
                    {
                        "coding": [
                            {
                                "system": "http://www.saude.gov.br/fhir/r4/CodeSystem/BRCBHPMTUSS",
                                "code": "{{codigoPrescricaoSADT7}}",
                                "display": "{{descricaoPrescricaoSADT7}}"
                            },
                            {
                                "system": "urn:oid:{{oidSistemaOrigem}}.{{cnesLaboratorio}}",
                                "code": "{{codigoSistemaOrigemPrescricaoSADT7}}",
                                "display": "{{descricaoSistemaOrigemPrescricaoSADT7}}"
                            }
                        ]
                    },
                    {
                        "coding": [
                            {
                                "system": "http://www.saude.gov.br/fhir/r4/CodeSystem/BRCBHPMTUSS",
                                "code": "{{codigoPrescricaoSADT8}}",
                                "display": "{{descricaoPrescricaoSADT8}}"
                            },
                            {
                                "system": "urn:oid:{{oidSistemaOrigem}}.{{cnesLaboratorio}}",
                                "code": "{{codigoSistemaOrigemPrescricaoSADT8}}",
                                "display": "{{descricaoSistemaOrigemPrescricaoSADT8}}"
                            }
                        ]
                    }
                ],    
                "subject": {
                    "reference": "Patient?identifier=urn:oid:{{oidIdentificador}}%7C{{identificador}}"
                },
                "encounter": {
                    "type": "Encounter",
                    "identifier": {
                        "system": "urn:oid:{{oidPEPOrigem}}",
                        "code": "{{idConsulta}}"
                    }
                },
                "authoredOn": "{{dataSolicitacao}}",
                "requester": {
                    "reference": "#practitioner-1"
                }
            },
            "request": {
                "method": "POST",
                "url": "ServiceRequest"
            }
        },
        {
            "fullUrl": "urn:uuid:binary-1",
            "resource": {
                "resourceType" : "Binary",
                "contentType": "application/pdf",
                "data": "{{base64ResultadoExameLaboratorial}}"
            },
            "request": {
                "method": "POST",
                "url": "Binary"
            }
        }
    ]
}

Para utilização do perfil, as seguintes informações são suportadas no processo de integração.

No recurso DiagnosticReport:

Metadado Ocorrência Localização Descrição Observações Exemplo
Versão 0..1 $,meta.versionId Versão do laudo. Obrigatório, se o recurso representar uma correção (atualização) de uma versão anterior do mesmo resultado de exame (laudo) - identificado pelo identificador único do recurso. Para que a atualização seja realizada, é necessário que a data de emissão ($.issued) seja maior que a data de emissão informada anteriormente, para o mesmo resultado de exame. A plataforma faz um controle de versão prórpio das instâncias armazenadas, então o valor informado é usado apenas para realizar uma transação de atualização, não sendo persistido pela plataforma. Caso seja encontrato um recurso com o mesmo identificador e data de emissão anterior a data informada em $.issued, o recurso será atualizado, ao invés de se criar um novo recurso. java<br>“versionId”: “update”<br>
Laboratório 1..1 $.contained Organização onde o exame foi realizado Idealmente, fornecer identificadores para o laboratório: cnes ou cnpj do laboratório.

Caso presente, deve ser referenciado (referência literal) em $.performer.
java<br>{<br> "resourceType": "Organization",<br> "id": "laboratorio",<br> "identifier": [<br> {<br> "system": "urn:oid:2.16.840.1.113883.13.36",<br> "value": "{{cnesLaboratorio}}"<br> },<br> {<br> "system": "urn:oid:2.16.76.1.3.3",<br> "value": "{{cnpjLaboratorio}}"<br> } <br> ],<br> "name": "{{nomeLaboratorio}}"<br>}<br>
Pedido de exame 0..1 $.basedOn Referênca para o pedido de exame (se houve). É possível usar uma referência literal para o ServiceRequest que representa o pedido de exames, se: (1) este estiver contido no Bundle (vide exemplo) ou se essa refência for conhecida na plataforma (ServiceRequest/{resourceId}) java<br>{ <br>    "reference": "urn:uuid:request-1"<br>}<br>
Categoria do exame 0..1 $.category Categoria do exame (ex. Laboratório etc.) Preferencialmente codificado com https://hl7.org/fhir/valueset-diagnostic-service-sections.html java<br>{<br> "coding": [<br> {<br> "system": "http://terminology.hl7.org/CodeSystem/v2-0074",<br> "code": "LAB",<br> "display": "Laboratory"<br> }<br> ]<br>}<br>
Descrição do exame realizado 1..1 $.code Informação descritiva do exame que foi realizado. Tipicamente, aqui só será representada a informação descritiva, utilizada para visualização do tipo de exame na lista indexada de exames de Laboratório. O conjunto completo de códigos do exame (clínicos e de faturamento) é representado, com detalhes, no pedido de exame (ServiceRequest).

Recomenda-se:

(1) Caso seja um laudo (arquivo) contendo mais de um resultado de exame - utilizar a lista de mneumonicos (locais) que identificam os exames contidos no laudo.

(2) Caso seja um único exame/paniel, pode-se utilizar o nome do exame/painel.
java<br>{<br> "text": "{{listaMneumonicos}}"<br>}<br>
Data de emissão 1..1 $.issued Data de emissão do resultado de exame (laudo). Formato FHIR (ISO) java<br>“issued”: “2022-01-01T08:22:02-03:00”<br>
Laudo (s) 1..n $.presentedForm Referência(s) para o(s) recurso(s) Binary contendo o(s) laudo(s formatado(s) Apenas formatos HTML (“contentType”: “text/html”) e PDF (“contentType”: “appplication/pdf”). java<br>[{ <br> "contentType": "application/pdf",<br> "url": "urn:uuid:binary-1"<br>}]<br>

No recurso ServiceRequest:

Metadado Ocorrência Localização Descrição Observações Exemplo
Versão 0..1 $,meta.versionId Versão do pedido de exame. Obrigatório, se o recurso representar uma correção (atualização) de uma versão anterior do pedido de exame associado ao resultado de exame (laudo) - identificado pelo identificador único do recurso. Para que a atualização seja realizada, é necessário que a data de solicitação do exame ($.authoredOn) seja maior que a data de solicitação do exame informada anteriormente, para o mesmo resultado de exame. A plataforma faz um controle de versão prórpio das instâncias armazenadas, então o valor informado é usado apenas para realizar uma transação de atualização, não sendo persistido pela plataforma. Caso seja encontrato um recurso com o mesmo identificador e data de solicitação anterior a data informada em $.authoredOn, o recurso será atualizado, ao invés de se criar um novo recurso. java<br>“versionId”: “update”<br>
Solicitante 1..1 $.contained Identificação do profissional que solicitou o exame Idealmente, fornecer identificadores para o registro profissional (tipoConselho, ufEmissor, numeroRegistro) e cpf ou cns do profissional. Se estiver presente, deverá ser referenciado no $.requester. java<br>{<br> "resourceType": "Practitioner",<br> "id": "solicitante",<br> "identifier": [<br> {<br> "extension": [<br> {<br> "url": "http://ehrrunner.com/fhir/StructureDefinition/BRJurisdicaoOrgaoEmissor-1.0",<br> "valueCodeableConcept": {<br> "coding": [<br> {<br> "system": "http://ehrrunner.com/fhir/CodeSystem/BRUnidadeFederacao-1.0",<br> "code": "{{ufCrmSolicitante}}"<br> }<br> ]<br> }<br> }<br> ],<br> "type": {<br> "coding": [<br> {<br> "system": "http://terminology.hl7.org/CodeSystem/v2-0203",<br> "code": "MD"<br> }<br> ]<br> },<br> "value": "{{crmSolicitante}}",<br> "assigner": {<br> "display": "CONSELHO REGIONAL DE MEDICINA (CRM)"<br> }<br> },<br> {<br> "type": {<br> "coding": [<br> {<br> "system": "http://terminology.hl7.org/CodeSystem/v2-0203",<br> "code": "TAX"<br> }<br> ]<br> },<br> "value": "{{cpfSolicitante}}"<br> },<br> {<br> "type": {<br> "coding": [<br> {<br> "system": "http://terminology.hl7.org/CodeSystem/v2-0203",<br> "code": "TAX"<br> }<br> ]<br> },<br> "value": "{{cpfSolicitante}}"<br> }<br> ],<br> "name": [<br> {<br> "text": "{{nomeSolicitante}}"<br> }<br> ]<br>}<br>
Ordem de Serviço 0..1 $.requisition Número(s) da ordem de serviço Identificadores usados para autorização, faturamento e/ou conciliação entre pedido e resultado de exame. java<br>{<br> "system": "urn:oid:{{oidSistemaOrigem}}",<br> "value": "{{numeroOS}}"<br>}<br>
Descrição do exame realizado 1..1 $.code Informação descritiva do exame que foi realizado. Tipicamente, aqui só será representada a informação descritiva, utilizada para visualização do tipo de exame na lista indexada de exames de Laboratório. O conjunto completo de códigos do exame (clínicos e de faturamento) é representado, em $.orderDetail.

Recomenda-se:

(1) Caso seja um laudo (arquivo) contendo mais de um resultado de exame - utilizar a lista de mneumonicos (locais) que identificam os exames contidos no laudo.

(2) Caso seja um único exame/paniel, pode-se utilizar o nome do exame/painel.
java<br>{<br> "text": "{{listaMneumonicos}}"<br>}<br>
Detalhes (códigos) do(s) exame(s) 0..n $.orderDetail Código do exame realizado. Para cada exame incluído no pedido de exame, é desejável fornecer o código clínico (S-RES ou LIS - tipicamente um mneumônico) e o código de faturamente relacionado (SIGTAP ou TUSS), se disponíveis. java<br>{<br> "coding": [<br> {<br> "system": "http://www.saude.gov.br/fhir/r4/CodeSystem/BRCBHPMTUSS",<br> "code": "{{codigoPrescricaoSADT1}}",<br> "display": "{{descricaoPrescricaoSADT1}}"<br> },<br> {<br> "system": "urn:oid:{{oidSistemaOrigem}}.{{cnesLaboratorio}}",<br> "code": "{{codigoSistemaOrigemPrescricaoSADT1}}",<br> "display": "{{descricaoSistemaOrigemPrescricaoSADT1}}"<br> }<br> ]}<br>} <br>
Contato assistencial 0..1 $.encounter Identificador único do contato assistencial no sistema de origem onde foi registrado o pedido de exame (se disponível). Utilizar o número de atendimento no Prontuário Eletrônico do atendimento, quando disponível. java<br>{<br> "type": "Encounter",<br> "identifier": {<br> "system": "urn:oid:{{oidPEPOrigem}}",<br> "code": "{{idConsulta}}"<br> }<br>}<br>
Data da solicitação 1..1 $.authoredOn Data da solicitação do exame. Formato FHIR (ISO) java<br>“authoredOn”: “2022-01-01T07:12:32-03:00”<br>

No recurso Binary:

Nota: Para laudos formatados com representação binária (base64) com tamanho superior a 128KBytes, não é possível utilizar o formato XML. Deve-se usar, portanto, apenas o formato JSON, nestes casos.

Metadado Ocorrência Localização Descrição Observações Exemplo
Tipo de conteúdo 1..1 $.contentType Tipo (formato) de conteúdo para o laudo formatado Mime type (text/html ou application/pdf) java<br>"contentType": "application/pdf"<br>
Laudo formatado , 1..1 $.data Laudo formatado, em formato binário (codificado em Base64) java<br>"data": "{{base64ResultadoExameLaboratorial}}"<br>

Resultado de Exame de Imagem

Resultados de exames de imagens são integrados na plataforma usando este perfil. O perfil deve ser utilizado para envio de um único resultado de exame, por vez. Para envio de múltiplos resultados de exames, é necessário utilizar múltiplas chamadas na API EHR.

Esse perfil define um Bundle que contém:

  • (uma entry com) um recurso DiagnosticReport (obrigatório): utilizado para representar o “resultado de exame”;
  • (uma entry com) um recurso ServiceRequest (opcional): utilizado para representar o “pedido de exame” que gerou o resultado;
  • (uma ou mais entries com) recurso(s) Binary, utilizado(s) para representar os laudos formatados (presentedForm) que compõem o resultado de exame. Laudos formatados devem ser enviados em formato PDF ou HTML.

O exemplo abaixo apresenta (partes de) um Bundle com três entries/recursos: DiagnosticReport (resultado de exame); ServiceRequest (pedido de exame) e Binary (laudo formatado). Payload de exemplo completo disponível neste arquivo Postman (anexo).

{
    "resourceType": "Bundle",
    "meta": {
        "profile": ["http://ehrrunner.com/fhir/StructureDefinition/ImageStudyReport-1.0"]
    },
    "type": "transaction",
    "entry": [
        {
            "fullUrl": "urn:uuid:report-1",
            "resource": {
                "resourceType" : "DiagnosticReport",
                "meta": {
                    "profile": ["http://ehrrunner.com/fhir/StructureDefinition/ResultadoExameImagem-1.0"]
                },
                "contained": [
                    {
                        "resourceType": "Practitioner",
                        "id": "responsavelTecnico",
                        "identifier": [
                            {
                                "extension": [
                                    {
                                        "url": "http://ehrrunner.com/fhir/StructureDefinition/BRJurisdicaoOrgaoEmissor-1.0",
                                        "valueCodeableConcept": {
                                            "coding": [
                                                {
                                                    "system": "http://ehrrunner.com/fhir/CodeSystem/BRUnidadeFederacao-1.0",
                                                    "code": "{{ufConselhoRT}}"
                                                }
                                            ]
                                        }
                                    }
                                ],
                                "type": {
                                    "coding": [
                                        {
                                            "system": "{{codeSystemTipoConselhoRT}}",
                                            "code": "{{tipoConselhoRT}}"
                                        }
                                    ]
                                },
                                "value": "{{conselhoRT}}",
                                "assigner": {
                                    "display": "{{nomeConselhoRT}}"
                                }
                            },
                            {
                                "type": {
                                    "coding": [
                                        {
                                            "system": "http://terminology.hl7.org/CodeSystem/v2-0203",
                                            "code": "TAX"
                                        }
                                    ]
                                },
                                "value": "{{cpfRT}}"
                            },
                            {
                                "type": {
                                    "coding": [
                                        {
                                            "system": "http://terminology.hl7.org/CodeSystem/v2-0203",
                                            "code": "HC"
                                        }
                                    ]
                                },
                                "value": "{{cnsRT}}"
                            }
                        ],
                        "name": [
                            { "text": "{{nomeRT}}" }
                        ]
                    },
                    {
                        "resourceType": "Organization",
                        "id": "laboratorio",
                        "identifier": [
                            {
                                "system": "urn:oid:2.16.840.1.113883.13.36",
                                "value": "{{cnesLaboratorio}}"
                            },
                            {
                                "system": "urn:oid:2.16.76.1.3.3",
                                "value": "{{cnpjLaboratorio}}"
                            }
                        ],
                        "name": "{{nomeLaboratorio}}"
                    }
                ],
                "identifier" : [{ 
                    "system": "urn:oid:{{oidSistemaOrigem}}",
                    "value": "{{recordId}}" 
                }], 
                "basedOn" : [{ 
                    "reference": "urn:uuid:request-1"
                }], 
                "status" : "final",
                "category" : [{ 
                    "coding": [{
                        "system": "http://terminology.hl7.org/CodeSystem/v2-0074",
                        "code": "RAD",
                        "display": "Radiology"
                    }] 
                }], 
                "code" : {     
                    "text": "{{descricaoExameImagemRealizado}}"
                }, 
                "subject" : { 
                    "reference": "Patient?identifier=urn:oid:{{patientIdOid}}%7C{{patientId}}"
                }, 
                "issued" : "{{dataHoraResultado}}",
                "performer" : [
                    { "reference": "#responsavelTecnico" },
                    { "reference": "#laboratorio" }
                ],
                "presentedForm" : [
                    { 
                        "contentType": "application/pdf",
                        "url": "Binary/{{oidSistemaOrigem}}.{{recordId}}.{{versao}}"
                    }
                ]
            },
            "request": {
                "method": "POST",
                "url": "DiagnosticReport"
            }
        },
        {
            "fullUrl": "urn:uuid:request-1",
            "resource": {
                "resourceType" : "ServiceRequest",
                "meta": {
                    "profile": ["http://ehrrunner.com/fhir/StructureDefinition/PedidoExameImagem-1.0"]
                },
                "contained": [
                    {
                        "resourceType": "Practitioner",
                        "id": "practitioner-1",
                        "identifier": [
                            {
                                "extension": [
                                    {
                                        "url": "http://ehrrunner.com/fhir/StructureDefinition/BRJurisdicaoOrgaoEmissor-1.0",
                                        "valueCodeableConcept": {
                                            "coding": [
                                                {
                                                    "system": "http://ehrrunner.com/fhir/CodeSystem/BRUnidadeFederacao-1.0",
                                                    "code": "{{ufCrmSolicitante}}"
                                                }
                                            ]
                                        }
                                    }
                                ],
                                "type": {
                                    "coding": [
                                        {
                                            "system": "http://terminology.hl7.org/CodeSystem/v2-0203",
                                            "code": "MD"
                                        }
                                    ]
                                },
                                "value": "{{crmSolicitante}}",
                                "assigner": {
                                    "display": "CONSELHO REGIONAL DE MEDICINA (CRM)"
                                }
                            },
                            {
                                "type": {
                                    "coding": [
                                        {
                                            "system": "http://terminology.hl7.org/CodeSystem/v2-0203",
                                            "code": "TAX"
                                        }
                                    ]
                                },
                                "value": "{{cpfSolicitante}}"
                            },
                            {
                                "type": {
                                    "coding": [
                                        {
                                            "system": "http://terminology.hl7.org/CodeSystem/v2-0203",
                                            "code": "HC"
                                        }
                                    ]
                                },
                                "value": "{{cnsSolicitante}}"
                            }
                        ],
                        "name": [
                            { "text": "{{nomeSolicitante}}" }
                        ]
                    }
                ],
                "requisition" : { 
                    "system": "urn:oid:{{oidSistemaOrigem}}",
                    "value": "{{numeroOS}}" 
                }, 
                "status": "completed",
                "intent": "order",
                "category" : [{ 
                    "coding": [{
                        "system": "http://snomed.info/sct",
                        "code": "363679005",
                        "display": "Imaging"
                    }] 
                }], 
                "code" : {     
                    "text": "{{descricaoExameImagemRealizado}}"
                }, 
                "orderDetail": [
                    {
                        "coding": [
                            {
                                "system": "http://www.saude.gov.br/fhir/r4/CodeSystem/BRCBHPMTUSS",
                                "code": "{{codigoPrescricaoSADTImagem1}}",
                                "display": "{{descricaoPrescricaoSADTImagem1}}"
                            },
                            {
                                "system": "urn:oid:{{oidSistemaOrigem}}.{{cnesLaboratorio}}",
                                "code": "{{codigoSistemaOrigemPrescricaoSADTImagem1}}",
                                "display": "{{descricaoSistemaOrigemPrescricaoSADTImagem1}}"
                            }
                        ]
                    }
                ],    
                "subject": {
                    "reference": "Patient?identifier=urn:oid:{{oidIdentificador}}%7C{{identificador}}"
                },
                "encounter": {
                    "type": "Encounter",
                    "identifier": {
                        "system": "urn:oid:{{oidPEPOrigem}}",
                        "code": "{{idConsulta}}"
                    }
                },
                "authoredOn": "{{dataSolicitacao}}",
                "requester": {
                    "reference": "#practitioner-1"
                }
            },
            "request": {
                "method": "POST",
                "url": "ServiceRequest"
            }
        },
        {
            "fullUrl": "urn:uuid:binary-1",
            "resource": {
                "resourceType" : "Binary",
                "contentType": "application/pdf",
                "data": "{{base64LaudoExameImagem}}"
            },
            "request": {
                "method": "POST",
                "url": "Binary"
            }
        }        
    ]
}

Para utilização do perfil, as seguintes informações são suportadas no processo de integração.

No recurso DiagnosticReport:

Metadado Ocorrência Localização Descrição Observações Exemplo
Versão 0..1 $,meta.versionId Versão do laudo. Obrigatório, se o recurso representar uma correção (atualização) de uma versão anterior do mesmo resultado de exame (laudo) - identificado pelo identificador único do recurso. Para que a atualização seja realizada, é necessário que a data de emissão ($.issued) seja maior que a data de emissão informada anteriormente, para o mesmo resultado de exame. A plataforma faz um controle de versão prórpio das instâncias armazenadas, então o valor informado é usado apenas para realizar uma transação de atualização, não sendo persistido pela plataforma. Caso seja encontrato um recurso com o mesmo identificador e data de emissão anterior a data informada em $.issued, o recurso será atualizado, ao invés de se criar um novo recurso. java<br>“versionId”: “update”<br>
Responsável técnico 0..n $.contained Identificação do profissional que elaborou o laudo do exame (radiologista) Idealmente, fornecer identificadores para o registro profissional (tipoConselho, ufEmissor, numeroRegistro) e cpf ou cns do profissional.

Caso presente, deve ser referenciado (referencia literal) em $.performer.
java<br>{<br> "resourceType": "Practitioner",<br> "id": "responsavelTecnico",<br> "identifier": [<br> {<br> "extension": [<br> {<br> "url": "http://ehrrunner.com/fhir/StructureDefinition/BRJurisdicaoOrgaoEmissor-1.0",<br> "valueCodeableConcept": {<br> "coding": [<br> {<br> "system": "http://ehrrunner.com/fhir/CodeSystem/BRUnidadeFederacao-1.0",<br> "code": "{{ufConselhoRT}}"<br> }<br> ]<br> }<br> }<br> ],<br> "type": {<br> "coding": [<br> {<br> "system": "{{codeSystemTipoConselhoRT}}",<br> "code": "{{tipoConselhoRT}}"<br> }<br> ]<br> },<br> "value": "{{conselhoRT}}",<br> "assigner": {<br> "display": "{{nomeConselhoRT}}"<br> }<br> },<br> {<br> "type": {<br> "coding": [<br> {<br> "system": "http://terminology.hl7.org/CodeSystem/v2-0203",<br> "code": "TAX"<br> }<br> ]<br> },<br> "value": "{{cpfRT}}"<br> },<br> {<br> "type": {<br> "coding": [<br> {<br> "system": "http://terminology.hl7.org/CodeSystem/v2-0203",<br> "code": "HC"<br> }<br> ]<br> },<br> "value": "{{cnsRT}}"<br> }<br> ],<br> "name": [<br> {<br> "text": "{{nomeRT}}"<br> }<br> ]<br>}<br>
Laboratório 1..1 $.contained Organização onde o exame foi realizado Idealmente, fornecer identificadores para o laboratório: cnes ou cnpj do laboratório.

Caso presente, deve ser referenciado (referência literal) em $.performer.
java<br>{<br> "resourceType": "Organization",<br> "id": "laboratorio",<br> "identifier": [<br> {<br> "system": "urn:oid:2.16.840.1.113883.13.36",<br> "value": "{{cnesLaboratorio}}"<br> },<br> {<br> "system": "urn:oid:2.16.76.1.3.3",<br> "value": "{{cnpjLaboratorio}}"<br> } <br> ],<br> "name": "{{nomeLaboratorio}}"<br>}<br>
Pedido de exame 0..1 $.basedOn Referênca para o pedido de exame (se houve). É possível usar uma referência literal para o ServiceRequest que representa o pedido de exames, se: (1) este estiver contido no Bundle (vide exemplo) ou se essa refência for conhecida na plataforma (ServiceRequest/{resourceId}) java<br>{ <br>    "reference": "urn:uuid:request-1"<br>}<br>
Categoria do exame 0..1 $.category Categoria do exame (ex. Radiologia, Ultrasonografia etc.) Preferencialmente codificado com https://hl7.org/fhir/valueset-diagnostic-service-sections.html java<br>{<br> "coding": [<br> {<br> "system": "http://terminology.hl7.org/CodeSystem/v2-0074",<br> "code": "RAD",<br> "display": "Radiology"<br> }<br> ]<br>}<br>
Descrição do exame realizado 1..1 $.code Informação descritiva do exame que foi realizado. Tipicamente, aqui só será representada a informação descritiva, utilizada para visualização do tipo de exame na lista indexada de exames de imagens. O conjunto completo de códigos do exame (clínicos e de faturamento) é representado, com detalhes, no pedido de exame (ServiceRequest). java<br>{<br> "text": "{{descricaoExameRealizado}}"<br>}<br>
Data de emissão 1..1 $.issued Data de emissão do resultado de exame (laudo). Formato FHIR (ISO) java<br>“issued”: “2022-01-01T08:22:02-03:00”<br>
Laudo (s) 1..n $.presentedForm Referência(s) para o(s) recurso(s) Binary contendo o(s) laudo(s formatado(s) Apenas formatos HTTP (“contentType”: “text/html”) e PDF (“contentType”: “appplication/pdf”). java<br>[{ <br> "contentType": "application/pdf",<br> "url": "urn:uuid:binary-1"<br>}]<br>
URL para imagens do exame (instruções de acesso) 0..1 $.extension Definida para cada integração É possível que seja requerido a atualização de informações de acesso ao visualisador de imagens (PACS viewer), em tempo de acesso pelo profissional de saúde ou paciente interessado no resultado de exames. Essa implementação é realizada conforme cada integração.

No recurso ServiceRequest:

Metadado Ocorrência Localização Descrição Observações Exemplo
Versão 0..1 $,meta.versionId Versão do pedido de exame. Obrigatório, se o recurso representar uma correção (atualização) de uma versão anterior do pedido de exame associado ao resultado de exame (laudo) - identificado pelo identificador único do recurso. Para que a atualização seja realizada, é necessário que a data de solicitação do exame ($.authoredOn) seja maior que a data de solicitação do exame informada anteriormente, para o mesmo resultado de exame. A plataforma faz um controle de versão prórpio das instâncias armazenadas, então o valor informado é usado apenas para realizar uma transação de atualização, não sendo persistido pela plataforma. Caso seja encontrato um recurso com o mesmo identificador e data de solicitação anterior a data informada em $.authoredOn, o recurso será atualizado, ao invés de se criar um novo recurso. java<br>“versionId”: “update”<br>
Solicitante 1..1 $.contained Identificação do profissional que solicitou o exame Idealmente, fornecer identificadores para o registro profissional (tipoConselho, ufEmissor, numeroRegistro) e cpf ou cns do profissional. Se estiver presente, deverá ser referenciado no $.requester. java<br>{<br> "resourceType": "Practitioner",<br> "id": "solicitante",<br> "identifier": [<br> {<br> "extension": [<br> {<br> "url": "http://ehrrunner.com/fhir/StructureDefinition/BRJurisdicaoOrgaoEmissor-1.0",<br> "valueCodeableConcept": {<br> "coding": [<br> {<br> "system": "http://ehrrunner.com/fhir/CodeSystem/BRUnidadeFederacao-1.0",<br> "code": "{{ufCrmSolicitante}}"<br> }<br> ]<br> }<br> }<br> ],<br> "type": {<br> "coding": [<br> {<br> "system": "http://terminology.hl7.org/CodeSystem/v2-0203",<br> "code": "MD"<br> }<br> ]<br> },<br> "value": "{{crmSolicitante}}",<br> "assigner": {<br> "display": "CONSELHO REGIONAL DE MEDICINA (CRM)"<br> }<br> },<br> {<br> "type": {<br> "coding": [<br> {<br> "system": "http://terminology.hl7.org/CodeSystem/v2-0203",<br> "code": "TAX"<br> }<br> ]<br> },<br> "value": "{{cpfSolicitante}}"<br> },<br> {<br> "type": {<br> "coding": [<br> {<br> "system": "http://terminology.hl7.org/CodeSystem/v2-0203",<br> "code": "TAX"<br> }<br> ]<br> },<br> "value": "{{cpfSolicitante}}"<br> }<br> ],<br> "name": [<br> {<br> "text": "{{nomeSolicitante}}"<br> }<br> ]<br>}<br>
Ordem de Serviço 0..1 $.requisition Número(s) da ordem de serviço Identificadores usados para autorização, faturamento e/ou conciliação entre pedido e resultado de exame. java<br>{<br> "system": "urn:oid:{{oidSistemaOrigem}}",<br> "value": "{{numeroOS}}"<br>}<br>
Descrição do exame realizado 1..1 $.code Informação descritiva do exame que foi realizado. Tipicamente, aqui só será representada a informação descritiva, utilizada para visualização do tipo de exame na lista indexada de exames de imagens. O conjunto completo de códigos do exame (clínicos e de faturamento) é representado, com detalhes, no pedido de exame (ServiceRequest). java<br>{<br> "text": "{{descricaoExameRealizado}}"<br>}<br>
Detalhes (códigos) do(s) exame(s) 0..n $.orderDetail Código do exame realizado. Para cada exame incluído no pedido de exame, é desejável fornecer o código clínico (S-RES ou RIS) e o código de faturamente relacionado (SIGTAP ou TUSS), se disponíveis. java<br>{<br> "coding": [<br> {<br> "system": "http://www.saude.gov.br/fhir/r4/CodeSystem/BRCBHPMTUSS",<br> "code": "{{codigoPrescricaoSADTImagem1}}",<br> "display": "{{descricaoPrescricaoSADTImagem1}}"<br> },<br> {<br> "system": "urn:oid:{{oidSistemaOrigem}}.{{cnesLaboratorio}}",<br> "code": "{{codigoSistemaOrigemPrescricaoSADTImagem1}}",<br> "display": "{{descricaoSistemaOrigemPrescricaoSADTImagem1}}"<br> }<br> ]<br>}<br>
Contato assistencial 0..1 $.encounter Identificador único do contato assistencial no sistema de origem onde foi registrado o pedido de exame (se disponível). Utilizar o número de atendimento no Prontuário Eletrônico do atendimento, quando disponível. java<br>{<br> "type": "Encounter",<br> "identifier": {<br> "system": "urn:oid:{{oidPEPOrigem}}",<br> "code": "{{idConsulta}}"<br> }<br>}<br>
Data da solicitação 1..1 $.authoredOn Data da solicitação do exame. Formato FHIR (ISO) java<br>“authoredOn”: “2022-01-01T07:12:32-03:00”<br>

No recurso Binary:

Nota: Para laudos formatados com representação binária (base64) com tamanho superior a 128KBytes, não é possível utilizar o formato XML. Deve-se usar, portanto, apenas o formato JSON, nestes casos.

Metadado Ocorrência Localização Descrição Observações Exemplo
Tipo de conteúdo 1..1 $.contentType Tipo (formato) de conteúdo para o laudo formatado Mime type (text/html ou application/pdf) java<br>"contentType": "application/pdf"<br>
Laudo formatado , 1..1 $.data Laudo formatado, em formato binário (codificado em Base64) java<br>"data": "{{base64LaudoExameImagem}}"<br>