Modelo Computacional

Objetivo

Especificar os recursos FHIR (resources) utilizados no registro de um Resultado de Exame Laboratorial. Os recursos são identificados e detalhados por meio da representação JSON de um resultado. Ou seja, é para consumo de integradores (profissionais com habilidades em desenvolvimento de software). Gestores e outros profissionais não interessados em detalhes técnicos podem consultar o modelo de informação correspondente.

O integrador deverá...

  • Saber quais são as informações necessários para montar um resultado de exame de SARS-CoV-2-19.
  • Saber como estes dados devem ser fornecidos no documento JSON exigido pela RNDS.
  • Ser capaz de montar um documento JSON para refletir o resultado de um dado exame.

Material para consulta

A representação JSON completa de um resultado de exame laboratorial pode ser obtida aqui.

As partes de um resultado

O resultado de exame laboratorial, por exemplo, o resultado do exame de SARS-CoV-2-19, é definido por meio de um recurso Composition, que referencia um recurso Observation que, por fim, faz uso de um tercerio recurso FHIR, o Specimen. Todos estes três recursos são necessários.

Estes três recursos FHIR não são usados conforme definidos, mas por meio de perfis (profiles) que permitem adaptações. As adaptações para o contexto nacional, definidas pela RNDS, são Resultado de Exame Laboratorial (Composition), Diagnóstico em Laboratório Clínico (Observation) e, por fim, Amostra Biológica (Specimen).

Bundle (pacote)

Adicionalmente, um quarto recurso é necessário para compor um resultado de exame laboratorial, um recurso que reúne os outros três comentados acima. O recurso FHIR Bundle foi definido especificamente para reunir recursos FHIR. Vários recursos FHIR podem ser agrupados em um Bundle. Dito de outra forma, Bundle é um contêiner de recursos FHIR.

Feitas tais considerações, o diagrama UML abaixo esclarece que um Bundle é o "envelope" ou "pacote" no qual é depositado um resultado de exame laboratorial, que referencia um diagnóstio em laboratório clínico que, por sua vez, referencia a amostra biológica correspondente.

img

Todo recurso FHIR pode ser representado em JSON. A propriedade resourceType é obrigatória e identifica o tipo de recurso. Para um recurso do tipo Bundle o valor desta propriedade é "Bundle", conforme ilustrado no "esqueleto" de JSON abaixo.

{
   "resourceType":"Bundle",
   "type":"document",
   "timestamp":"2020-03-20T00:00:00-03:00",
   "meta": {
      "lastUpdated": "2020-03-20T00:00:00-03:00"
   },
   "identifier":{ ... omitido ... },
   "entry":[
      { ... Resultado de Exame Laboratorial ... },
      { ... Diagnóstico em Laboratório Clínico ... },
      { ... Amostra Biológica ... }
    ]
}

A propriedade type indica o propósito do Bundle, no caso, trata-se de um documento (document). A propriedade timestamp indica o instante em que o Bundle foi criado, provavelmente o mesmo instante da última atualização, fornecida na propriedade meta.lastUpdate.

As outras duas propriedades do "esqueleto" são identifier e entry, justamente aquelas cujos valores foram omitidos, mas que são detalhadamente fornecidos nas seções seguintes.

Em particular, a propriedade entry é o motivo da existência de um Bundle. Exatamente por meio desta propriedade são definidos os recursos FHIR que fazem parte do Bundle. Neste caso, o Resultado de Exame Laboratorial, o Diagnóstico em Laboratório Clínico e a Amostra Biológica.

Quem desejar consultar o JSON completo, já "inflado" com os valores para estas propriedades, antes de percorrer as seções seguintes, pode obtê-lo aqui.

Bundle (identifier)

O identificador (identifier) do Bundle é montado a partir de dois valores, o identificador do solicitante e o identificador do resultado, respectivamente representados abaixo por {{lab-identificador}} e {{exame-id-lab}}:

"identifier": {
    "system": "http://www.saude.gov.br/fhir/r4/NamingSystem/BRRNDS-{{identificador-solicitante}}",
    "value": "{{exame-id-lab}}"
}

