Solicitação de serviço

A solicitação de serviço é o pedido de que alguma coisa seja feita para o paciente. Na plataforma isso são três coisas diferentes, e todas saem como ServiceRequest:

O que éEscrita
Pedido de examenão há
Encaminhamento para outra especialidadenão há
Conduta de sugestão terapêuticasim — é a única

Reconhecer qual é qual se faz pelo system do identificador Nilo, e só por ele — veja Como distinguir as três origens.

O intent decide tudo na escrita, e o valor que funciona não é o natural.intent: proposal tem destino: ele grava uma conduta. Qualquer outro valor — inclusive order, que é o que a leitura devolve nos pedidos de exame — não é gravável, e a chamada falha com erro inesperado do servidor (500), sem OperationOutcome.

Ou seja: você não pode reenviar um pedido de exame lido por esta API. Não há caminho de escrita para pedido de exame nem para encaminhamento.

Como distinguir as três origens

O intent separa a conduta das outras duas. Para separar pedido de exame de encaminhamento, olhe o system do identificador Nilo:

Origemintentsystem do identificador NiloCampos exclusivos
Pedido de exameorder…/NamingSystem/hippocrates-api--exam-requestcode, category, orderDetail, basedOn, supportingInfo
Encaminhamentoorder…/NamingSystem/hippocrates-api--patient-referralperformerType, reasonCode, authoredOn, locationReference
Condutaproposal…/NamingSystem/care-api--conduct-v2

Só a conduta pode carregar uma chave do seu sistema, porque é a única que você grava. As outras duas trazem apenas o identificador Nilo.

Pedido de exame

É o exame solicitado numa receita.

CampoSempre presenteO que significaNo Nilo Care
identifiersimIdentificador Nilo do pedido
statussimSituação da receita — veja abaixo
intentsimConstante order
category[0]simConstante TUSS-50 de procedimento diagnóstico
codenãoO exame, num código TUSS-63o nome do exame no card do pedido
orderDetail[]nãoOs CIDs que justificam o pedido, um por itemCID — a tela mostra só o primeiro
subjectsimO paciente
requestersimO profissional que pediu
encountersimO atendimento da receita
basedOn[0]simA receita de origem
supportingInfo[]nãoAponta para o documento com a URL do PDF do pedido

O status vem da receita inteira, não deste exame:

ValorSituação da receita
draftPendente ou em emissão
completedEmitida
entered-in-errorA emissão falhou
unknownReceita apagada

Uma receita com três exames produz três pedidos, todos com o mesmo status. Ele não diz se o exame foi realizado — esse dado não existe nesta API.

E o status do pedido de exame pode ficar para trás. Ele é fotografado quando o pedido muda, não quando a receita é emitida: um pedido pode continuar draft numa receita já emitida. O encaminhamento não tem esse problema — nele a mudança de situação da receita ressincroniza o recurso.

Se você precisa acompanhar a emissão, releia por _lastUpdated em vez de confiar no status que veio.

encounter e basedOn vêm sem o campo reference — só com identifier e type. Para buscar por eles, use encounter:identifier e based-on:identifier; a forma sem modificador não encontra nada.

O documento apontado por supportingInfo[0] carrega o mesmo identificador do pedido de exame — então dá para buscá-lo direto por identifier, sem seguir a referência. A URL do arquivo está em content[0].attachment.url.

Esse recurso não tem página neste guia, e a URL que ele guarda é um caminho de armazenamento, não necessariamente um link de download direto — o mesmo comportamento descrito em Arquivo do paciente.

