Conduta

A conduta é o que o profissional orientou ao encerrar o atendimento: o retorno marcado, o exame solicitado, os sinais de alarme explicados ao paciente. É texto de prontuário, escrito à mão pela equipe — na tela do atendimento ela aparece no bloco Condutas e orientações.

No FHIR esse conjunto é o RequestGroup: um recurso por atendimento, reunindo todas as condutas dele. Como a avaliação clínica, ele nasce junto com o atendimento e carrega o identificador do atendimento de origem.

Este recurso é somente leitura. POST /fhir/resources/RequestGroup não é uma operação suportada — veja Cadastrar ou atualizar para o que acontece se você tentar. Para registrar uma conduta por integração, o caminho é a Condição — veja Como registrar uma conduta.

Campos

A coluna No Nilo Care traz o rótulo com que o dado aparece para a equipe; são rótulos, não caminhos de navegação.

Todos os campos são de resposta — nenhum deles é enviado por você.

CampoSempre presenteO que significaNo Nilo Care
resourceTypesimConstante RequestGroup
identifiersimIdentificador Nilo, sempre o do atendimento de origem
statussimConstante active
intentsimConstante order
subjectsimO paciente do atendimento, por um identificador delePaciente
encountersimO atendimento a que as condutas pertencemAtendimento
action[]nãoUma entrada por conduta com texto. Ausente quando não há nenhumaCondutas e orientações
action[].descriptionsim, havendo itemO texto da conduta, inteiroo texto da conduta
action[].resourcesim, havendo itemConstante Clinical conduct
idsimIdentificador Nilo FHIR do recurso, usado na leitura por ID
metasimMetadados da gravação: versão e data da última alteração

Um atendimento sem nenhuma conduta escrita produz o recurso mesmo assim — e nele o campo action não vem. Não é uma lista vazia: a chave some do JSON. Um cliente que faça resource.action.length quebra; trate a ausência do campo como “nenhuma conduta”.

A ausência não significa que o atendimento não existe: significa que ninguém escreveu conduta nele.

Condutas sem texto não entram na lista. Se a equipe abriu uma conduta e não escreveu nada, ela não aparece aqui, nem como item vazio — e um atendimento cujas condutas sejam todas vazias cai no caso acima, sem action.

Na tela, as condutas de um atendimento aparecem concatenadas num campo só, e o editor trabalha sobre a primeira delas. A separação em itens existe aqui e na Condição, não lá: um atendimento que a sua integração gravou com três condutas é visto pela equipe como um texto único.

status e intent são constantes e não informam nada sobre o atendimento nem sobre a conduta. status: active não quer dizer que o atendimento está aberto — quem diz isso é o status do atendimento. E intent: order não distingue tipos de conduta: todas saem iguais.

action[].resource não é uma referência

Ele tem a forma de uma referência FHIR, mas traz apenas display, com o valor constante Clinical conduct — em inglês, e igual em todos os itens. Não tente resolvê-lo, e não o use para classificar a conduta: ele não aponta para recurso nenhum e não carrega informação.

Campos que a Nilo não usa

O RequestGroup canônico tem muito mais do que esta integração produz: instantiatesCanonical, instantiatesUri, basedOn, replaces, groupIdentifier, priority, code, authoredOn, author, reasonCode, reasonReference e note. Dentro de action, também title, textEquivalent, code, documentation, condition, relatedAction, timing, participant, type, groupingBehavior, selectionBehavior, requiredBehavior, precheckBehavior, cardinalityBehavior e as sub-ações. Como esta referência descreve só o que é suportado, nenhum deles aparece no schema — e, como não há escrita, também não há como preenchê-los.

Repare em author: a conduta não traz quem a escreveu. A plataforma guarda esse dado, e ele não é exposto em nenhum campo deste recurso.

Cadastrar ou atualizar

Não existe. Este recurso não tem caminho de escrita nesta API — nem para criar, nem para atualizar, nem para apagar.

Um POST /fhir/resources/RequestGroup não é uma operação suportada e não devolve um erro de validação tratável: a chamada falha com erro inesperado do servidor (500). Não escreva tratamento em cima desse comportamento — ele não é contrato, e nada é gravado de qualquer forma.