O identificador do solicitante, representado acima por {{lab-identificador}}, é fornecido pela RNDS quando o pedido de solicitação de acesso à RNDS é aprovado. Consulteidentificador do solicitante para detalhes.

O identificador do resultado de exame, por outro lado, é um identificador criado pelo laboratório para unicamente identificar o resultado em questão. Quaisquer dois resultados produzidos pelo laboratório devem, necessariamente, possuir identificadores distintos.

O laboratório pode optar por criar identificadores sequenciais, por exemplo, "1", "2", e assim por diante. Ou ainda, "2020-09-04-0001", "2020-09-04-0002" e assim sucessivamente, para resultados produzidos em um determinado dia.

Também pode gerar um identificador universalmente único (Universally Unique IDentifier) ou UUID. Veja como podem ser gerados em Java e JavaScript, por exemplo.

De posse tanto do identificador do solicitante, por exemplo, "99", quanto do identificador de um resultado de exame a ser enviado para a RNDS, digamos "04/09/2020-cdYQj", o trecho do JSON correspondente à propriedade identifier do Bundle a ser enviado para a RNDS, seria

"identifier": {
    "system": "http://www.saude.gov.br/fhir/r4/NamingSystem/BRRNDS-99",
    "value": "04/09/2020-cdYQj"
}

Em consequência, o "esqueleto" JSON pode ser reescrito, considerando o preenchimento do identifier, conforme abaixo:

{
   "resourceType":"Bundle",
   "type":"document",
   "timestamp":"2020-03-20T00:00:00-03:00",
   "meta": {
      "lastUpdated": "2020-03-20T00:00:00-03:00"
   },
   "identifier": {
      "system": "http://www.saude.gov.br/fhir/r4/NamingSystem/BRRNDS-99",
      "value": "04/09/2020-cdYQj"
   },
   "entry":[
      { ... Resultado de Exame Laboratorial ... },
      { ... Diagnóstico em Laboratório Clínico ... },
      { ... Amostra Biológica ... }
    ]
}

Bundle (entry)

Um Bundle é empregado para reunir recursos FHIR, e entry, destacada abaixo, é a propriedade onde os recursos devem ser fornecidos, observe que é um array. No caso em questão, este array deve possuir três entradas:

"entry":[
   { ... Resultado de Exame Laboratorial ... },
   { ... Diagnóstico em Laboratório Clínico ... },
   { ... Amostra Biológica ... }
 ]

Estas três entradas, respectivamente, referem-se aos seguintes perfis definidos pela RNDS: Resultado de Exame Laboratorial, Diagnóstico em Laboratório Clínico e Amostra Biológica.

Observe que estes recursos são fornecidos em entradas próprias da propriedade entry, ou seja, não estão "aninhadas", apesar da amostra biológica ser empregada pelo diagnóstico que, por sua vez, faz parte do resultado de exame laboratorial.

A "conexão" entre recursos é realizada por meio de referências, que são amplamente empregadas quando se uso o padrão FHIR.

Referências entre recursos

O FHIR faz uso extensivo do conceito de referência. Ou seja, muitos dos elementos que compõem um recurso são referências para outros recursos. Dito de outra forma, em vez do diagnóstico em laboratório clínico (Observation) ser fornecido "embutido" em um resultado de exame laboratorial (Composition), este último recurso referencia (aponta para) o recurso que é o diagnóstico (Observation).

Em geral, em um conjunto de recursos FHIR há referências entre os recursos, formando uma rede de informação em saúde. Conforme ilustrado abaixo, a rede para um resultado de exame laboratórial é formada por três recursos, entre os quais há duas referências. O recurso Resultado possui uma referência para Diagnóstico que, por sua vez, referencia o recurso Amostra.

img

Convém reiterar por meio de mais um exemplo. A amostra biológica (Specimen) é parte de um diagnóstico (Observation), contudo, esta parte (Specimen) é fornecida em sua própria entrada em entry, e referenciada pelo diagnóstico (Observation) que a utiliza.