Response
1{
2 "resourceType": "Bundle",
3 "type": "searchset",
4 "entry": [
5 {
6 "fullUrl": "https://landing-zone-api.nilo.services/fhir/resources/ServiceRequest/2b8e4f19-a075-4c63-9d81-5e06f3a2c748",
7 "resource": {
8 "resourceType": "ServiceRequest",
9 "identifier": [
10 {
11 "system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/hippocrates-api--exam-request",
12 "value": "40218",
13 "use": "usual"
14 }
15 ],
16 "status": "completed",
17 "intent": "order",
18 "subject": {
19 "identifier": {
20 "system": "https://www.acmesaude.com.br/integracao/paciente/",
21 "value": "507823709",
22 "use": "usual"
23 },
24 "reference": "Patient/ba200cfa-dae0-46cf-81a0-008e3f7414b4",
25 "type": "Patient"
26 },
27 "id": "2b8e4f19-a075-4c63-9d81-5e06f3a2c748",
28 "meta": {
29 "lastUpdated": "2026-04-16T18:22:41.330000Z",
30 "versionId": "MTc4NjAyMTQ1MjkwNTAwMDM2Nw"
31 },
32 "encounter": {
33 "identifier": {
34 "system": "https://www.acmesaude.com.br/integracao/atendimento/",
35 "value": "55162",
36 "use": "usual"
37 },
38 "type": "Encounter"
39 },
40 "category": [
41 {
42 "coding": [
43 {
44 "code": "23",
45 "system": "https://fhir.ans.gov.br/CodeSystem/tuss-50"
46 }
47 ]
48 }
49 ],
50 "code": {
51 "coding": [
52 {
53 "code": "40304361",
54 "system": "https://fhir.ans.gov.br/CodeSystem/tuss-63"
55 }
56 ]
57 },
58 "orderDetail": [
59 {
60 "coding": [
61 {
62 "code": "E11",
63 "system": "http://hl7.org/fhir/sid/icd-10"
64 }
65 ]
66 }
67 ],
68 "basedOn": [
69 {
70 "identifier": {
71 "system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/hippocrates-api--prescription",
72 "value": "31002",
73 "use": "usual"
74 },
75 "type": "ServiceRequest"
76 }
77 ],
78 "requester": {
79 "identifier": {
80 "system": "https://www.acmesaude.com.br/integracao/profissional/",
81 "value": "5032932",
82 "use": "usual"
83 },
84 "type": "Practitioner",
85 "reference": "Practitioner/1f30c8b7-45ad-4e62-9c81-73b0e5f24a19"
86 }
87 },
88 "search": {
89 "mode": "match"
90 }
91 }
92 ],
93 "link": []
94}

Encaminhamento

É o encaminhamento do paciente para outra especialidade, registrado num atendimento.

CampoSempre presenteO que significaNo Nilo Care
identifiersimIdentificador Nilo do encaminhamento
statussimSituação da receita — com outro mapa, veja abaixo
intentsimConstante order
authoredOnsimData do encaminhamento
subjectsimO paciente
requestersimO profissional responsável
encountersimO atendimento da receita
performerTypenãoA especialidade de destino, num código CBO— (não é exibida)
reasonCode[]nãoO motivo em texto e o CIDo motivo, sem rótulo; CID
note[]nãoA conduta e a história clínicaHistórico clínico
locationReference[0]simO local de atendimento da receita

O status do encaminhamento usa um mapa diferente do pedido de exame, sobre a mesma situação de receita:

Situação da receitaPedido de exameEncaminhamento
Pendentedrafton-hold
Em emissãodraftdraft
Falhouentered-in-errorentered-in-error
Emitidacompletedactive

Um encaminhamento emitido é active; um pedido de exame emitido é completed. Não trate os dois vocabulários como um só.

Não leia note[] nem reasonCode[] por posição. Nos dois, a ordem é fixa mas os itens são opcionais e só entram se estiverem preenchidos:

  • note[] — conduta primeiro, história clínica depois. Num encaminhamento sem conduta, a história clínica é note[0];
  • reasonCode[] — motivo em texto primeiro, CID depois. Sem motivo, o CID é reasonCode[0].

Não há campo que distinga um do outro dentro de note[]. No reasonCode[] dá para separar: o CID é o item que traz coding.

performerType vem da tradução da especialidade da plataforma para um código CBO, e essa tradução pode não existir: uma especialidade sem correspondência CBO faz o campo não vir, sem erro.