Dentro de uma carga em lote o erro é limpo, e igualmente definitivo: a entrada é recusada com Resource RequestGroup not supported.

Como registrar uma conduta

dois caminhos, e os dois gravam uma conduta por chamada, com o conteúdo em note[]:

Cada página tem o exemplo e as regras — inclusive o efeito colateral de criar um atendimento quando você não informa um. Escolha um dos dois: gravar a mesma conduta pelos dois cria registros diferentes.

A conduta que você grava não aparece aqui na hora. Este recurso é produzido a partir do atendimento, e escrever uma conduta não regrava o atendimento. A conduta nova só entra em action[] na próxima vez que o atendimento em si for salvo.

Para ler de volta o que você acabou de gravar, leia a Condição — ela é atualizada na hora. Vale o mesmo para conduta acrescentada, editada ou removida pela equipe no Nilo Care sem tocar no atendimento.

A mesma conduta em dois lugares, com formatos diferentes

Cada conduta aparece duas vezes nesta API, e o texto não vem igual nas duas:

Aqui, em action[].descriptionNo recurso próprio da conduta, em note[]
FormaUm item por conduta, com o texto inteiroUma anotação por linha do texto
Quebras de linhaPreservadas dentro do descriptionViram a divisão entre os itens de note[]
AtualizaçãoSó quando o atendimento é regravadoImediata

Se você processa o texto da conduta, escolha um dos dois e fique com ele. Somar os dois duplica o conteúdo, e compará-los caractere a caractere não funciona — a divisão em linhas é justamente o que difere.

“O recurso próprio da conduta” não é sempre a Condição. Quem decide é o desfecho do atendimento: num atendimento de sugestão terapêutica a conduta sai como pedido de serviço, e num de resultado de exame sai como procedimento. Nos dois casos não existe Condition correspondente, e uma busca de condições por verification-status=provisional não encontra essas condutas.

O RequestGroup, esse, é sempre o mesmo, qualquer que seja o desfecho: uma entrada por conduta com texto, sem distinção de tipo. Se você precisa do inventário completo das condutas de um atendimento, é por aqui — não pela Condição.

Buscar

GET
/fhir/resources/RequestGroup
1curl -G https://landing-zone-api.nilo.services/fhir/resources/RequestGroup \
2 -H "x-api-key: <apiKey>" \
3 -d _count=50 \
4 -d _lastUpdated=eq2013-01-14 \
5 --data-urlencode _page_token=Cjj3YopYuf%2F%2F%2F%2F%2BABd%2BbgE0m...dSANQAFoLCUSM7w9VYUqaEANglLWUugQ%3D \
6 --data-urlencode encounter:identifier=https://www.acmesaude.com.br/integracao/atendimento/|55162 \
7 --data-urlencode identifier=https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/care-api--appointment-v3|55162 \
8 -d intent=order \
9 --data-urlencode patient:identifier=https://www.acmesaude.com.br/integracao/paciente/|507823709 \
10 -d status=active \
11 --data-urlencode subject:identifier=https://www.acmesaude.com.br/integracao/paciente/|507823709

A resposta é sempre um Bundle do tipo searchset:

