Pular para o conteúdo principal

Atualizar Paciente

Utilize o método WsAcesso_updatePatient para realizar exclusivamente a atualização dos dados cadastrais do paciente no programa PBM.

⚠️ Importante
O método WsAcesso_updatePatient não permite atualizar ou reenviar dados de produto, perguntas dinâmicas vinculadas ao produto ou qualquer regra dependente do cadastro inicial.

Se for necessário alterar:

  • Produto
  • EAN
  • Perguntas dinâmicas relacionadas ao produto
  • Códigos de regra
  • Linhas
  • Qualquer item dependente do cadastro completo

➡️ É obrigatório reenviar todo o fluxo via WsAcesso_registerPatient.
Consulte: Cadastrar Paciente


🔐 Passo 1: Obtenção do Token de Autenticação e Headers

Antes de realizar qualquer consulta, é obrigatório autenticar-se e obter um token JWT válido.
Todos os endpoints deste fluxo utilizam os mesmos headers de autenticação.

👉 Para mais detalhes, consulte: Autenticação e Headers


📋 Passo 2: Consultar Campos do Formulário

Use o método WsAcesso_consultProgramForm para obter os campos obrigatórios e opcionais conforme parâmetros:

Parâmetros

ParâmetroTipoObrigatórioDescriçãoValor
programCodeIntSimCódigo do programa PBM126
originCodeIntSimCódigo da origem de cadastro37

Exemplo de requisição

query {
WsAcesso_consultProgramForm(
args: {
programCode: 126
originCode: 37
}
){
code
message
status
forms {
formType
fields{
optionFields {
fieldCode
value
text
inclusionDate
}
fieldName
valueField
displayName
description
type
format
displayConfiguration
regex
mask
pixelFieldSize
sequence
intialValue
}
dynamicFields {
responseCode
enteredValue
codeQuestion
userProgramCode
questionTypeFlag
codeProductRule
}
}
}
}

Exemplo Retorno Completo

👉 Saiba mais sobre o Exemplo Retorno Consulta Formulário


❓ Passo 3: Consultar Perguntas e Respostas Dinâmicas (opcional)

Caso o programa utilize perguntas e respostas dinâmicas, utilize o método listDynamicsFieldsOrigin.

Parâmetros

ParâmetroTipoObrigatórioDescriçãoValor
programCodeIntSimCódigo do programa PBM126
originCodeIntSimCódigo da origem de cadastro37

Exemplo de requisição

query {
WsAcesso_listDynamicsFieldsOrigin(
args: {
programCode: 126
originCode: 37
}
){
code
message
status
questionnaire {
code
message
status
questionCode
parentQuestionCode
programCode
titleDisplay
multipleChoice
required
displayOrder
tipQuestion
answers {
responseCode
titleDisplay
allowTypedValue
maximumSizeTypedValue
EnteredValue
displayOrder
effectiveDateStart
effectiveDateEnd
}
lineCode
effectiveDateStart
effectiveDateEnd
typeControl
flagQuestionType
nestedQuestion {
parentQuestionCode
parentResponseCode
codeNestedQuestion
}
productName
EAN
}
}
}

Exemplo de retorno

👉 Saiba mais sobre o Exemplo Retorno Perguntas Dinâmicas

📌 Observação sobre perguntas dinâmicas

Os códigos de questionCode e responseCode podem mudar, pois são dinâmicos. Portanto, é obrigatório consultar WsAcesso_listDynamicsFieldsOrigin sempre que necessário.

Exemplo de estrutura de perguntas dinâmicas

questionCodeparentQuestionCodetitleDisplayRespostas
99Responsável Cadastro- 960 – Cuidador - 961 – Paciente- 962 – Responsável Legal
10399Os dados são do paciente?- 963 – Sim - 964 – Não
10499Nome- 965 – Nome (valor digitável, até 100 caracteres)
10599Celular- 966 – Celular (valor digitável, até 100 caracteres)

Exemplo de preenchimento no formulário Paciente

dynamicFields: [
{ codeQuestion: 99, responseCode: 960, questionTypeFlag: 1, enteredValue: "" }
{ codeQuestion: 103, responseCode: 963, questionTypeFlag: 1, enteredValue: "" }
{ codeQuestion: 103, responseCode: 965, questionTypeFlag: 1, enteredValue: "NOME TESTE" }
{ codeQuestion: 103, responseCode: 966, questionTypeFlag: 1, enteredValue: "43991287000" }
]

📝 Passo 4: Enviar Dados para Cadastro

Com todos os dados coletados, envie a mutation WsAcesso_updatePatient.

Parâmetros