Response
1{
2 "resourceType": "Bundle",
3 "type": "searchset",
4 "entry": [
5 {
6 "fullUrl": "https://landing-zone-api.nilo.services/fhir/resources/ServiceRequest/7c19d503-6b28-4a71-8fe4-90b2a5c31d6f",
7 "resource": {
8 "resourceType": "ServiceRequest",
9 "identifier": [
10 {
11 "system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/hippocrates-api--patient-referral",
12 "value": "9014",
13 "use": "usual"
14 }
15 ],
16 "status": "active",
17 "intent": "order",
18 "subject": {
19 "identifier": {
20 "system": "https://www.acmesaude.com.br/integracao/paciente/",
21 "value": "507823709",
22 "use": "usual"
23 },
24 "reference": "Patient/ba200cfa-dae0-46cf-81a0-008e3f7414b4",
25 "type": "Patient"
26 },
27 "id": "7c19d503-6b28-4a71-8fe4-90b2a5c31d6f",
28 "meta": {
29 "lastUpdated": "2026-04-16T18:25:03.712000Z",
30 "versionId": "MTc4NjAyMTQ1MjkwNTAwMDM5Mg"
31 },
32 "note": [
33 {
34 "text": "Ajustar esquema terapêutico e reavaliar em 30 dias."
35 },
36 {
37 "text": "Paciente em uso de metformina há dois anos."
38 }
39 ],
40 "requester": {
41 "identifier": {
42 "system": "https://www.acmesaude.com.br/integracao/profissional/",
43 "value": "5032932",
44 "use": "usual"
45 },
46 "type": "Practitioner",
47 "reference": "Practitioner/1f30c8b7-45ad-4e62-9c81-73b0e5f24a19"
48 },
49 "authoredOn": "2026-04-16T00:00:00+00:00",
50 "reasonCode": [
51 {
52 "text": "Descompensação glicêmica persistente"
53 },
54 {
55 "coding": [
56 {
57 "code": "E11",
58 "display": "Diabetes mellitus tipo 2",
59 "system": "http://hl7.org/fhir/sid/icd-10"
60 }
61 ],
62 "text": "Diabetes mellitus tipo 2"
63 }
64 ],
65 "performerType": {
66 "coding": [
67 {
68 "code": "225125",
69 "system": "http://www.saude.gov.br/fhir/r4/CodeSystem/BRCBO"
70 }
71 ],
72 "text": "Médico endocrinologista e metabologista"
73 }
74 },
75 "search": {
76 "mode": "match"
77 }
78 }
79 ],
80 "link": []
81}

Conduta

É a conduta de um atendimento cujo desfecho foi sugestão terapêutica. É o único dos três que você pode gravar.

CampoObrigatório na escritaO que significaNo Nilo Care
resourceTypesimConstante ServiceRequest
identifiersimSuas chaves da conduta
intentsimTem de ser proposal
statussimExigido pelo FHIR e descartado. A leitura devolve sempre completed
subject.identifiersimO paciente, pela sua chave ou pelo identificador Nilo dele
note[]simO conteúdo da conduta: cada item é uma linhaCondutas e orientações
encounternãoO atendimento onde pendurar a condutaAtendimento
POST
/fhir/resources/ServiceRequest
1curl -X POST https://landing-zone-api.nilo.services/fhir/resources/ServiceRequest \
2 -H "x-api-key: <apiKey>" \
3 -H "Content-Type: application/json" \
4 -d '{
5 "resourceType": "ServiceRequest",
6 "identifier": [
7 {
8 "system": "https://www.acmesaude.com.br/integracao/conduta/",
9 "value": "C-9001",
10 "use": "usual"
11 }
12 ],
13 "status": "completed",
14 "intent": "proposal",
15 "subject": {
16 "identifier": {
17 "system": "https://www.acmesaude.com.br/integracao/paciente/",
18 "value": "507823709",
19 "use": "usual"
20 },
21 "type": "Patient"
22 },
23 "note": [
24 {
25 "text": "Retorno em 15 dias."
26 },
27 {
28 "text": "Oriento sinais de alarme."
29 }
30 ],
31 "encounter": {
32 "identifier": {
33 "system": "https://www.acmesaude.com.br/integracao/atendimento/",
34 "value": "55162",
35 "use": "usual"
36 },
37 "type": "Encounter"
38 }
39}'

A resposta é o recurso gravado, sem envelope:

Response
1{
2 "resourceType": "ServiceRequest",
3 "identifier": [
4 {
5 "system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/care-api--conduct-v2",
6 "value": "77410",
7 "use": "usual"
8 },
9 {
10 "system": "https://www.acmesaude.com.br/integracao/conduta/",
11 "value": "C-9001",
12 "use": "usual"
13 }
14 ],
15 "status": "completed",
16 "intent": "proposal",
17 "subject": {
18 "identifier": {
19 "system": "https://www.acmesaude.com.br/integracao/paciente/",
20 "value": "507823709",
21 "use": "usual"
22 },
23 "reference": "Patient/ba200cfa-dae0-46cf-81a0-008e3f7414b4",
24 "type": "Patient"
25 },
26 "id": "e5028a71-3c94-4d16-b0a7-62d3f9814c05",
27 "meta": {
28 "lastUpdated": "2026-04-17T09:41:20.118000Z",
29 "versionId": "MTc4NjAyMTQ1MjkwNTAwMDM5NQ"
30 },
31 "note": [
32 {
33 "text": "Retorno em 15 dias."
34 },
35 {
36 "text": "Oriento sinais de alarme."
37 }
38 ],
39 "encounter": {
40 "identifier": {
41 "system": "https://www.acmesaude.com.br/integracao/atendimento/",
42 "value": "55162",
43 "use": "usual"
44 },
45 "type": "Encounter"
46 }
47}

Uma conduta sem encounter cria um atendimento. A plataforma precisa de um atendimento onde pendurar a conduta e, não recebendo um, cria um atendimento já finalizado no prontuário do paciente — visível para a equipe como qualquer outro.

Se você tem o atendimento, mande-o — é o caminho recomendado.

POST
/fhir/resources/ServiceRequest
1curl -X POST https://landing-zone-api.nilo.services/fhir/resources/ServiceRequest \
2 -H "x-api-key: <apiKey>" \
3 -H "Content-Type: application/json" \
4 -d '{
5 "resourceType": "ServiceRequest",
6 "identifier": [
7 {
8 "system": "https://www.acmesaude.com.br/integracao/conduta/",
9 "value": "C-9002",
10 "use": "usual"
11 }
12 ],
13 "status": "completed",
14 "intent": "proposal",
15 "subject": {
16 "identifier": {
17 "system": "https://www.acmesaude.com.br/integracao/paciente/",
18 "value": "507823709",
19 "use": "usual"
20 },
21 "type": "Patient"
22 },
23 "note": [
24 {
25 "text": "Manter dieta e retornar em 30 dias."
26 }
27 ]
28}'

Uma conduta sem note falha — e falha depois de o atendimento ter sido criado. A recusa vem sem classificação de campo, e o atendimento vazio fica no prontuário. Confira que note está preenchido antes de enviar.

O mesmo POST cria e atualiza: reenviando um identifier que já corresponde a uma conduta, o texto dela é reescrito.

O atendimento de uma conduta não muda depois da criação. Numa atualização, o encounter do payload é ignorado e a conduta continua no atendimento onde já estava. Para movê-la, não há caminho por esta API.

Na leitura, a conduta vem com um note por linha; na escrita, os itens que você manda são juntados numa nota só do lado da plataforma. Enviar duas notas e reler devolve duas notas — mas uma nota que contenha uma quebra de linha volta partida em duas.

O encounter que você mandou é preservado no recurso e volta nas leituras seguintes. Uma conduta registrada dentro da plataforma, essa sim, vem sem encounter.

O mesmo vale para qualquer campo que você envie e que a plataforma não produzacode, category, priority, reasonCode. Eles ficam guardados no recurso e voltam nas leituras seguintes, sem nunca terem significado nada para a plataforma. A referência não os declara, mas a API não os recusa. Omita-os.

Response
1{
2 "resourceType": "Bundle",
3 "type": "searchset",
4 "entry": [
5 {
6 "fullUrl": "https://landing-zone-api.nilo.services/fhir/resources/ServiceRequest/e5028a71-3c94-4d16-b0a7-62d3f9814c05",
7 "resource": {
8 "resourceType": "ServiceRequest",
9 "identifier": [
10 {
11 "system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/care-api--conduct-v2",
12 "value": "77410",
13 "use": "usual"
14 },
15 {
16 "system": "https://www.acmesaude.com.br/integracao/conduta/",
17 "value": "C-9001",
18 "use": "usual"
19 }
20 ],
21 "status": "completed",
22 "intent": "proposal",
23 "subject": {
24 "identifier": {
25 "system": "https://www.acmesaude.com.br/integracao/paciente/",
26 "value": "507823709",
27 "use": "usual"
28 },
29 "reference": "Patient/ba200cfa-dae0-46cf-81a0-008e3f7414b4",
30 "type": "Patient"
31 },
32 "id": "e5028a71-3c94-4d16-b0a7-62d3f9814c05",
33 "meta": {
34 "lastUpdated": "2026-04-17T09:41:20.118000Z",
35 "versionId": "MTc4NjAyMTQ1MjkwNTAwMDM5NQ"
36 },
37 "note": [
38 {
39 "text": "Retorno em 15 dias."
40 },
41 {
42 "text": "Oriento sinais de alarme."
43 }
44 ]
45 },
46 "search": {
47 "mode": "match"
48 }
49 }
50 ],
51 "link": []
52}