Response
1{
2 "resourceType": "Bundle",
3 "type": "searchset",
4 "entry": [
5 {
6 "fullUrl": "https://landing-zone-api.nilo.services/fhir/resources/RequestGroup/4e71b8c0-95a3-4d26-8f14-3b072ad9e561",
7 "resource": {
8 "encounter": {
9 "identifier": {
10 "system": "https://www.acmesaude.com.br/integracao/atendimento/",
11 "value": "55162",
12 "use": "usual"
13 },
14 "type": "Encounter"
15 },
16 "identifier": [
17 {
18 "system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/care-api--appointment-v3",
19 "value": "55162",
20 "use": "usual"
21 }
22 ],
23 "intent": "order",
24 "resourceType": "RequestGroup",
25 "status": "active",
26 "subject": {
27 "identifier": {
28 "system": "https://www.acmesaude.com.br/integracao/paciente/",
29 "value": "507823709",
30 "use": "usual"
31 },
32 "type": "Patient"
33 },
34 "action": [
35 {
36 "description": "Retorno em 15 dias.\nOriento sinais de alarme.",
37 "resource": {
38 "display": "Clinical conduct"
39 }
40 },
41 {
42 "description": "Solicitado hemograma completo.",
43 "resource": {
44 "display": "Clinical conduct"
45 }
46 }
47 ],
48 "id": "4e71b8c0-95a3-4d26-8f14-3b072ad9e561",
49 "meta": {
50 "lastUpdated": "2026-04-16T19:32:09.114000Z",
51 "versionId": "MTc4NjAyMTQ1MjkwNTAwMDM2Nw"
52 }
53 },
54 "search": {
55 "mode": "match"
56 }
57 },
58 {
59 "fullUrl": "https://landing-zone-api.nilo.services/fhir/resources/RequestGroup/a9d3f215-70b6-4c81-95e0-2f48c7b1d603",
60 "resource": {
61 "encounter": {
62 "identifier": {
63 "system": "https://www.acmesaude.com.br/integracao/atendimento/",
64 "value": "55163",
65 "use": "usual"
66 },
67 "type": "Encounter"
68 },
69 "identifier": [
70 {
71 "system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/care-api--appointment-v3",
72 "value": "55163",
73 "use": "usual"
74 }
75 ],
76 "intent": "order",
77 "resourceType": "RequestGroup",
78 "status": "active",
79 "subject": {
80 "identifier": {
81 "system": "https://www.acmesaude.com.br/integracao/paciente/",
82 "value": "507823709",
83 "use": "usual"
84 },
85 "type": "Patient"
86 },
87 "id": "a9d3f215-70b6-4c81-95e0-2f48c7b1d603",
88 "meta": {
89 "lastUpdated": "2026-04-17T10:05:41.802000Z",
90 "versionId": "MTc4NjAyMTQ1MjkwNTAwMDM3MA"
91 }
92 },
93 "search": {
94 "mode": "match"
95 }
96 }
97 ],
98 "link": []
99}

Busca sem resultados não é erro: volta 200 com um Bundle cujo entry é uma lista vazia. Trate a ausência de resultados pela lista vazia, não esperando um 404.

Response
1{
2 "resourceType": "Bundle",
3 "type": "searchset",
4 "entry": [],
5 "link": []
6}

Parâmetros de busca suportados

NomeTipoDescriçãoExpressão
identifiertokenIdentificador do recurso, em system|valueRequestGroup.identifier
patient:identifierreferencePaciente, pelo identificador deleRequestGroup.subject.identifier
subject:identifierreferenceO mesmo campo que patient:identifierRequestGroup.subject.identifier
encounter:identifierreferenceAtendimento das condutas, pelo identificador deleRequestGroup.encounter.identifier
statustokenAceito, e inútil: o valor é sempre activeRequestGroup.status
intenttokenAceito, e inútil: o valor é sempre orderRequestGroup.intent
_lastUpdateddateData da última gravação no store, com os prefixos eq, ge, le

encounter:identifier é a busca mais direta desta página: um atendimento tem no máximo um recurso de conduta, e é o mesmo identificador que você já usa para ler o atendimento.

Só a forma :identifier funciona neste recurso. As referências são gravadas sem o campo reference — só com identifier e type —, e a busca por referência sem o modificador procura justamente em reference. Por isso patient=Patient/{id}, subject=… e encounter=Encounter/{id} devolvem Bundle vazio, não erro. É a mesma situação da avaliação clínica.

Qual identificador o subject carrega é decidido referência a referência, não de uma vez por implantação. Na configuração que usa identificadores externos, cada referência sai com o identificador do seu sistema se o recurso apontado tiver um; se não tiver, cai silenciosamente no identificador Nilo. Confira o que veio na resposta antes de montar a busca em volume — vale para subject e para encounter.

