Especificação técnica para integração SPDATA e MV
Versão | Proprietário | Nota | Data |
---|---|---|---|
1.0 | @Renan Mitsuo Oka | Criação de documento. | 22/04/2021 |
1.1 | @Renan Mitsuo Oka | Alteração do manual | 25/10/2023 |
A Spdata deverá acionar nossa API via Post enviando os parâmetros necessários para criar um atendimento conforme o manual abaixo:
Link do Post url de homologação: http://portal2.softeasy.com.br:8090/api/recebeRequisicaoSpData?solicitacaoExame=application/json&cliente_id=176
Parâmetros a serem passados no json:
{
"acao": "I",
"acomodacao": "",
"bloco": "1234",
"convenio": 1234,
"crmMedico": "1",
"dataNascimento": "15/01/1981",
"exames": [{
"acao": "I",
"codigoExame": "TSH",
"codigoMaterial": "1",
"idLancamentoExame": 489781,
"obsExame": "",
"urgencia": "F"
}],
"idPaciente": 182151,
"idSolicitacao": 100,
"leito": "",
"localAtendimento": 25326661000132,
"nomeDaMae": "MAE DO PACIENTE JOAO DO AMBULATORIO",
"nomeMedico": "NAO INFORMADO",
"nomePaciente": "JOAO DO AMBULATORIO",
"sexo": "Masculino",
"token": "b52c878fe84bd698ac450eeb86bea3a76337f142",
"ufMedico": "",
"unidade": "1"
}
Regra :
O Campo CRM deverá existir no easylab, se não existir será feito um insert com o nome do medico e crmMedico.
O plano e convenio deverá existir no sistema easylab conforme as tag Convenio.
No convenio deverá estar informado o envio e entrega.
O exame deverá estar configurado o de/para no easylab.
O código do material deverá existir no easylab.
Caso retornar 1 = Erro, 0 Sucesso.
No easylab deverá ser criado os de/para dos exames
Criar o de/para dos materiais
De/para do convenio
Deverá ser criado as trigger na base do easylab para integração alterar onde está ilhabela para o nome do laboratorio que será integrado.
CREATE OR REPLACE FUNCTION public.checa_movexa_ilhabela()
RETURNS trigger
LANGUAGE 'plpgsql'
COST 100
VOLATILE NOT LEAKPROOF
AS $BODY$
DECLARE
RETORNO TEXT DEFAULT '' ;
RETNUM NUMERIC(13,0) DEFAULT 0;
DESCCONV TEXT DEFAULT '' ;
CODICONV TEXT DEFAULT '' ;
DATA_NASCPC DATE ;
BPAIBGEPRO TEXT DEFAULT '';
PRONTUARIO_ID_ATU NUMERIC(13,0) DEFAULT 0;
BEGIN
IF (TG_OP = 'UPDATE') THEN
IF TRIM(COALESCE(NEW.STATUSEXM,'')) <> TRIM(COALESCE(OLD.STATUSEXM,'')) THEN
IF TRIM(COALESCE(NEW.STATUSEXM,'')) = 'CF' THEN
UPDATE MOVPAC SET GERA_INTER = 1, DT_HR_EDICAO = cast(to_char(now()::date, 'YYYYMMDD')||cast(CURRENT_TIME as char(8)) as char(16)) WHERE MOVPAC.ID = NEW.MOVPAC_ID;
END IF;
END IF;
END IF;
IF (TG_OP = 'UPDATE') THEN
IF TRIM(COALESCE(NEW.STATUSEXM,'')) <> TRIM(COALESCE(OLD.STATUSEXM,'')) THEN
IF (TRIM(COALESCE(NEW.STATUSEXM,'')) IN ('TR','FM')) AND (TRIM(COALESCE(OLD.STATUSEXM,'')) = 'NC') THEN
NEW.STATUSEXM := 'TR';
END IF;
END IF;
END IF;
IF (TG_OP = 'UPDATE') THEN
IF TRIM(COALESCE(NEW.STATUSEXM,'')) <> TRIM(COALESCE(OLD.STATUSEXM,'')) THEN
IF TRIM(COALESCE(NEW.STATUSEXM,'')) = 'CF' THEN
SELECT INTO RETNUM COALESCE(ENTREGA.GERAINTER,0) FROM MOVPAC LEFT JOIN ENTREGA ON ENTREGA.ID = MOVPAC.ENTREGA_ID WHERE MOVPAC.ID = NEW.MOVPAC_ID;
IF COALESCE(RETNUM,0) = 1 THEN
UPDATE MOVPAC SET GERA_INTER = 1, DT_HR_EDICAO = cast(to_char(now()::date, 'YYYYMMDD')||cast(CURRENT_TIME as char(8)) as char(16)) WHERE MOVPAC.ID = NEW.MOVPAC_ID;
END IF;
END IF;
IF COALESCE(NEW.SPDATA,0) = 1 THEN
IF TRIM(COALESCE(NEW.STATUSEXM,'')) IN ('TR','LA') THEN
NEW.APOIORESU := 0;
END IF;
END IF;
END IF;
END IF;
IF (TG_OP = 'INSERT') AND TRIM(COALESCE(NEW.STATUSEXM,'')) = '' THEN
SELECT INTO RETNUM SOFATURA FROM EXAME WHERE EXAME.ID = NEW.EXAME_ID;
IF COALESCE(RETNUM,0) = 1 THEN
NEW.STATUSEXM = 'SF';
ELSE
NEW.STATUSEXM = 'TR';
--NEW.STATUSEXM = 'FM';
END IF;
END IF;
--IF (TG_OP = 'INSERT') AND COALESCE(NEW.SPDATA,0) = 1 THEN -- INCLUIDO EM 05/01/2023 -- CHAMADO SUP-8059 - ARCADIO
--NEW.MATERIAL_ID := NULL;
--END IF;
IF (TG_OP = 'INSERT') AND COALESCE(NEW.SPDATA,0) = 1 THEN
SELECT INTO RETNUM PRONTUARIO_ID FROM MOVPAC WHERE MOVPAC.ID = NEW.MOVPAC_ID;
NEW.DATAENTRA = CAST(NOW() AS DATE) ;
NEW.DTFATURA = CAST(NOW() AS DATE) ;
NEW.VALCONV = valorexa(NEW.plano_id, NEW.exame_id, 'C');
NEW.VALBRUTO = NEW.VALCONV;
NEW.AMB = valorexa_codamb(NEW.plano_id, NEW.exame_id);
END IF;
RETURN NEW;
END;
$BODY$;
CREATE OR REPLACE TRIGGER checa_movexa_zilhabela_trigger
BEFORE INSERT OR UPDATE
ON public.movexa
FOR EACH ROW
EXECUTE FUNCTION public.checa_movexa_ilhabela();
CREATE OR REPLACE FUNCTION public.checa_movpac_ilhabela()
RETURNS trigger
LANGUAGE 'plpgsql'
COST 100
VOLATILE NOT LEAKPROOF
AS $BODY$
DECLARE
RETORNO TEXT DEFAULT '' ;
RETNUM NUMERIC(13,0) DEFAULT 0;
DESCCONV TEXT DEFAULT '' ;
CODICONV TEXT DEFAULT '' ;
DATA_NASCPC DATE ;
BPAIBGEPRO TEXT DEFAULT '';
BEGIN
IF LENGTH(TRIM(COALESCE(NEW.AMOSTRA,''))) <> 6 THEN
NEW.AMOSTRA = LPAD(CAST(COALESCE(NEW.AMOSTRA,'') as text),6,'0');
END IF;
IF (TG_OP = 'INSERT') AND COALESCE(NEW.SPDATA,0) = 1 THEN
NEW.DATAENTRA = CAST(NOW() AS DATE) ;
NEW.DTFATURA = CAST(NOW() AS DATE) ;
END IF;
RETURN NEW;
END;
$BODY$;
CREATE OR REPLACE TRIGGER checa_movpac_zilhabela_trigger
BEFORE INSERT OR UPDATE
ON public.movpac
FOR EACH ROW
EXECUTE FUNCTION public.checa_movpac_ilhabela();