| Data de elaboração | 31/07/2023 |
| Responsável pelo estudo | Raissa de Sousa Stodulski, Taillon Miguel Gonçalves, Ádelle Camarão Monteiro, Lucas Tavares Viana de Souza |
| Equipe do estudo | Tambakiss |
| Alvo | Perícia Médica |
| Origem | Objetivo estratégico, para identificar o impacto da migração de dados de produção para a nova base. |
| Objetivo | Com a análise do impacto, definir alterações estruturais ou tratamentos a serem realizados a fim melhorar a migração. |
| Documentação correlata (opcional) | |
| Observações |
O sistema de Perícia Médica é o sistema responsável pelo controle, elaboração e compartilhamento de atas e laudos realizados por peritos médicos do CEPEM. Diante da necessidade de realizar a migração de dados de produção para a nova base, foi necessário analisar o impacto que a mesma acarretaria.
Após uma análise realizada, foi levantado as seguintes informações.
Conforme planilha que pode ser acessada via link.
| Novo Perícia | ||||
| Tabela | Campo | Tipo | Nullable? | Valor para inserção |
| Agendamentos | Id | uniqueidentifier | Não | NEWID() |
| Data | datetime2 | Não | AGENDAMENTO.DAT_AGENDAMENTO | |
| UnidadePericialId | uniqueidentifier | Não | JOIN UnidadesPericiais usando AGENDAMENTO.COD_UNIDADE_PERICIONAL | |
| ProfissionalId | uniqueidentifier | Não | JOIN Profissionais usando AGENDAMENTO.COD_PROFISSIONAL | |
| Horario | nvarchar | Não | AGENDAMENTO.HOR_AGENDAMENTO | |
| TipoDeAgendamento | nvarchar | Não | CASE WHEN AGENDAMENTO.IND_TIPO_AGENDAMENTO PRE-Presencial, Online | |
| SeguradoId | uniqueidentifier | Não | JOIN Segurados usando AGENDAMENTO.COD_SEGURADO | |
| TipoDeLicencaId | uniqueidentifier | Não | JOIN TiposDeLicencas usando AGENDAMENTO.COD_TIPO_LICENCA | |
| Observarcao | nvarchar | Sim | AGENDAMENTO.DES_OBSERVACAO | |
| MotivoCanceladoOuDesistir | nvarchar | Sim | AGENDAMENTO.OBS_CANCELAMENTO | |
| Situacao | nvarchar | Não | CASE WHEN AGENDAMENTO.IND_SITUACAO. CAN-Cancelado; AGE-Agendado; DES-Desistente; RLZ-Concluido; PRE-Presente; FLT-Ausente | |
| FinalidadeDaLicencaId | int | Não | CASE WHEN AGENDAMENTO.FINALIDADE_LICENCA. ACO-Acompanhante; OUT-Outros; MAT-Maternidade; TTS-Tratamento de saúde; ADC (inserido na tabela apesar de não estar listado como na lista anteriormente); PSE-Pensão especial; RCH-Redução de carga horária; APO-Aposentadoria; IIR-Isenção IRRF; IDD-Inclusão de dependentes; REA-Readaptação | |
| EntidadeId | uniqueidentifier | Não | Id de registro inserido como «Não informado» | |
| MedicoAssistenteId | uniqueidentifier | Sim | Id de registro inserido como «Não informado» |
| Antigo Perícia | ||||
| Tabela | Campo não utilizado | Nullable? | Valor | Count |
| AGENDAMENTO | NUM_OFICIO | varchar(20) | Sim | 366.105 |
| HOR_CHEGADA | varchar(5) | Sim | ||
| HOR_CANCELAMENTO | varchar(5) | Sim | ||
| DAT_CRIACAO | datetime | Sim | ||
| DAT_ALTERACAO | datetime | Sim | ||
| COD_USUARIO | int | Sim | ||
| IND_TIPO | varchar(3) | Não | ||
| QUESITO_EXTRA | varchar(-1) | Sim | ||
| USUARIO_SAURON | varchar(15) | Sim | ||
Script:
-- Cria campo temporário para controlar ID antigo
ALTER TABLE [dev.periciamedica.sistemas.ro.gov.br].[dbo].Agendamentos
ADD COD_AGENDAMENTO bigint
ALTER TABLE [dev.periciamedica.sistemas.ro.gov.br].[dbo].[Agendamentos]
ALTER COLUMN MotivoCanceladoOuDesistir varchar(500) COLLATE SQL_Latin1_General_CP1_CI_AI NULL
ALTER TABLE [dev.periciamedica.sistemas.ro.gov.br].[dbo].[Agendamentos]
ALTER COLUMN Observarcao varchar(500) COLLATE SQL_Latin1_General_CP1_CI_AI NULL
-- Importação
INSERT INTO [dev.periciamedica.sistemas.ro.gov.br].[dbo].[FinalidadeDasLicencas](Descricao)
VALUES ('ADC')
INSERT INTO [dev.periciamedica.sistemas.ro.gov.br].[dbo].[Entidades](Id, Nome, Cnpj, InscricaoEstadual, Ativo)
VALUES (NEWID(), 'Não identificado', '0', '0', 1)
INSERT INTO [dev.periciamedica.sistemas.ro.gov.br].[dbo].[MedicosAssistentes](Id, Nome, Crm, Uf)
VALUES (NEWID(), 'Não identificado', '0', 'RO')
INSERT INTO [dev.periciamedica.sistemas.ro.gov.br].[dbo].[Leis](Id, Numero, Descricao, DataDaLei, Texto, Ativo)
VALUES (NEWID(), '0', 'Não identificado', GETDATE(), '', 1)
DECLARE @LeiNaoIdentificada uniqueidentifier = (SELECT Id FROM Leis WHERE Descricao = 'Não identificado');
INSERT INTO [dev.periciamedica.sistemas.ro.gov.br].[dbo].[TiposDeLicenca](Id, Descricao, Ativo, LeiId)
VALUES (NEWID(), 'Não identificado', 1, @LeiNaoIdentificada)
INSERT INTO [dev.periciamedica.sistemas.ro.gov.br].[dbo].[DadosPessoais](Id, Cpf, Rg, NomeCompleto, DataDeNascimento)
VALUES (NEWID(), '0', '0', 'Não informado', GETDATE())
INSERT INTO [dev.periciamedica.sistemas.ro.gov.br].[dbo].[Enderecos](Logradouro)
VALUES ('Não informado')
INSERT INTO [dev.periciamedica.sistemas.ro.gov.br].[dbo].[AreasMedicas](Id, Descricao, Ativo)
VALUES (NEWID(), 'Não informado', 1)
DECLARE @DadoPessoalNaoInformado uniqueidentifier = (SELECT Id FROM DadosPessoais WHERE NomeCompleto = 'Não informado');
DECLARE @EnderecoNaoInformado int = (SELECT Id FROM Enderecos WHERE Logradouro = 'Não informado');
DECLARE @AreaMedicaNaoInformada uniqueidentifier = (SELECT Id FROM AreasMedicas WHERE Descricao = 'Não informado');
INSERT INTO [dev.periciamedica.sistemas.ro.gov.br].[dbo].[Profissionais](Id, NumeroDoConselho, Ativo, AreaMedicaId, EnderecoId, DadoPessoalId)
VALUES (NEWID(), 'Não informado', 1, @AreaMedicaNaoInformada, @EnderecoNaoInformado, @DadoPessoalNaoInformado)
DECLARE @FinalidadeDaLicencaId_ReducaoCargaHoraria int = (SELECT Id FROM FinalidadeDasLicencas WHERE Descricao = 'Redução de carga horária');
DECLARE @FinalidadeDaLicencaId_Maternidade int = (SELECT Id FROM FinalidadeDasLicencas WHERE Descricao = 'Maternidade');
DECLARE @FinalidadeDaLicencaId_Readaptacao int = (SELECT Id FROM FinalidadeDasLicencas WHERE Descricao = 'Readaptação');
DECLARE @FinalidadeDaLicencaId_IsencaoIRRF int = (SELECT Id FROM FinalidadeDasLicencas WHERE Descricao = 'Isenção IRRF');
DECLARE @FinalidadeDaLicencaId_InclusaoDependentes int = (SELECT Id FROM FinalidadeDasLicencas WHERE Descricao = 'Inclusão de dependentes');
DECLARE @FinalidadeDaLicencaId_PensaoEspecial int = (SELECT Id FROM FinalidadeDasLicencas WHERE Descricao = 'Pensão especial');
DECLARE @FinalidadeDaLicencaId_Aposentadoria int = (SELECT Id FROM FinalidadeDasLicencas WHERE Descricao = 'Aposentadoria');
DECLARE @FinalidadeDaLicencaId_TratamentoSaude int = (SELECT Id FROM FinalidadeDasLicencas WHERE Descricao = 'Tratamento de saúde');
DECLARE @FinalidadeDaLicencaId_Acompanhante int = (SELECT Id FROM FinalidadeDasLicencas WHERE Descricao = 'Acompanhante');
DECLARE @FinalidadeDaLicencaId_Outros int = (SELECT Id FROM FinalidadeDasLicencas WHERE Descricao = 'Outros');
DECLARE @FinalidadeDaLicencaId_ADC int = (SELECT Id FROM FinalidadeDasLicencas WHERE Descricao = 'ADC');
DECLARE @MedicoAssistenteNaoInformado uniqueidentifier = (SELECT Id FROM MedicosAssistentes WHERE Nome = 'Não identificado');
DECLARE @EntidadeNaoInformado uniqueidentifier = (SELECT Id FROM Entidades WHERE Nome = 'Não identificado');
DECLARE @TipoLicencaNaoInformado uniqueidentifier = (SELECT Id FROM TiposDeLicenca WHERE Descricao = 'Não identificado');
DECLARE @DadoPessoalNaoInformado2 uniqueidentifier = (SELECT Id FROM DadosPessoais WHERE NomeCompleto = 'Não informado');
DECLARE @ProfissionalNaoInformado uniqueidentifier = (SELECT Id FROM Profissionais WHERE DadoPessoalId = @DadoPessoalNaoInformado2);
INSERT INTO [dev.periciamedica.sistemas.ro.gov.br].[dbo].Agendamentos (
Id,
COD_AGENDAMENTO,
UnidadePericialId,
ProfissionalId,
SeguradoId,
TipoDeLicencaId,
FinalidadeDaLicencaId,
EntidadeId,
MedicoAssistenteId,
Data,
Horario,
TipoDeAgendamento,
Observarcao,
MotivoCanceladoOuDesistir,
Situacao)
SELECT
NEWID(), -- Gerar um GUID para ser o novo ID
A.COD_AGENDAMENTO, -- Campo temporário para controlar ID antigo
U.Id,
CASE WHEN P.Id IS NULL THEN @ProfissionalNaoInformado ELSE P.Id END,
S.Id,
CASE WHEN T.Id IS NULL THEN @TipoLicencaNaoInformado ELSE T.Id END,
CASE WHEN A.FINALIDADE_LICENCA = 'ACO' THEN @FinalidadeDaLicencaId_Acompanhante
WHEN A.FINALIDADE_LICENCA = 'OUT' THEN @FinalidadeDaLicencaId_Outros
WHEN A.FINALIDADE_LICENCA = 'MAT' THEN @FinalidadeDaLicencaId_Maternidade
WHEN A.FINALIDADE_LICENCA = 'TTS' THEN @FinalidadeDaLicencaId_TratamentoSaude
WHEN A.FINALIDADE_LICENCA = 'ADC' THEN @FinalidadeDaLicencaId_ADC
WHEN A.FINALIDADE_LICENCA = 'OUT' THEN @FinalidadeDaLicencaId_Outros
WHEN A.FINALIDADE_LICENCA = 'PSE' THEN @FinalidadeDaLicencaId_PensaoEspecial
WHEN A.FINALIDADE_LICENCA = 'RCH' THEN @FinalidadeDaLicencaId_ReducaoCargaHoraria
WHEN A.FINALIDADE_LICENCA = 'APO' THEN @FinalidadeDaLicencaId_Aposentadoria
WHEN A.FINALIDADE_LICENCA = 'IIR' THEN @FinalidadeDaLicencaId_IsencaoIRRF
WHEN A.FINALIDADE_LICENCA = 'IDD' THEN @FinalidadeDaLicencaId_InclusaoDependentes
WHEN A.FINALIDADE_LICENCA = 'REA' THEN @FinalidadeDaLicencaId_Readaptacao END,
@EntidadeNaoInformado,
@MedicoAssistenteNaoInformado,
A.DAT_AGENDAMENTO,
A.HOR_AGENDAMENTO,
CASE WHEN IND_TIPO_AGENDAMENTO = 'PRE' THEN 'Presencial' ELSE 'Online' END,
A.DES_OBSERVACAO,
A.OBS_CANCELAMENTO,
CASE WHEN IND_SITUACAO = 'CAN' THEN 'Cancelado'
WHEN IND_SITUACAO = 'AGE' THEN 'Agendado'
WHEN IND_SITUACAO = 'DES' THEN 'Desistente'
WHEN IND_SITUACAO = 'RLZ' THEN 'Concluido'
WHEN IND_SITUACAO = 'PRE' THEN 'Presente'
WHEN IND_SITUACAO = 'FLT' THEN 'Ausente' END
FROM [dev.periciamedica.prod].[dbo].[AGENDAMENTO] AS A
LEFT JOIN [dev.periciamedica.sistemas.ro.gov.br].[dbo].[UnidadesPericiais] AS U ON A.COD_UNIDADE_PERICIONAL = U.COD_UNIDADE_PERICIONAL
LEFT JOIN [dev.periciamedica.sistemas.ro.gov.br].[dbo].[Profissionais] AS P ON A.COD_PROFISSIONAL = P.COD_PROFISSIONAL
LEFT JOIN [dev.periciamedica.sistemas.ro.gov.br].[dbo].[Segurados] AS S ON A.COD_SEGURADO = S.COD_SEGURADO
LEFT JOIN [dev.periciamedica.sistemas.ro.gov.br].[dbo].[TiposDeLicenca] AS T ON A.COD_TIPO_LICENCA = T.COD_TIPO_LICENCA
-- Reverte alteração no campo
ALTER TABLE [dev.periciamedica.sistemas.ro.gov.br].[dbo].[Agendamentos]
ALTER COLUMN MotivoCanceladoOuDesistir nvarchar(500) COLLATE Latin1_General_CI_AS NULL
ALTER TABLE [dev.periciamedica.sistemas.ro.gov.br].[dbo].[Agendamentos]
ALTER COLUMN Observarcao nvarchar(500) COLLATE Latin1_General_CI_AS NULL
2.3 Alterações necessárias
Após a importação dos agendamentos, foi identificado que não será necessário alterações estruturais e já foi realizado o tratamento/formatação dos dados (que precisaram) na própria instrução.