A propriedade entry de um Bundle é fornecida no trecho abaixo para ressaltar a localização e compreensão do emprego de referências entre recursos FHIR. Cada entrada do array possui o seu endereço ou identificador único definido pela propriedade fullUrl, e o recurso propriamente dito (resource), apenas parcialmente fornecido. Cada recurso possui o seu próprio resourceType e, portanto, sabe-se que os três recursos fornecidos no Bundle são um Composition, um Observation e, por fim, um Specimen. Adicionalmente, a primeira entrada do array, recurso Composition, referencia a segunda entrada, dado que a propriedade reference indica o fullUrl da segunda entrada e, de forma similar, esta segunda entrada referencia a terceira, que não possui referência para outro recurso.

"entry": [
   {
      "fullUrl": "urn:uuid:transient-0",
      "resource": {
        "resourceType": "Composition",
        ... "reference": "urn:uuid:transient-1" ...
   },
   {
      "fullUrl": "urn:uuid:transient-1",
      "resource": {
        "resourceType": "Observation",
         ... "reference": "urn:uuid:transient-2" ...
      }
   },
   {
      "fullUrl": "urn:uuid:transient-2",
      "resource": {
        "resourceType": "Specimen"
        ... outras propriedades (mas não há 'reference')...
      }
   }
]

Observe novamente, no trecho acima, como é estabelecida a referência entre recursos. Na segunda entrada do array, Observation, há uma referência (reference) para a terceira entrada cujo identificador é "urn:uuid:transient-2".

Tendo em vista que os recursos que definem um resultado de exame laboratorial foram identificados (Resultado de Exame Laboratorial, Diagnóstico em Laboratório Clínico e Amostra Biológica), e que cada um deles é fornecido em entrada própria na propriedade entry (conforme ilustrado acima), e que a ligação entre eles é estabelecida por meio de referências, é preciso prosseguir e preencher cada um destes recursos. Novamente, o JSON completo está disponível aqui.

Resultado de Exame Laboratorial (recurso)

Um resultado de exame no Brasil é definido pela RNDS por meio do perfil Resultado de Exame Laboratorial. Este perfil é uma personalização do recurso Composition. Conforme o perfil, um resultado é caracterizado por várias propriedades, cada uma delas comentada abaixo.

status. Identifica um dos valores do Estado da Observação. São dois valores possíveis: "final" e "entered-in-error". Neste caso, o valor correto é "final", para indicar que o documento está concluído. A representação JSON correspondente é fornecida abaixo:

"status": "final"

type. Identifica o tipo do documento por meio da propriedade coding, que é um array, neste caso, de uma entrada apenas e obrigatória. O objeto correspondente a tal entrada possui duas propriedades, system e code. A primeira define o conjunto de valores possíveis, neste caso, o Tipo de Documento. A segunda, um dos valores possíveis. Dentre eles há "REL", que representa "Resultado de Exame(s) Laboratorial(is)". Em consequência, esta propriedade é definida conforme abaixo:

"type": {
   "coding": [
      {
        "system": "http://www.saude.gov.br/fhir/r4/CodeSystem/BRTipoDocumento",
        "code": "REL"
      }
   ]
},

subject. O indivíduo ao qual está associado o resultado de exame. A identificação é fornecida pelo objeto identifier, que possui duas propriedades, system e value. A primeira, system, possui um valor fixo. A segunda, value, é utilizada para fornecer o CNS (Cartão Nacional de Saúde) do indivíduo. Abaixo segue a representação desta propriedade na qual, em vez do CNS de um indivíduo, é fornecida a sequência "{{individuo-cns}}".

"subject": {
    "identifier": {
        "system": "http://www.saude.gov.br/fhir/r4/StructureDefinition/BRIndividuo-1.0",
        "value": "{{individuo-cns}}"
    }
},

date. Data e hora em que o documento foi gerado, por exemplo:

"date" : "2020-03-20T00:00:00-03:00"

author. Identifica a pessoa física (profissional liberal) ou a pessoa jurídica responsável por gerar o documento. A estrutura deste objeto é similar àquela de subject, fornecida acima. A sugestão é fornecer o estabelecimento de saúde e, em consequência, a definição correspondente é fornecida abaixo, onde a sequência "{{lab-cnes}}" deve ser substituída pelo CNES do estabelecimento em questão.

"author":[
   {
      "identifier":{
         "system":"http://www.saude.gov.br/fhir/r4/StructureDefinition/BREstabelecimentoSaude-1.0",
         "value":"{{lab-cnes}}"
      }
   }
],

title. O título do documento é o valor fixo "Resultado de Exame Laboratorial".

"title": "Resultado de Exame Laboratorial"

section. Define as seções empregadas pelo resultado (documento). Neste caso há uma única seção na qual é registrado o Diagnóstico em Laboratório Clínico. Ou seja, a única seção é um recurso FHIR, um Observation e, para ser ainda mais preciso, o perfil definido pela RNDS para registrar o diagnóstico de um laboratório clínico. A indicação da entrada do Bundle que contém o diagnóstico é fornecida abaixo:

"section": [
    {
        "entry": [
            {
                "reference": "urn:uuid:transient-1"
            }
        ]
    }
]

Diagnóstico em Laboratório Clínico (recurso)

O perfil Diagnóstico em Laboratório Clínico detalha um exame ou teste realizado em laboratório com finalidade diagnóstica ou investigativa. Este perfil é uma personalização do recurso Observation. As propriedades são definidas abaixo.

status. Define o Estado da Observação. São dois valores possíveis: "final" e "entered-in-error". Neste caso, o valor correto é "final", para indicar que o diagnóstio está concluído. A representação JSON correspondente é fornecida abaixo:

"status": "final"

category. Classifica o exame ou teste utilizando umSubgrupo da Tabela SUS. Se o diagnóstico é por teste rápido, então o código correspondente é "0214". Ou seja, a propriedade category para "Diagnóstico por teste rápido" é definida conforme abaixo:

"category": [
    {
      "coding": [
       {
         "system": "http://www.saude.gov.br/fhir/r4/CodeSystem/BRSubgrupoTabelaSUS",
         "code": "0214"
       }
      ]
    }
],

code. Identifica o exame ou teste. Os valores são obtidos de códigos de Nome do Exame, que é formada pela união dos valores fornecidos na tabela Exames LOINC e códigos da tabela Exames do GAL. O trecho abaixo ilustra um exame identificado pelo código LOINC correspondente, neste caso, "94507-1", que designa "SARS Coronavírus 2, [dosagem de] anticorpo IgG em soro ou plasma por imunoensaio".

"code": {
    "coding": [
        {
            "system": "http://www.saude.gov.br/fhir/r4/CodeSystem/BRNomeExameLOINC",
            "code": "94507-1"
        }
    ]
},

subject. Identifica o indivíduo associado ao exame ou teste. O valor é o mesmo daquele fornecido anteriormente, para o Diagnóstico em Laboratório Clínico. Em consequência, o trecho JSON correspondente, também com o mesmo propósito de não citar explicitamente um indivíduo, substitui o código CNS do indivíduo por "{{individuo-cns}}".

"subject": {
    "identifier": {
        "system": "http://www.saude.gov.br/fhir/r4/StructureDefinition/BRIndividuo-1.0",
        "value": "{{individuo-cns}}"
    }
},

issued. Data/hora em que o resultado foi liberado. Este instante pode ser diferente daquele em que o resultado é produzido e também diferente do instante em que o Bundle foi produzido. Um exemplo é fornecido abaixo:

"issued": "2020-09-10T10:49:10-03:00"

performer. Identifica o profissional e/ou estabelecimento de saúde responsável pelo resultado do exame. Abaixo a sequência {{individuo-cns}} deve ser substituída pelo CNS do profissional responsável pelo resultado (laudo).

"performer": [
    {
        "identifier": {
            "system": "http://www.saude.gov.br/fhir/r4/StructureDefinition/BRPessoaJuridicaProfissionalLiberal-1.0",
            "value": "{{individuo-cns}}"
        }
    }
],

O resultado propriamente dito de um exame é fornecido por apenas uma de duas propriedades possíveis. Se o resultado é quantitativo, então a propriedade que registra o resultado é valueQuantity. Se o resultado, por outro lado, é qualitativo, então a propriedade empregada é valueCodeableConcept.

valueQuantity. Use esta propriedade quando o valor do resultado é quantitativo (Quantity).

valueCodeableConcept. Use esta propriedade quando o valor do resultado é qualitativo (CodeableConcept).

No trecho JSON abaixo o resultado é qualitativo e o código obtido da tabela Resultado qualitativo do Exame, na qual 1 representa "Detectável", 2 representa "Não detectável" e 3 representa "Inconclusivo".

"valueCodeableConcept": {
    "coding": [
        {
            "system": "http://www.saude.gov.br/fhir/r4/CodeSystem/BRResultadoQualitativoExame",
            "code": "3"
        }
    ]
},

interpretation. Interpretação qualitativa de um resultado quantitativo. Propriedade opcional e particularmente útil quando se deseja esclarecer o resultado quantitativo do exame.

note. Comentários sobre os resultados dos exames. Propriedade também opcional. Várias anotações, conforme ilustrado abaixo, podem ser fornecidas.

"note": [ { "text": "anotação 1" }, { "text": "anotação 2" } ]

method. O método empregado na realização do exame. Este objeto possui uma única propriedade, text. Abaixo segue um trecho JSON correspondente:

"method": {
    "text": "Imunocromatográfico"
}

referenceRange. De forma análoga à method (acima), para o perfil em questão, esta propriedade (array) é definida por um único objeto de uma única propriedade, text, conforme ilustra o trecho abaixo.

"referenceRange":
   [
       {
           "text": "(1) Detectável = presença de anticorpos; (2) Não detectável = ausência de anticorpos"
       }
   ]

specimen. Estabelece referência para o recurso Specimen. Este recurso identifica a amostra empregada na realização do exame. Neste caso específico é uma referência para o perfil Amostra Biológica.

Em tempo, a propriedade specimen é a última do segundo recurso fornecido no Bundle e que, em particular, referencia o terceiro recurso, conforme ilustrado abaixo.

"specimen": {
    "reference": "urn:uuid:transient-2"
}

Amostra Biológica (recurso)

Amostra Biológica é um perfil de Specimen. Este perfil identifica a amostra de origem humana ou animal usada em investigações biológicas/laboratoriais para fins diagnósticos.

Neste perfil, a única propriedade é type, que identifica o Tipo de Amostra de Exame. Este tipo pode vir de duas tabelas (code systems) distintas. Uma delas é o Tipo de Amostra Biológica que, dentre os seus códigos se encontra "SGHEM" para designar "sangue". Ou seja, se a amostra biológica empregada pelo laboratório foi sangue, então o trecho JSON correspondente é fornecido abaixo:

"type": {
    "coding": [
        {
            "system": "http://www.saude.gov.br/fhir/r4/CodeSystem/BRTipoAmostraGAL",
            "code": "SGHEM"
        }
    ]
}

Embora a única propriedade do perfil seja type, ilustrado acima, todo recurso tem a propriedade meta, assim como resourceType. Tendo em vista que o recurso em questão é uma das entradas de um Bundle, toda a entrada é exibida abaixo:

{
  "fullUrl": "urn:uuid:transient-2",
  "resource": {
    "resourceType": "Specimen",
    "meta": {
      "profile": [
        "http://www.saude.gov.br/fhir/r4/StructureDefinition/BRAmostraBiologica-1.0"
      ]
    },
    "type": {
      "coding": [
        {
          "system": "http://www.saude.gov.br/fhir/r4/CodeSystem/BRTipoAmostraGAL",
          "code": "SGHEM"
        }
      ]
    }
  }
}
Last updated on