Pendurar a conduta num atendimento existente pode mudar o recurso que a lê. O tipo de recurso em que a conduta aparece é decidido pelo desfecho do atendimento, não pelo endpoint que você usou: num atendimento de resultado de exame ela vira Procedimento, e num de hipótese diagnóstica vira Condição.

A resposta do seu POST sempre volta como ServiceRequest, mas a próxima sincronização pode reescrevê-la como outro recurso — e aí ela some da busca de ServiceRequest. Só quando a API cria o atendimento é que o desfecho fica garantido como sugestão terapêutica.

A mesma conduta em outros recursos

A conduta que você grava aqui também aparece em action[] da Conduta do atendimento, com o texto inteiro em vez de quebrado por linha — mas não na hora: aquele recurso só é regravado quando o atendimento em si sincroniza.

E é a mesma família de registro que a Condição grava com verificationStatus: provisional. Quando a API cria o atendimento, o que muda entre os dois caminhos é o desfecho que ela dá a ele; quando você informa um encounter, o desfecho é o do atendimento que já existe, e a diferença é só o tipo de recurso que guarda a sua chave.

Não grave a mesma conduta pelos dois caminhos. POST /fhir/resources/Condition com verificationStatus: provisional e POST /fhir/resources/ServiceRequest com intent: proposal gravam registros diferentes, cada um com o seu identificador. Escolha um.

Buscar

GET
/fhir/resources/ServiceRequest
1curl -G https://landing-zone-api.nilo.services/fhir/resources/ServiceRequest \
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 based-on:identifier=https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/hippocrates-api--prescription|31002 \
7 --data-urlencode encounter:identifier=https://www.acmesaude.com.br/integracao/atendimento/|55162 \
8 --data-urlencode identifier=https://www.acmesaude.com.br/integracao/conduta/|C-9001 \
9 -d intent=proposal \
10 --data-urlencode patient=Patient/ba200cfa-dae0-46cf-81a0-008e3f7414b4 \
11 --data-urlencode patient:identifier=https://www.acmesaude.com.br/integracao/paciente/|507823709 \
12 --data-urlencode requester:identifier=https://www.acmesaude.com.br/integracao/profissional/|5032932 \
13 -d status=completed \
14 --data-urlencode subject=Patient/ba200cfa-dae0-46cf-81a0-008e3f7414b4 \
15 --data-urlencode subject:identifier=https://www.acmesaude.com.br/integracao/paciente/|507823709

A resposta é sempre um Bundle do tipo searchset, e a busca mistura as três origens. Filtre por intent para separar a conduta, e pelo system do identificador para separar pedido de exame de encaminhamento.

Busca sem resultados não é erro: volta 200 com um Bundle cujo entry é uma lista vazia.

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

Parâmetros de busca suportados

NomeTipoDescriçãoExpressão
identifiertokenIdentificador da solicitação, em system|valueServiceRequest.identifier
patient:identifier · subject:identifierreferencePaciente, pelo identificador deleServiceRequest.subject.identifier
patient · subjectreferencePaciente, pelo id Nilo FHIR deleServiceRequest.subject
intenttokenorder ou proposalServiceRequest.intent
statustokenSituação, com o vocabulário da origemServiceRequest.status
requester:identifierreferenceProfissional, pelo identificador deleServiceRequest.requester.identifier
encounter:identifierreferenceAtendimento, pelo identificador deleServiceRequest.encounter.identifier
based-on:identifierreferenceReceita de origem do pedido de exame, pelo identificador delaServiceRequest.basedOn.identifier
_lastUpdateddateData da última gravação no store, com os prefixos eq, ge, le