ParâmetroTipoObrigatórioDescriçãoValor
programCodeIntSimCódigo do programa PBM126
originCodeIntSimCódigo da origem de cadastro37
cpfStringSimCPF do paciente (somente números)Informado pelo chatbot
formsformsSimLista de formulários a preencherPaciente (Map Input)

🧍‍♂️ Formulário: Paciente

ParâmetroTipoObrigatórioDescriçãoValorDinâmico/E
NomeStringSimNome completo do pacienteInformado pelo chatbotMap Input
DataNascimentoStringSimData de nascimento (DD/MM/YYYY)Informado pelo chatbotMap Input
SexoSelectOpcionalSexo do pacienteM = Masculino, F = Feminino, N = Não informadoEstático
TelefoneCelularStringSimTelefone celular com DDD. Ex: 43991287000Informado pelo chatbotMap Input
TelefoneStringNão ExibeTelefone residencialInformado pelo chatbotMap Input
TelefoneComercialStringNão ExibeTelefone comercialInformado pelo chatbotMap Input
EmailStringSimE-mail do pacienteInformado pelo chatbotMap Input
CEPStringSimCEP do endereçoInformado pelo chatbotMap Input
UFSelectSimEstado brasileiroRetorno Método WsAcesso_selectByZipCodeWsAcesso_selectByZipCode Field: state
CidadeSelectSimCidade (dependente da UF)Retorno Método WsAcesso_selectByZipCodeWsAcesso_selectByZipCode Field: city
BairroStringSimBairroRetorno Método WsAcesso_selectByZipCodeWsAcesso_selectByZipCode Field: neighborhood
EnderecoStringSimEndereço (sem número)Retorno Método WsAcesso_selectByZipCodeWsAcesso_selectByZipCode Field: publicPlace
NumeroIntegerSimNúmero do endereçoInformado pelo chatbotMap Input
ComplementoStringOpcionalComplementoInformado pelo chatbotMap Input
AutorizaContatoTelefoneCheckBoxSimPermite contato por telefoneS = Sim, N = NãoStatic
AutorizaContatoEmailCheckBoxSimPermite contato por e-mailS = Sim, N = NãoStatic
AutorizaContatoSMSCheckBoxSimPermite contato por SMSS = Sim, N = NãoStatic
AutorizaContatoCorreioCheckBoxSimPermite contato por CorreioS = Sim, N = NãoStatic
AutorizaContatoCheckBoxSimPermite contato telefônico geralS = Sim, N = NãoStatic

Exemplo de requisição

mutation {
WsAcesso_updatePatient (
input: {
programCode: 126
updatePatient: {
cpf: "04020428166"
originCode: "37"
forms: [
{
formType: "Paciente"
fields: [
{ name: "Nome", value: "PACIENTE TESTE" }
{ name: "DataNascimento", value: "06/10/1992" }
{ name: "Sexo", value: "M" }
{ name: "TelefoneCelular", value: "43991287000" }
{ name: "Telefone", value: "" }
{ name: "TelefoneComercial", value: "" }
{ name: "Email", value: "emailteste@teste.com" }
{ name: "CEP", value: "86000000" }
{ name: "UF", value: "PR" }
{ name: "Cidade", value: "Londrina" }
{ name: "Bairro", value: "Centro" }
{ name: "Endereco", value: "Rua Exemplo" }
{ name: "Numero", value: "100" }
{ name: "Complemento", value: "" }
{ name: "AutorizaContatoTelefone", value: "S" }
{ name: "AutorizaContatoEmail", value: "S" }
{ name: "AutorizaContatoSMS", value: "S" }
{ name: "AutorizaContatoCorreio", value: "S" }
{ name: "AutorizaContato", value: "S" }
],
dynamicFields: [
{ codeQuestion: 99, responseCode: 960, questionTypeFlag: 1, enteredValue: "" }
{ codeQuestion: 103, responseCode: 963, questionTypeFlag: 1, enteredValue: "" }
{ codeQuestion: 103, responseCode: 965, questionTypeFlag: 1, enteredValue: "NOME TESTE" }
{ codeQuestion: 103, responseCode: 966, questionTypeFlag: 1, enteredValue: "43991287000" }
]
}
]
}
}
){
code
message
status
}
}

Exemplo de retorno

{
"data": {
"updatePatient": {
"code": 0,
"message": "CPF já existe na base. Dados cadastrais atualizados",
"status": "00"
}
}
}

✅ Observações Finais

  • Os campos variam conforme o programa e devem ser validados dinamicamente.
  • Utilize exatamente os nomes de campo (fieldName) retornados nas consultas.
  • Os campos dinâmicos podem incluir respostas obrigatórias ou múltiplas, dependendo do programa.