Especificação técnica para integração SPDATA e MV

Versão

Proprietário

Nota

Data

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();