No pedido de exame, encounter e based-on só encontram com o modificador :identifier — as duas referências saem sem o campo reference, e é nele que a forma sem modificador procura.

O subject, esse, vem completo nas três origens: patient e patient:identifier funcionam igualmente.

Os demais parâmetros canônicos do ServiceRequest existem e não encontram nada, porque a plataforma não preenche o campo correspondente: authored (exceto no encaminhamento), body-site, instantiates-canonical, occurrence, performer, priority, replaces, requisition e specimen.

code e category são preenchidos no pedido de exame, mas com coding — então funcionam com o par system|code, não com o nome do exame.

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/ServiceRequest/:id
1curl https://landing-zone-api.nilo.services/fhir/resources/ServiceRequest/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 a solicitação está em resource.

Response
1{
2 "fullUrl": "https://landing-zone-api.nilo.services/fhir/resources/ServiceRequest/2b8e4f19-a075-4c63-9d81-5e06f3a2c748",
3 "resource": {
4 "resourceType": "ServiceRequest",
5 "identifier": [
6 {
7 "system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/hippocrates-api--exam-request",
8 "value": "40218",
9 "use": "usual"
10 }
11 ],
12 "status": "completed",
13 "intent": "order",
14 "subject": {
15 "identifier": {
16 "system": "https://www.acmesaude.com.br/integracao/paciente/",
17 "value": "507823709",
18 "use": "usual"
19 },
20 "reference": "Patient/ba200cfa-dae0-46cf-81a0-008e3f7414b4",
21 "type": "Patient"
22 },
23 "id": "2b8e4f19-a075-4c63-9d81-5e06f3a2c748",
24 "meta": {
25 "lastUpdated": "2026-04-16T18:22:41.330000Z",
26 "versionId": "MTc4NjAyMTQ1MjkwNTAwMDM2Nw"
27 },
28 "code": {
29 "coding": [
30 {
31 "code": "40304361",
32 "system": "https://fhir.ans.gov.br/CodeSystem/tuss-63"
33 }
34 ]
35 }
36 },
37 "search": {
38 "mode": "match"
39 }
40}

Erros

Recusa é 400, e o corpo é um OperationOutcomeexceto quando o intent não é proposal, caso em que a chamada falha com 500 e sem corpo tratável.

codeexpressionMensagemQuando
requiredServiceRequest.identifierField is requiredO payload não tem identifier
business-ruleServiceRequest.identifierUnable to use any of the provided identifiers to match an existing resource, which can lead to duplicates.identifier, mas nenhum utilizável
not-foundServiceRequest.subjectPatient does not existO subject.identifier não resolve para um paciente do seu ambiente — ou o subject veio sem identifier, que sai com a mesma mensagem
invalidServiceRequest.encounterEncounter's patient does not match the resource's patientO atendimento informado é de outro paciente
structureResource has identifier from a Nilo environment that is not the current environment.O payload traz um identificador Nilo gerado em outro ambiente
exceptionTypeError: …A conduta veio sem note
Response
1{
2 "issue": [
3 {
4 "code": "not-found",
5 "details": {
6 "text": "Patient does not exist"
7 },
8 "expression": [
9 "ServiceRequest.subject"
10 ],
11 "severity": "error"
12 }
13 ],
14 "resourceType": "OperationOutcome"
15}

Um POST com intent diferente de proposal não devolve nenhum dos erros acima: a chamada falha com erro inesperado do servidor (500), sem OperationOutcome. Não escreva tratamento em cima desse comportamento — ele não é contrato, e nada é gravado.

Dentro de uma carga em lote o erro é limpo: a entrada é recusada com Resource ServiceRequest not supported.

O que a integração não cobre

  • escrever pedido de exame ou encaminhamento — só a conduta é gravável;
  • se o exame foi realizado, e o resultado dele;
  • a receita que agrupa os pedidos, como recurso próprio;
  • a distinção entre conduta e história clínica dentro de note[] do encaminhamento;
  • o autor e a data da conduta.

Para as condutas de um atendimento reunidas num recurso só, veja Conduta; para as condutas registradas como condição, Condição; para o procedimento em si, Procedimento.