O identifier do próprio recurso é a exceção: ele nunca depende da implantação e nunca é o seu. É sempre o identificador Nilo do atendimento de origem, no system …/NamingSystem/care-api--appointment-v3 — o mesmo valor que aparece nos identificadores do atendimento correspondente. Para chegar às condutas a partir da sua própria chave, o caminho é encounter:identifier, não identifier.

Recursos de atendimentos antigos podem trazer também um identificador no system …/NamingSystem/care-api--appointment, sem o -v3. É o mesmo atendimento.

Vários parâmetros canônicos do RequestGroup existem e não encontram nada aqui, porque a plataforma não preenche o campo correspondente: author, authored, code, group-identifier, instantiates-canonical, instantiates-uri, participant e priority.

Não há como buscar pelo texto de uma conduta: action[].description não tem parâmetro de busca no FHIR R4.

A paginação é por _count e _page_token; havendo página seguinte, o Bundle traz a URL pronta em link.

Ler por ID

GET
/fhir/resources/RequestGroup/:id
1curl https://landing-zone-api.nilo.services/fhir/resources/RequestGroup/id \
2 -H "x-api-key: <apiKey>"

Diferente da busca, esta leitura não devolve um Bundle — mas também não devolve o recurso nu. A resposta é um envelope com fullUrl, search e resource, e as condutas estão em resource. Ler action na raiz da resposta não encontra nada.

Response
1{
2 "fullUrl": "https://landing-zone-api.nilo.services/fhir/resources/RequestGroup/4e71b8c0-95a3-4d26-8f14-3b072ad9e561",
3 "resource": {
4 "encounter": {
5 "identifier": {
6 "system": "https://www.acmesaude.com.br/integracao/atendimento/",
7 "value": "55162",
8 "use": "usual"
9 },
10 "type": "Encounter"
11 },
12 "identifier": [
13 {
14 "system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/care-api--appointment-v3",
15 "value": "55162",
16 "use": "usual"
17 }
18 ],
19 "intent": "order",
20 "resourceType": "RequestGroup",
21 "status": "active",
22 "subject": {
23 "identifier": {
24 "system": "https://www.acmesaude.com.br/integracao/paciente/",
25 "value": "507823709",
26 "use": "usual"
27 },
28 "type": "Patient"
29 },
30 "action": [
31 {
32 "description": "Retorno em 15 dias.\nOriento sinais de alarme.",
33 "resource": {
34 "display": "Clinical conduct"
35 }
36 }
37 ],
38 "id": "4e71b8c0-95a3-4d26-8f14-3b072ad9e561",
39 "meta": {
40 "lastUpdated": "2026-04-16T19:32:09.114000Z",
41 "versionId": "MTc4NjAyMTQ1MjkwNTAwMDM2Nw"
42 }
43 },
44 "search": {
45 "mode": "match"
46 }
47}

A leitura por ID responde 404 quando o id não existe — inclusive quando o atendimento de origem foi apagado no Nilo Care. Se você guarda o conteúdo, guarde o conteúdo, não o id.

Quando as condutas ficam disponíveis

As condutas são sincronizadas logo depois do atendimento, mas não no mesmo instante: gravar ou atualizar um atendimento e ler as condutas dele em seguida pode não encontrar nada ainda. Se o seu fluxo é escrever um atendimento e ler as condutas dele, reconsulte em vez de tratar a primeira resposta vazia como definitiva.

A ordem é essa mesma: o atendimento é gravado primeiro e as condutas depois. Se a gravação do atendimento falhar, o recurso de conduta não chega a existir — não há conduta órfã de um atendimento que não foi gravado.

O que a integração não cobre

Não há escrita neste recurso, e três dados que a plataforma guarda não têm campo aqui:

  • quem escreveu cada conduta;
  • quando cada conduta foi escrita — só a data de gravação do recurso inteiro, em meta;
  • a distinção entre os tipos de conduta, que existe na Condição correspondente e some aqui.

Para o atendimento em si, veja Atendimentos; para a entrevista clínica e o exame físico do mesmo atendimento, Avaliação clínica; para os diagnósticos e para a escrita de conduta, Condição.