Analisar o impacto de migração de dados do banco de produção do Perícias para a nova estrutura do banco, considerando a parte de cadastros
Data de elaboração | 29/06/2023 |
---|---|
Responsável pelo estudo |
Raissa de Sousa Stodulski |
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 |
1. Introdução
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.
2. Desenvolvimento
Após uma análise realizada, foi levantado as seguintes informações.
2.1 Estruturas (DE-PARA)
Conforme planilha que pode ser acessada via link.
Novo Perícia | |||||
Tabela | Campo | Tipo | Nullable? | Valor | Tratar no sistema |
Leis
|
Id | uniqueidentifier | Não | GUID | |
Numero | nvarchar(40) | Não | Sem tratamento específico | Somentes números? | |
Descricao | nvarchar(200) | Não | Sem tratamento específico | Tudo em CAPS? | |
Ativo | bit | Não | |||
DataDaLei | datetime2 | Não | |||
Texto | nvarchar(500) | Não | Sem tratamento específico |
Antigo Perícia | |||||
Tabela | Campo | Nullable? | Valor | Tratado? | Count |
LEI
|
COD_LEI | bigint | Não |
27
|
|
NUM_LEI | varchar(20) | Não | Letra e número; Tudo em CAPS | ||
DES_LEI | varchar(100) | Não | Letra e número; Tudo em CAPS | ||
IND_ATIVO | varchar(1) | Não | S-Ativo | ||
DAT_LEI | datetime | Não | |||
TXT_LEI | varchar(-1) | Não | Letra e número; Tudo em CAPS |
Observações sobre a tabela de lei: novo perícias não possui padronização de texto (tudo em CAPS)
Novo Perícia | |||||
Tabela | Campo | Tipo | Nullable? | Valor | Tratar no sistema |
TiposDeLicenca
|
Id | uniqueidentifier | Não | GUID | |
LeiId | uniqueidentifier | Não | |||
Ativo | bit | Não | |||
Descricao | nvarchar | Não | Sem tratamento específico | Tudo em CAPS? |
Antigo Perícia | |||||
Tabela | Campo | Nullable? | Valor | Tratado? | Count |
TIPO_LICENCA
|
COD_TIPO_LICENCA | bigint | Não |
34
|
|
COD_LEI | bigint | Sim | |||
IND_ATIVO | char | Não | S-Ativo | ||
DES_TIPO_LICENCA | varchar(100) | Não | Letra e número; Tudo em CAPS |
Observações sobre a tabela de tipo de licença: nenhuma.
Novo Perícia | |||||
Tabela | Campo | Tipo | Nullable? | Valor | Tratar no sistema |
UnidadesPericiais
|
Id | uniqueidentifier | Não | GUID | |
Nome | nvarchar(200) | Não | Sem tratamento específico | Tudo em CAPS? | |
Ativo | bit | Não | |||
Telefone | nvarchar(-1) | Sim | Sem tratamento específico | ||
Celular | nvarchar(-1) | Sim | Sem tratamento específico | ||
EnderecoId | int | Sim | |||
HorarioDeFuncionamentoId | int | Sim | |||
HorarioPadraoId | int | Sim | |||
Enderecos
|
Id | int | Não | ||
Cep | nvarchar(20) | Sim | Sem tratamento específico | Sem máscara? | |
Municipio | nvarchar(100) | Sim | Sem tratamento específico | ||
Uf | nvarchar(4) | Sim | Sem tratamento específico | ||
Logradouro | nvarchar(100) | Sim | Sem tratamento específico | ||
Numero | nvarchar(20) | Sim | Sem tratamento específico | ||
Bairro | nvarchar(100) | Sim | Sem tratamento específico | ||
Complemento | nvarchar(100) | Sim | Sem tratamento específico | ||
HorariosDeFuncionamento
|
Id | int | Não | ||
HorarioInicial | nvarchar(10) | Não | Formatado hh:mm | ||
HorarioFinal | nvarchar(10) | Não | Formatado hh:mm | ||
Domingo | bit | Não | |||
Segunda | bit | Não | |||
Terca | bit | Não | |||
Quarta | bit | Não | |||
Quinta | bit | Não | |||
Sexta | bit | Não | |||
Sabado | bit | Não | |||
HorariosPadroes
|
Id | int | Não | ||
Duracao | nvarchar(10) | Não | Formatado hh:mm | ||
HorarioInicialManha | nvarchar(10) | Não | Formatado hh:mm | ||
HorarioFinalManha | nvarchar(10) | Não | Formatado hh:mm | ||
HorarioInicialTarde | nvarchar(10) | Não | Formatado hh:mm | ||
HorarioFinalTarde | nvarchar(10) | Sim | Formatado hh:mm |
Antigo Perícia | |||||
Tabela | Campo | Nullable? | Valor | Tratado? | Count |
UNIDADE_PERICIONAL
|
COD_UNIDADE_PERICIONAL | bigint | no |
5
|
|
NOM_UNIDADE_PERICIONAL | varchar(100) | no | Sem tratamento específico | ||
IND_ATIVO | char | no | S-Ativo | ||
NUM_TELEFONE | varchar(20) | yes | Quando preenchido, formatado com DDD | ||
NUM_CELULAR | varchar(20) | yes | Quando preenchido, formatado com DDD | ||
PUXAR VIA SCRIPT (EnderecoId) | |||||
PUXAR VIA SCRIPT (HorarioDeFuncionamentoId) | |||||
PUXAR VIA SCRIPT (HorarioPadraoId) | |||||
GERAR VIA SCRIPT (Id (Endereço)) | |||||
NUM_CEP | varchar(8) | yes | Sem formatação, sem máscara | ||
COD_MUNICIPIO | bigint | yes | |||
COD_UF | bigint | yes | |||
COD_LOGRADOURO | bigint | yes | |||
NUM_NUMERO | varchar(50) | yes | Sem tratamento específico | ||
COD_BAIRRO | bigint | yes | |||
TXT_COMPLEMENTO | varchar(100) | yes | Sem tratamento específico | ||
GERAR VIA SCRIPT | |||||
HOR_INICIO_UNIDADE | varchar(5) | yes | Formatado hh:mm (mas sem o primeiro zero) | ||
HOR_FIM_UNIDADE | varchar(5) | yes | Formatado hh:mm (mas sem o primeiro zero) | ||
IND_DOMINGO | char | yes | S-Sim | ||
IND_SEGUNDA | char | yes | S-Sim | ||
IND_TERCA | char | yes | S-Sim | ||
IND_QUARTA | char | yes | S-Sim | ||
IND_QUINTA | char | yes | S-Sim | ||
IND_SEXTA | char | yes | S-Sim | ||
IND_SABADO | char | yes | S-Sim | ||
GERAR VIA SCRIPT | |||||
DURACAO_CONSULTA | varchar(5) | yes | Formatado hh:mm (mas sem o primeiro zero) | ||
HOR_INICIO_MANHA_PROFISSIONAL | varchar(5) | yes | Formatado hh:mm (mas sem o primeiro zero) | ||
HOR_FIM_MANHA_PROFISSIONAL | varchar(5) | yes | Formatado hh:mm (mas sem o primeiro zero) | ||
HOR_INICIO_TARDE_PROFISSIONAL | varchar(5) | yes | Formatado hh:mm (mas sem o primeiro zero) | ||
HOR_FIM_TARDE_PROFISSIONAL | varchar(5) | yes | Formatado hh:mm (mas sem o primeiro zero) |
Observações sobre a tabela de tipo de licença: os campos de endereço se repetem em outras tabelas (perícia novo), campos de identificador único e chave estrangeiras precisam de ações com script.
Novo Perícia | |||||
Tabela | Campo | Tipo | Nullable? | Valor | Tratar no sistema |
Cargos
|
Id | uniqueidentifier | Não | GUID | |
EntidadeId | uniqueidentifier | Não | |||
Ativo | bit | Não | |||
Codigo | nvarchar(-1) | Sim | Sem tratamento específico | Somentes números? | |
Descricao | nvarchar(-1) | Não | Sem tratamento específico | Tudo em CAPS? |
Antigo Perícia | |||||
Tabela | Campo | Nullable? | Valor | Tratado? | Count |
CARGO
|
ID_CARGO | bigint | Não |
4909
|
|
COD_ENTIDADE | bigint | Não | |||
IND_ATIVO | char | Não | S-Ativo | ||
COD_CARGO | varchar(10) | Sim | Somente números | ||
DES_CARGO | varchar(100) | Não | Sem tratamento específico |
Observações sobre a tabela de Cargos: nenhuma.
Novo Perícia | |||||
Tabela | Campo | Tipo | Nullable? | Valor | Tratar no sistema |
AreasMedicas
|
Id | uniqueidentifier | Não | GUID | |
Descricao | nvarchar(200) | Não | Sem tratamento específico | Tudo em CAPS? | |
Ativo | bit | Não |
Antigo Perícia | |||||
Tabela | Campo | Nullable? | Valor | Tratado? | Count |
AREA_MEDICA
|
COD_AREA_MEDICA | bigint | Não |
3
|
|
DES_AREA_MEDICA | varchar(100) | Não | Sem tratamento específico | ||
IND_ATIVO | varchar(1) | Não | S-Ativo, N-Inativo |
Observações sobre a tabela de Áreas médicas: nenhuma.
Novo Perícia | |||||
Tabela | Campo | Tipo | Nullable? | Valor | Tratar no sistema |
Profissionais
|
Id | uniqueidentifier | Não | GUID | |
EnderecoId | int | Não | |||
DadoPessoalId | uniqueidentifier | Não | GUID | ||
DadosPessoais | NomeCompleto | nvarchar(200) | Não | Sem tratamento específico | Tudo em CAPS? |
Profissionais | Ativo | bit | Não | ||
DadosPessoais
|
Cpf | nvarchar(22) | Não | Sem máscara | |
Rg | nvarchar(20) | Não | Sem tratamento específico | Somentes números? | |
DataDeNascimento | datetime2 | Não | |||
Telefone | nvarchar(22) | Sim | Sem tratamento específico | Somentes números? | |
Celular | nvarchar(22) | Sim | Sem tratamento específico | Somentes números? | |
Profissionais | NumeroDoConselho | nvarchar(20) | Não | Sem tratamento específico | Somente números? |
API Perfil - Sem banco - Via API | |||||
Profissionais | AreaMedicaId | uniqueidentifier | Não | ||
Enderecos
|
Id | int | Não | ||
Cep | nvarchar(20) | Sim | Sem tratamento específico | Sem máscara? | |
Municipio | nvarchar(100) | Sim | Sem tratamento específico | ||
Uf | nvarchar(4) | Sim | Sem tratamento específico | ||
Logradouro | nvarchar(100) | Sim | Sem tratamento específico | ||
Numero | nvarchar(20) | Sim | Sem tratamento específico | ||
Bairro | nvarchar(100) | Sim | Sem tratamento específico | ||
Complemento | nvarchar(100) | Sim | Sem tratamento específico | ||
AgendasDosProfissionais
|
Id | uniqueidentifier | Não | GUID | |
UnidadePericialId | uniqueidentifier | Não | GUID | ||
ProfissionalId | uniqueidentifier | Não | GUID | ||
DiasDaSemanaDasAgendas
|
Id | uniqueidentifier | Não | GUID | |
AgendaDoProfissionalId | uniqueidentifier | Não | GUID | ||
DiaDaSemana | int | Não | enum | ||
HorarioInicialManha | datetime2 | Sim | |||
HorarioFinalManha | datetime2 | Sim | |||
HorarioInicialTarde | datetime2 | Sim | |||
HorarioFinalTarde | datetime2 | Sim |
Antigo Perícia | |||||
Tabela | Campo | Nullable? | Valor | Tratado? | Count |
PROFISSIONAL
(WHERE IND_TIPO_PROFISSIONAL = MED)
|
COD_PROFISSIONAL | bigint | no |
121
(109) |
|
PUXAR VIA SCRIPT (EnderecoId) | |||||
PUXAR VIA SCRIPT (DadoPessoalId) | |||||
NOM_PROFISSIONAL | varchar(100) | no | Maioria em CAPS mas sem tratamento específico | ||
IND_ATIVO | char | no | S-Ativo | ||
NUM_CPF | varchar(11) | no | Somente números | ||
NUM_RG | varchar(14) | no | Somente números | ||
DAT_NASCIMENTO | datetime | yes | |||
NUM_TELEFONE | varchar(20) | yes | Sem máscara | ||
NUM_CELULAR | varchar(20) | yes | Sem máscara | ||
NUM_CONSELHO | varchar(20) | yes | Letra e número; Tudo em CAPS | ||
IND_TIPO_PERFIL | char | yes | MED; NULL | ||
COD_AREA_MEDICA | bigint | yes | |||
GERAR VIA SCRIPT (Id (Endereço)) | |||||
NUM_CEP | char(8) | yes | Sem máscara | ||
COD_MUNICIPIO | bigint | yes | |||
COD_UF | bigint | yes | |||
COD_LOGRADOURO | bigint | yes | |||
NUM_NUMERO | varchar(50) | yes | Sem tratamento específico | ||
COD_BAIRRO | bigint | yes | |||
TXT_COMPLEMENTO | varchar(100) | yes | Sem tratamento específico | ||
PROFISSIONAL_AGENDA
(PROFISSIONAL_UNIDADE_PERICIAL)
|
GERAR VIA SCRIPT (Id (Agenda do profissional)) |
330 (68)
|
|||
COD_UNIDADE_PERICIONAL | bigint | no | PROFISSIONAL_UNIDADE_PERICIAL | ||
COD_PROFISSIONAL | bigint | no | PROFISSIONAL_UNIDADE_PERICIAL | ||
GERAR VIA SCRIPT (Id (Dias da semana))) | |||||
PUXAR VIA SCRIPT (AgendaDoProfissionalId) | |||||
IND_DIA_SEMANA | varchar | yes | |||
HOR_INICIO_MANHA | varchar(5) | yes | Formatado hh:mm (mas sem o primeiro zero) | ||
HOR_FIM_MANHA | varchar(5) | yes | Formatado hh:mm (mas sem o primeiro zero) | ||
HOR_INICIO_TARDE | varchar(5) | yes | Formatado hh:mm (mas sem o primeiro zero) | ||
HOR_FIM_TARDE | varchar(5) | yes | Formatado hh:mm (mas sem o primeiro zero) |
Observações sobre a tabela de Profissional: campos de identificador único e chave estrangeiras precisam de ações com script.
Novo Perícia | |||||
Tabela | Campo | Tipo | Nullable? | Valor | Tratar no sistema |
Lotacoes
|
Id | uniqueidentifier | Não | GUID | |
EntidadeId | uniqueidentifier | Não | |||
Ativo | bit | Não | |||
Nome | nvarchar(100) | Não | Sem tratamento específico | Tudo em CAPS? | |
Codigo | nvarchar(200) | Não | Sem tratamento específico | Somentes números? |
Antigo Perícia | |||||
Tabela | Campo | Nullable? | Valor | Tratado? | Count |
LOTACAO
|
ID_LOTACAO | bigint | no |
103706
|
|
COD_ENTIDADE | bigint | no | |||
IND_ATIVO | char | no | S-Ativo | ||
NOM_LOTACAO | varchar(100) | no | Sem tratamento específico | ||
COD_LOTACAO | varchar(10) | yes | Somente números |
Observações sobre a tabela de Lotação: nenhuma.
Novo Perícia | |||||
Tabela | Campo | Tipo | Nullable? | Valor | Tratar no sistema |
LocaisDeTrabalho
|
Id | uniqueidentifier | Não | GUID | |
EntidadeId | uniqueidentifier | Não | |||
Ativo | bit | Não | |||
Codigo | nvarchar(200) | Não | Sem tratamento específico | Somentes números? | |
Nome | nvarchar(100) | Não | Sem tratamento específico | Tudo em CAPS? |
Antigo Perícia | |||||
Tabela | Campo | Nullable? | Valor | Tratado? | Count |
LOCAL_TRABALHO
|
ID_LOCAL_TRABALHO | bigint | no |
15629
|
|
COD_ENTIDADE | bigint | no | |||
IND_ATIVO | char | no | S-Ativo | ||
COD_LOCAL_TRABALHO | varchar(10) | no | Somente números | ||
NOM_LOCAL_TRABALHO | varchar(100) | no | Letra e número; Tudo em CAPS |
Observações sobre a tabela de Local de trabalho: nenhuma.
Novo Perícia | |||||
Tabela | Campo | Tipo | Nullable? | Valor | Tratar no sistema |
Segurados
|
Id | uniqueidentifier | Não | GUID | |
DadoDeOrigemId | uniqueidentifier | Não | GUID | ||
DadoDoSeguradoId | uniqueidentifier | Não | GUID | ||
EnderecoId | int | Não | |||
ContatoId | uniqueidentifier | Não | GUID | ||
VinculoId | uniqueidentifier | Não | GUID | ||
Nome | nvarchar(200) | Não | Sem tratamento específico | Tudo em CAPS? | |
Ativo | bit | Não | |||
DadosDeOrigem
|
Id | uniqueidentifier | Não | GUID | |
DataDeNascimento | datetime2 | Não | |||
DadosDosSegurados
|
Id | uniqueidentifier | Não | GUID | |
Cpf | nvarchar(28) | Não | Sem tratamento específico | Somente números? | |
Matricula | nvarchar(18) | Não | Sem tratamento específico | Somente números? | |
Pis | nvarchar(22) | Sim | Sem tratamento específico | Somente números? | |
DadosDeOrigem | Sexo | nvarchar(30) | Não | enum | Feminino Masculino NaoIdentificado |
DadosDosSegurados
|
EstadoCivil | nvarchar(20) | Não | enum | Casado Divorciado Solteiro Viuvo |
TipoDePrevidencia | nvarchar(200) | Não | enum | INSS IPERON NaoPossui |
|
GrauDeInstrucao | nvarchar(200) | Não | enum | FundamentalCompleto FundamentalIncompleto MedioCompleto MedioIncompleto PosGraduacaoCompleta PosGraduacaoIncompleta SuperiorCompleto SuperiorIncompleto |
|
DadosDeOrigem
|
TipoSanguineo | nvarchar(4) | Não | enum | A AB B O |
FatorRh | nvarchar(16) | Não | enum | Negativo Positivo |
|
NomeDaMae | nvarchar(200) | Não | Sem tratamento específico | Tudo em CAPS? | |
NomeDoPai | nvarchar(200) | Sim | Sem tratamento específico | Tudo em CAPS? | |
Contatos
|
Telefone | nvarchar(20) | Sim | Sem tratamento específico | Somente números? |
Celular | nvarchar(20) | Sim | Sem tratamento específico | Somente números? | |
nvarchar(200) | Sim | Sem tratamento específico | |||
Vinculos
|
EntidadeId | uniqueidentifier | Sim | GUID | |
LotacaoId | uniqueidentifier | Sim | GUID | ||
CargoId | uniqueidentifier | Sim | GUID | ||
LocalDeTrabalhoId | uniqueidentifier | Sim | GUID | ||
Enderecos
|
Id | int | Não | ||
Cep | nvarchar(20) | Sim | Sem tratamento específico | Sem máscara? | |
Municipio | nvarchar(100) | Sim | Sem tratamento específico | ||
Uf | nvarchar(4) | Sim | Sem tratamento específico | ||
Logradouro | nvarchar(100) | Sim | Sem tratamento específico | ||
Numero | nvarchar(20) | Sim | Sem tratamento específico | ||
Bairro | nvarchar(100) | Sim | Sem tratamento específico | ||
Complemento | nvarchar(100) | Sim | Sem tratamento específico |
Antigo Perícia | |||||
Tabela | Campo | Nullable? | Valor | Tratado? | Count |
SEGURADO
|
COD_SEGURADO | bigint | no |
258879
|
|
PUXAR VIA SCRIPT (DadoDeOrigemId) | |||||
PUXAR VIA SCRIPT (DadoDoSeguradoId) | |||||
PUXAR VIA SCRIPT (EnderecoId) | |||||
PUXAR VIA SCRIPT (ContatoId) | |||||
PUXAR VIA SCRIPT (VinculoId) | |||||
NOM_SEGURADO | varchar(100) | no | Maioria em CAPS mas sem tratamento específico | ||
IND_ATIVO | char | yes | S-Ativo, N-Inativo | ||
GERAR VIA SCRIPT (Id (Dados de origem)) | |||||
DAT_NASCIMENTO | date | yes | |||
GERAR VIA SCRIPT (Id (Dados dos segurados)) | |||||
NUM_CPF | varchar | yes | Somente números | ||
NUM_MATRICULA | int | yes | Somente números | ||
NUM_PIS | varchar | yes | Somente números | ||
IND_SEXO | varchar(3) | yes | FEM, MAS, NULL | ||
IND_ESTADO_CIVIL | char(3) | yes | VIU, SOL, CAS, DIV, NULL | ||
IND_TIPO_PREVIDENCIA | varchar(100) | yes | NULL, NPP, IPERON, INSS | ||
IND_INSTRUCAO | char(3) | yes | FUC, SUC, MEI, NULL, MEC, SUI, FUI, POC | ||
IND_TIPO_SANGUE | char(2) | yes | A, NULL, O, B, AB | ||
IND_FATOR_RH | char | yes | -, NULL, + | ||
NOM_MAE | varchar(100) | yes | Maioria em CAPS mas sem tratamento específico | ||
NOM_PAI | varchar(100) | yes | Maioria em CAPS mas sem tratamento específico | ||
NUM_TELEFONE | char(11) | yes | Somente números | ||
NUM_CELULAR | varchar(11) | yes | Somente números | ||
DES_EMAIL | varchar(100) | yes | |||
COD_ENTIDADE | bigint | no | |||
ID_LOTACAO | bigint | yes | |||
ID_CARGO | bigint | yes | |||
ID_LOCAL_TRABALHO | bigint | yes | |||
GERAR VIA SCRIPT (Id (Endereço)) | |||||
NUM_CEP | varchar(8) | yes | |||
COD_MUNICIPIO | bigint | yes | |||
COD_UF | bigint | yes | |||
COD_LOGRADOURO | bigint | yes | |||
NUM_NUMERO | varchar(10) | yes | |||
COD_BAIRRO | bigint | yes | |||
TXT_COMPLEMENTO | varchar(100) | yes |
Observações sobre a tabela de Segurado: campos de identificador único e chave estrangeiras precisam de ações com script.
Novo Perícia | |||||
Tabela | Campo | Tipo | Nullable? | Valor | Tratar no sistema |
MedicosAssistentes
|
Id | uniqueidentifier | Não | GUID | |
Nome | nvarchar(300) | Não | Sem tratamento específico | Tudo em CAPS? | |
Crm | nvarchar(40) | Não | Sem tratamento específico | Somentes números? | |
Uf | nvarchar(4) | Não | Sem tratamento específico | Tudo em CAPS? |
Antigo Perícia | |||||
Tabela | Campo | Nullable? | Valor | Tratado? | Count |
PROFISSIONAL
(WHERE IND_TIPO_PROFISSIONAL IS NULL)
|
COD_PROFISSIONAL | bigint | no |
12
|
|
NOM_PROFISSIONAL | varchar(100) | no | Maioria em CAPS mas sem tratamento específico | ||
NUM_CONSELHO | varchar(20) | yes | Letra e número; Tudo em CAPS | ||
COD_UF | bigint | yes |
Observações sobre a tabela de Profissional: nenhuma.
2.2 Passo-a-passo para importação
- Importar base de produção para o mesmo servidor que a nova base
- Substituir base origem e destino na instrução abaixo:
/*-----------------------------------------------------------------------------------
Passo 1: Importar Leis
-------------------------------------------------------------------------------------*/
-- Cria campo temporário para controlar ID antigo
ALTER TABLE [BASE_DESTINO].[dbo].[Leis]
ADD COD_LEI bigint
-- Importação
INSERT INTO [BASE_DESTINO].[dbo].[Leis] (
Id,
COD_LEI,
Numero,
Descricao,
Ativo,
DataDaLei,
Texto)
SELECT
NEWID(), -- Gerar um GUID para ser o novo ID
COD_LEI, -- Campo temporário para controlar ID antigo
NUM_LEI,
DES_LEI,
CASE WHEN IND_ATIVO = 'S' THEN 1 ELSE 0 END, -- Converte char em bit
DAT_LEI,
TXT_LEI
FROM [BASE_ORIGEM].[dbo].[LEI]
/*-----------------------------------------------------------------------------------
Passo 2: Importar TiposDeLicenca
-------------------------------------------------------------------------------------*/
-- Cria campos temporários para controlar IDs antigos
ALTER TABLE [BASE_DESTINO].[dbo].[TiposDeLicenca]
ADD COD_TIPO_LICENCA bigint
ALTER TABLE [BASE_DESTINO].[dbo].[TiposDeLicenca]
ADD COD_LEI bigint
-- Importação
INSERT INTO [BASE_DESTINO].[dbo].[TiposDeLicenca] (
Id,
COD_TIPO_LICENCA,
LeiId,
Ativo,
Descricao)
SELECT
NEWID(), -- Gerar um GUID para ser o novo ID
t.COD_TIPO_LICENCA, -- Campo temporário para controlar ID antigo
l.Id,
CASE WHEN t.IND_ATIVO = 'S' THEN 1 ELSE 0 END, -- Converte char em bit
t.DES_TIPO_LICENCA
FROM [BASE_ORIGEM].[dbo].[TIPO_LICENCA] AS t
LEFT JOIN [BASE_DESTINO].[dbo].[Leis] AS l ON t.COD_LEI = l.COD_LEI
/*-----------------------------------------------------------------------------------
Passo 3: Importar UnidadesPericiais [HorariosPadroes]
-------------------------------------------------------------------------------------*/
-- Cria campo temporário para controlar ID antigo
ALTER TABLE [BASE_DESTINO].[dbo].[HorariosPadroes]
ADD COD_UNIDADE_PERICIONAL bigint
-- Importação
INSERT INTO [BASE_DESTINO].[dbo].[HorariosPadroes] (
COD_UNIDADE_PERICIONAL,
Duracao,
HorarioInicialManha,
HorarioFinalManha,
HorarioInicialTarde,
HorarioFinalTarde)
SELECT
COD_UNIDADE_PERICIONAL, -- Campo temporário para controlar ID antigo
CASE WHEN LEN(DURACAO_CONSULTA) = 4 THEN '0'+DURACAO_CONSULTA ELSE DURACAO_CONSULTA END,
CASE WHEN LEN(HOR_INICIO_MANHA_PROFISSIONAL) = 4 THEN '0'+HOR_INICIO_MANHA_PROFISSIONAL ELSE HOR_INICIO_MANHA_PROFISSIONAL END,
CASE WHEN LEN(HOR_FIM_MANHA_PROFISSIONAL) = 4 THEN '0'+HOR_FIM_MANHA_PROFISSIONAL ELSE HOR_FIM_MANHA_PROFISSIONAL END,
CASE WHEN LEN(HOR_INICIO_TARDE_PROFISSIONAL) = 4 THEN '0'+HOR_INICIO_TARDE_PROFISSIONAL ELSE HOR_INICIO_TARDE_PROFISSIONAL END,
CASE WHEN LEN(HOR_FIM_TARDE_PROFISSIONAL) = 4 THEN '0'+HOR_FIM_TARDE_PROFISSIONAL ELSE HOR_FIM_TARDE_PROFISSIONAL END
FROM [BASE_ORIGEM].[dbo].[UNIDADE_PERICIONAL]
/*-----------------------------------------------------------------------------------
Passo 4: Importar UnidadesPericiais [Enderecos]
-------------------------------------------------------------------------------------*/
-- Cria campo temporário para controlar ID antigo
ALTER TABLE [BASE_DESTINO].[dbo].[Enderecos]
ADD COD_UNIDADE_PERICIONAL bigint
-- Importação
INSERT INTO [BASE_DESTINO].[dbo].[Enderecos] (
COD_UNIDADE_PERICIONAL,
Cep,
Municipio,
Uf,
Logradouro,
Numero,
Bairro,
Complemento)
SELECT
U.COD_UNIDADE_PERICIONAL, -- Campo temporário para controlar ID antigo
U.NUM_CEP,
M.NOM_MUNICIPIO,
UF.SGL_UF,
L.NOM_LOGRADOURO,
U.NUM_NUMERO,
B.NOM_BAIRRO,
U.TXT_COMPLEMENTO
FROM [BASE_ORIGEM].[dbo].[UNIDADE_PERICIONAL] AS U
LEFT JOIN [BASE_ORIGEM].[dbo].[MUNICIPIO] AS M ON U.COD_MUNICIPIO = M.COD_MUNICIPIO
LEFT JOIN [BASE_ORIGEM].[dbo].[UF] AS UF ON U.COD_UF = UF.COD_UF
LEFT JOIN [BASE_ORIGEM].[dbo].[LOGRADOURO] AS L ON U.COD_LOGRADOURO = L.COD_LOGRADOURO
LEFT JOIN [BASE_ORIGEM].[dbo].[BAIRRO] AS B ON U.COD_BAIRRO = B.COD_BAIRRO
/*-----------------------------------------------------------------------------------
Passo 5: Importar UnidadesPericiais [HorariosDeFuncionamento]
-------------------------------------------------------------------------------------*/
-- Cria campo temporário para controlar ID antigo
ALTER TABLE [BASE_DESTINO].[dbo].[HorariosDeFuncionamento]
ADD COD_UNIDADE_PERICIONAL bigint
-- Importação
INSERT INTO [BASE_DESTINO].[dbo].[HorariosDeFuncionamento] (
COD_UNIDADE_PERICIONAL,
HorarioInicial,
HorarioFinal,
Domingo,
Segunda,
Terca,
Quarta,
Quinta,
Sexta,
Sabado)
SELECT
COD_UNIDADE_PERICIONAL, -- Campo temporário para controlar ID antigo
CASE WHEN LEN(HOR_INICIO_UNIDADE) = 4 THEN '0'+HOR_INICIO_UNIDADE ELSE HOR_INICIO_UNIDADE END,
CASE WHEN LEN(HOR_FIM_UNIDADE) = 4 THEN '0'+HOR_FIM_UNIDADE ELSE HOR_FIM_UNIDADE END,
CASE WHEN IND_DOMINGO='S' THEN 1 ELSE 0 END,
CASE WHEN IND_SEGUNDA='S' THEN 1 ELSE 0 END,
CASE WHEN IND_TERCA='S' THEN 1 ELSE 0 END,
CASE WHEN IND_QUARTA='S' THEN 1 ELSE 0 END,
CASE WHEN IND_QUINTA='S' THEN 1 ELSE 0 END,
CASE WHEN IND_SEXTA='S' THEN 1 ELSE 0 END,
CASE WHEN IND_SABADO='S' THEN 1 ELSE 0 END
FROM [BASE_ORIGEM].[dbo].[UNIDADE_PERICIONAL]
/*-----------------------------------------------------------------------------------
Passo 6: Importar UnidadesPericiais
-------------------------------------------------------------------------------------*/
-- Cria campo temporário para controlar ID antigo
ALTER TABLE [BASE_DESTINO].[dbo].[UnidadesPericiais]
ADD COD_UNIDADE_PERICIONAL bigint
-- Importação
INSERT INTO [BASE_DESTINO].[dbo].[UnidadesPericiais] (
Id,
COD_UNIDADE_PERICIONAL,
Nome,
Ativo,
Telefone,
Celular,
EnderecoId,
HorarioDeFuncionamentoId,
HorarioPadraoId)
SELECT
NEWID(), -- Gerar um GUID para ser o novo ID
U.COD_UNIDADE_PERICIONAL, -- Campo temporário para controlar ID antigo
U.NOM_UNIDADE_PERICIONAL,
CASE WHEN U.IND_ATIVO = 'S' THEN 1 ELSE 0 END, -- Converte char em bit
U.NUM_TELEFONE,
U.NUM_CELULAR,
E.Id,--EnderecoId,
HF.Id,--HorarioDeFuncionamentoId,
HP.Id--HorarioPadraoId
FROM [BASE_ORIGEM].[dbo].[UNIDADE_PERICIONAL] AS U
LEFT JOIN [BASE_DESTINO].[dbo].[Enderecos] AS E ON U.COD_UNIDADE_PERICIONAL = E.COD_UNIDADE_PERICIONAL
LEFT JOIN [BASE_DESTINO].[dbo].[HorariosDeFuncionamento] AS HF ON U.COD_UNIDADE_PERICIONAL = HF.COD_UNIDADE_PERICIONAL
LEFT JOIN [BASE_DESTINO].[dbo].[HorariosPadroes] AS HP ON U.COD_UNIDADE_PERICIONAL = HP.COD_UNIDADE_PERICIONAL
/*-----------------------------------------------------------------------------------
Passo 7: Importar Entidades [Enderecos]
-------------------------------------------------------------------------------------*/
-- Cria campo temporário para controlar ID antigo
ALTER TABLE [BASE_DESTINO].[dbo].[Enderecos]
ADD COD_ENTIDADE bigint
-- Importação
INSERT INTO [BASE_DESTINO].[dbo].[Enderecos] (
COD_ENTIDADE,
Cep,
Municipio,
Uf,
Logradouro,
Numero,
Bairro,
Complemento)
SELECT
E.COD_ENTIDADE, -- Campo temporário para controlar ID antigo
E.NUM_CEP,
M.NOM_MUNICIPIO,
UF.SGL_UF,
L.NOM_LOGRADOURO,
E.NUM_NUMERO,
B.NOM_BAIRRO,
E.TXT_COMPLEMENTO
FROM [BASE_ORIGEM].[dbo].[ENTIDADE] AS E
LEFT JOIN [BASE_ORIGEM].[dbo].[MUNICIPIO] AS M ON E.COD_MUNICIPIO = M.COD_MUNICIPIO
LEFT JOIN [BASE_ORIGEM].[dbo].[UF] AS UF ON E.COD_UF = UF.COD_UF
LEFT JOIN [BASE_ORIGEM].[dbo].[LOGRADOURO] AS L ON E.COD_LOGRADOURO = L.COD_LOGRADOURO
LEFT JOIN [BASE_ORIGEM].[dbo].[BAIRRO] AS B ON E.COD_BAIRRO = B.COD_BAIRRO
/*-----------------------------------------------------------------------------------
Passo 8: Importar Entidades
-------------------------------------------------------------------------------------*/
-- Cria campo temporário para controlar ID antigo
ALTER TABLE [BASE_DESTINO].[dbo].[Entidades]
ADD COD_ENTIDADE bigint
-- Importação
INSERT INTO [BASE_DESTINO].[dbo].[Entidades] (
Id,
COD_ENTIDADE,
Nome,
Ativo,
Cnpj,
InscricaoEstadual,
EnderecoId)
SELECT
NEWID(), -- Gerar um GUID para ser o novo ID
E.COD_ENTIDADE, -- Campo temporário para controlar ID antigo
NOM_ENTIDADE,
CASE WHEN IND_ATIVO = 'S' THEN 1 ELSE 0 END, -- Converte char em bit
NUM_CNPJ,
NUM_INSCRICAO_ESTADUAL,
ED.Id--EnderecoId
FROM [BASE_ORIGEM].[dbo].[ENTIDADE] AS E
LEFT JOIN [BASE_DESTINO].[dbo].[Enderecos] AS ED ON E.COD_ENTIDADE = ED.COD_ENTIDADE
/*-----------------------------------------------------------------------------------
Passo 9: Importar Cargos
-------------------------------------------------------------------------------------*/
-- Cria campo temporário para controlar ID antigo
ALTER TABLE [BASE_DESTINO].[dbo].[Cargos]
ADD ID_CARGO bigint
-- Importação
INSERT INTO [BASE_DESTINO].[dbo].[Cargos] (
Id,
ID_CARGO,
Ativo,
Codigo,
Descricao,
EntidadeId)
SELECT
NEWID(), -- Gerar um GUID para ser o novo ID
C.ID_CARGO, -- Campo temporário para controlar ID antigo
CASE WHEN C.IND_ATIVO = 'S' THEN 1 ELSE 0 END, -- Converte char em bit
C.COD_CARGO,
C.DES_CARGO,
E.Id--EntidadeId
FROM [BASE_ORIGEM].[dbo].CARGO AS C
LEFT JOIN [BASE_DESTINO].[dbo].[Entidades] AS E ON C.COD_ENTIDADE = E.COD_ENTIDADE
/*-----------------------------------------------------------------------------------
Passo 10: Importar AreasMedicas
-------------------------------------------------------------------------------------*/
-- Cria campo temporário para controlar ID antigo
ALTER TABLE [BASE_DESTINO].[dbo].[AreasMedicas]
ADD COD_AREA_MEDICA bigint
-- Importação
INSERT INTO [BASE_DESTINO].[dbo].[AreasMedicas] (
Id,
COD_AREA_MEDICA,
Descricao,
Ativo)
SELECT
NEWID(), -- Gerar um GUID para ser o novo ID
COD_AREA_MEDICA, -- Campo temporário para controlar ID antigo
DES_AREA_MEDICA,
CASE WHEN IND_ATIVO = 'S' THEN 1 ELSE 0 END -- Converte char em bit
FROM [BASE_ORIGEM].[dbo].[AREA_MEDICA]
/*-----------------------------------------------------------------------------------
Passo 11: Importar Profissionais [Enderecos]
-------------------------------------------------------------------------------------*/
-- Cria campo temporário para controlar ID antigo
ALTER TABLE [BASE_DESTINO].[dbo].[Enderecos]
ADD COD_PROFISSIONAL bigint
-- Alterar campo para ser compatível ao importar
ALTER TABLE [BASE_DESTINO].[dbo].[Enderecos]
ALTER COLUMN Complemento VARCHAR(100) COLLATE SQL_Latin1_General_CP1_CI_AI NULL
-- Importação
INSERT INTO [BASE_DESTINO].[dbo].[Enderecos] (
COD_PROFISSIONAL,
Cep,
Municipio,
Uf,
Logradouro,
Numero,
Bairro,
Complemento)
SELECT
P.COD_PROFISSIONAL, -- Campo temporário para controlar ID antigo
P.NUM_CEP,
M.NOM_MUNICIPIO,
UF.SGL_UF,
L.NOM_LOGRADOURO,
P.NUM_NUMERO,
B.NOM_BAIRRO,
P.TXT_COMPLEMENTO
FROM [BASE_ORIGEM].[dbo].[PROFISSIONAL] AS P
LEFT JOIN [BASE_ORIGEM].[dbo].[MUNICIPIO] AS M ON P.COD_MUNICIPIO = M.COD_MUNICIPIO
LEFT JOIN [BASE_ORIGEM].[dbo].[UF] AS UF ON P.COD_UF = UF.COD_UF
LEFT JOIN [BASE_ORIGEM].[dbo].[LOGRADOURO] AS L ON P.COD_LOGRADOURO = L.COD_LOGRADOURO
LEFT JOIN [BASE_ORIGEM].[dbo].[BAIRRO] AS B ON P.COD_BAIRRO = B.COD_BAIRRO
WHERE IND_TIPO_PROFISSIONAL = 'MED'
-- Reverte alteração no campo
ALTER TABLE [BASE_DESTINO].[dbo].[Enderecos]
ALTER COLUMN Complemento nvarchar(100) COLLATE Latin1_General_CI_AS NULL
/*-----------------------------------------------------------------------------------
Passo 12: Importar Profissionais [DadosPessoais]
-------------------------------------------------------------------------------------*/
-- Cria campo temporário para controlar ID antigo
ALTER TABLE [BASE_DESTINO].[dbo].[DadosPessoais]
ADD COD_PROFISSIONAL bigint
-- Alterar campo para ser compatível ao importar
ALTER TABLE [BASE_DESTINO].[dbo].[DadosPessoais]
ALTER COLUMN Rg VARCHAR(20) COLLATE SQL_Latin1_General_CP1_CI_AI NOT NULL
-- Importação
INSERT INTO [BASE_DESTINO].[dbo].[DadosPessoais] (
Id,
COD_PROFISSIONAL,
NomeCompleto,
Cpf,
Rg,
DataDeNascimento,
Telefone,
Celular)
SELECT
NEWID(), -- Gerar um GUID para ser o novo ID
COD_PROFISSIONAL, -- Campo temporário para controlar ID antigo
NOM_PROFISSIONAL,
NUM_CPF,
NUM_RG,
DAT_NASCIMENTO,
NUM_TELEFONE,
NUM_CELULAR
FROM [BASE_ORIGEM].[dbo].[PROFISSIONAL]
WHERE IND_TIPO_PROFISSIONAL = 'MED'
-- Reverte alteração no campo
ALTER TABLE [BASE_DESTINO].[dbo].[DadosPessoais]
ALTER COLUMN Rg nvarchar(20) COLLATE Latin1_General_CI_AS NOT NULL
/*-----------------------------------------------------------------------------------
Passo 13: Importar Profissionais
-------------------------------------------------------------------------------------*/
-- Cria campo temporário para controlar ID antigo
ALTER TABLE [BASE_DESTINO].[dbo].[Profissionais]
ADD COD_PROFISSIONAL bigint
-- Alterar campo para ser compatível ao importar
ALTER TABLE [BASE_DESTINO].[dbo].[Profissionais]
ALTER COLUMN NumeroDoConselho VARCHAR(20) COLLATE SQL_Latin1_General_CP1_CI_AI NOT NULL
-- Importação
INSERT INTO [BASE_DESTINO].[dbo].[Profissionais] (
Id,
COD_PROFISSIONAL,
Ativo,
NumeroDoConselho,
EnderecoId,
DadoPessoalId,
AreaMedicaId)
SELECT
NEWID(), -- Gerar um GUID para ser o novo ID
P.COD_PROFISSIONAL, -- Campo temporário para controlar ID antigo
CASE WHEN P.IND_ATIVO = 'S' THEN 1 ELSE 0 END, -- Converte char em bit
CASE WHEN P.NUM_CONSELHO IS NULL THEN '' ELSE P.NUM_CONSELHO END,
E.Id,--EnderecoId,
D.Id,--DadoPessoalId,
A.Id--AreaMedicaId
FROM [BASE_ORIGEM].[dbo].[PROFISSIONAL] AS P
LEFT JOIN [BASE_DESTINO].[dbo].[Enderecos] AS E ON P.COD_PROFISSIONAL = E.COD_PROFISSIONAL
LEFT JOIN [BASE_DESTINO].[dbo].[DadosPessoais] AS D ON P.COD_PROFISSIONAL = D.COD_PROFISSIONAL
LEFT JOIN [BASE_DESTINO].[dbo].[AreasMedicas] AS A ON P.COD_AREA_MEDICA = A.COD_AREA_MEDICA
WHERE IND_TIPO_PROFISSIONAL = 'MED'
-- Reverte alteração no campo
ALTER TABLE [BASE_DESTINO].[dbo].[Profissionais]
ALTER COLUMN NumeroDoConselho nvarchar(20) COLLATE Latin1_General_CI_AS NOT NULL
/*-----------------------------------------------------------------------------------
Passo 14: Importar Profissionais [AgendasDosProfissionais]
-------------------------------------------------------------------------------------*/
-- Importação
INSERT INTO [BASE_DESTINO].[dbo].[AgendasDosProfissionais] (
Id,
UnidadePericialId,
ProfissionalId)
SELECT
NEWID(), -- Gerar um GUID para ser o novo ID
U.Id,
P.Id
FROM [BASE_ORIGEM].[dbo].[PROFISSIONAL_UNIDADE_PERICIAL] AS P_UP
LEFT JOIN [BASE_DESTINO].[dbo].[UnidadesPericiais] AS U ON P_UP.COD_UNIDADE_PERICIONAL = U.COD_UNIDADE_PERICIONAL
INNER JOIN [BASE_DESTINO].[dbo].[Profissionais] AS P ON P_UP.COD_PROFISSIONAL = P.COD_PROFISSIONAL
/*-----------------------------------------------------------------------------------
Passo 15: Importar Profissionais [AgendasDosProfissionais]
-------------------------------------------------------------------------------------*/
-- Importação
INSERT INTO [BASE_DESTINO].[dbo].[DiasDaSemanaDasAgendas] (
Id,
AgendaDoProfissionalId,
DiaDaSemana,
HorarioInicialManha,
HorarioFinalManha,
HorarioInicialTarde,
HorarioFinalTarde)
SELECT
NEWID(), -- Gerar um GUID para ser o novo ID
AP.Id,
CASE WHEN IND_DIA_SEMANA = 'DOM' THEN 0
WHEN IND_DIA_SEMANA = 'SEG' THEN 1
WHEN IND_DIA_SEMANA = 'TER' THEN 2
WHEN IND_DIA_SEMANA = 'QUA' THEN 3
WHEN IND_DIA_SEMANA = 'QUI' THEN 4
WHEN IND_DIA_SEMANA = 'SEX' THEN 5
WHEN IND_DIA_SEMANA = 'SAB' THEN 6
END,
CASE WHEN LEN(HOR_INICIO_MANHA) = 4 THEN '0'+HOR_INICIO_MANHA ELSE HOR_INICIO_MANHA END,
CASE WHEN LEN(HOR_FIM_MANHA) = 4 THEN '0'+HOR_FIM_MANHA ELSE HOR_FIM_MANHA END,
CASE WHEN LEN(HOR_INICIO_TARDE) = 4 THEN '0'+HOR_INICIO_TARDE ELSE HOR_INICIO_TARDE END,
CASE WHEN LEN(HOR_FIM_TARDE) = 4 THEN '0'+HOR_FIM_TARDE ELSE HOR_FIM_TARDE END
FROM [BASE_ORIGEM].[dbo].[PROFISSIONAL_AGENDA] AS PA
LEFT JOIN [BASE_ORIGEM].[dbo].[PROFISSIONAL_UNIDADE_PERICIAL] AS PUP ON PA.COD_PROFISSIONAL_UNIDADE = PUP.COD_PROFISSIONAL_UNIDADE_PERICIONAL
LEFT JOIN [BASE_DESTINO].[dbo].[UnidadesPericiais] AS U ON PUP.COD_UNIDADE_PERICIONAL = U.COD_UNIDADE_PERICIONAL
INNER JOIN [BASE_DESTINO].[dbo].[Profissionais] AS P ON PUP.COD_PROFISSIONAL = P.COD_PROFISSIONAL
LEFT JOIN [BASE_DESTINO].[dbo].[AgendasDosProfissionais] AS AP ON U.Id = AP.UnidadePericialId
AND P.Id = AP.ProfissionalId
/*-----------------------------------------------------------------------------------
Passo 16: Importar Lotacoes
-------------------------------------------------------------------------------------*/
-- Cria campo temporário para controlar ID antigo
ALTER TABLE [BASE_DESTINO].[dbo].[Lotacoes]
ADD ID_LOTACAO bigint
-- Importação
INSERT INTO [BASE_DESTINO].[dbo].[Lotacoes] (
Id,
ID_LOTACAO,
Ativo,
Codigo,
Nome,
EntidadeId)
SELECT
NEWID(), -- Gerar um GUID para ser o novo ID
L.ID_LOTACAO, -- Campo temporário para controlar ID antigo
CASE WHEN L.IND_ATIVO = 'S' THEN 1 ELSE 0 END, -- Converte char em bit
L.COD_LOTACAO,
L.NOM_LOTACAO,
E.Id--EntidadeId
FROM [BASE_ORIGEM].[dbo].[LOTACAO] AS L
LEFT JOIN [BASE_DESTINO].[dbo].[Entidades] AS E ON L.COD_ENTIDADE = E.COD_ENTIDADE
/*-----------------------------------------------------------------------------------
Passo 17: Importar Lotacoes
-------------------------------------------------------------------------------------*/
-- Cria campo temporário para controlar ID antigo
ALTER TABLE [BASE_DESTINO].[dbo].[LocaisDeTrabalho]
ADD ID_LOCAL_TRABALHO bigint
-- Importação
INSERT INTO [BASE_DESTINO].[dbo].[LocaisDeTrabalho] (
Id,
ID_LOCAL_TRABALHO,
Ativo,
Codigo,
Nome,
EntidadeId)
SELECT
NEWID(), -- Gerar um GUID para ser o novo ID
L.ID_LOCAL_TRABALHO, -- Campo temporário para controlar ID antigo
CASE WHEN L.IND_ATIVO = 'S' THEN 1 ELSE 0 END, -- Converte char em bit
L.COD_LOCAL_TRABALHO,
L.NOM_LOCAL_TRABALHO,
E.Id--EntidadeId
FROM [BASE_ORIGEM].[dbo].[LOCAL_TRABALHO] AS L
LEFT JOIN [BASE_DESTINO].[dbo].[Entidades] AS E ON L.COD_ENTIDADE = E.COD_ENTIDADE
/*-----------------------------------------------------------------------------------
Passo 18: Importar MedicosAssistentes
-------------------------------------------------------------------------------------*/
-- Cria campo temporário para controlar ID antigo
ALTER TABLE [BASE_DESTINO].[dbo].[MedicosAssistentes]
ADD COD_PROFISSIONAL bigint
-- Importação
INSERT INTO [BASE_DESTINO].[dbo].[MedicosAssistentes] (
Id,
COD_PROFISSIONAL,
Nome,
Crm,
Uf)
SELECT
NEWID(), -- Gerar um GUID para ser o novo ID
P.COD_PROFISSIONAL, -- Campo temporário para controlar ID antigo
P.NOM_PROFISSIONAL,
CASE WHEN P.NUM_CONSELHO IS NULL THEN '' ELSE P.NUM_CONSELHO END,
UF.SGL_UF
FROM [BASE_ORIGEM].[dbo].[PROFISSIONAL] AS P
LEFT JOIN [BASE_ORIGEM].[dbo].[UF] AS UF ON P.COD_UF = UF.COD_UF
WHERE IND_TIPO_PROFISSIONAL IS NULL
/*-----------------------------------------------------------------------------------
Passo 19: Importar Segurados [DadosDeOrigem]
-------------------------------------------------------------------------------------*/
-- Cria campo temporário para controlar ID antigo
ALTER TABLE [BASE_DESTINO].[dbo].[DadosDeOrigem]
ADD COD_SEGURADO bigint
-- Importação
INSERT INTO [BASE_DESTINO].[dbo].[DadosDeOrigem] (
Id,
COD_SEGURADO,
DataDeNascimento,
Sexo,
TipoSanguineo,
FatorRh,
NomeDaMae,
NomeDoPai
)
SELECT
NEWID(), -- Gerar um GUID para ser o novo ID
S.COD_SEGURADO, -- Campo temporário para controlar ID antigo
CASE WHEN DAT_NASCIMENTO IS NULL THEN '1899-01-01' ELSE DAT_NASCIMENTO END,
CASE WHEN IND_SEXO = 'FEM' THEN 'Feminino'
WHEN IND_SEXO = 'MAS' THEN 'Masculino'
ELSE 'NaoIdentificado'
END,
CASE WHEN IND_TIPO_SANGUE IS NULL THEN '-' ELSE IND_TIPO_SANGUE END,
CASE WHEN IND_FATOR_RH = '+' THEN 'Positivo'
WHEN IND_FATOR_RH = '-' THEN 'Negativo'
ELSE 'N/I'
END,
CASE WHEN NOM_MAE IS NULL THEN '' ELSE NOM_MAE END,
NOM_PAI
FROM [BASE_ORIGEM].[dbo].[SEGURADO] AS S
/*-----------------------------------------------------------------------------------
Passo 20: Importar Segurados [DadosDosSegurados]
-------------------------------------------------------------------------------------*/
-- Cria campo temporário para controlar ID antigo
ALTER TABLE [BASE_DESTINO].[dbo].[DadosDosSegurados]
ADD COD_SEGURADO bigint
-- Importação
INSERT INTO [BASE_DESTINO].[dbo].[DadosDosSegurados] (
Id,
COD_SEGURADO,
Cpf,
Matricula,
Pis,
EstadoCivil,
TipoDePrevidencia,
GrauDeInstrucao
)
SELECT
NEWID(), -- Gerar um GUID para ser o novo ID
S.COD_SEGURADO, -- Campo temporário para controlar ID antigo
CASE WHEN NUM_CPF IS NULL THEN '' ELSE NUM_CPF END,
CASE WHEN NUM_MATRICULA IS NULL THEN '' ELSE NUM_MATRICULA END,
NUM_PIS,
CASE WHEN IND_ESTADO_CIVIL = 'VIU' THEN 'Viuvo'
WHEN IND_ESTADO_CIVIL = 'SOL' THEN 'Solteiro'
WHEN IND_ESTADO_CIVIL = 'CAS' THEN 'Casado'
WHEN IND_ESTADO_CIVIL = 'DIV' THEN 'Divorciado'
ELSE 'N/I'
END,
CASE WHEN IND_TIPO_PREVIDENCIA = 'NPP' THEN 'NaoPossui'
WHEN IND_TIPO_PREVIDENCIA = 'IPERON' THEN 'IPERON'
WHEN IND_TIPO_PREVIDENCIA = 'INSS' THEN 'INSS'
ELSE 'NaoIdentificado'
END,
CASE WHEN IND_INSTRUCAO = 'FUC' THEN 'FundamentalCompleto'
WHEN IND_INSTRUCAO = 'SUC' THEN 'SuperiorCompleto'
WHEN IND_INSTRUCAO = 'MEI' THEN 'MedioIncompleto'
WHEN IND_INSTRUCAO = 'MEC' THEN 'MedioCompleto'
WHEN IND_INSTRUCAO = 'SUI' THEN 'SuperiorIncompleto'
WHEN IND_INSTRUCAO = 'FUI' THEN 'FundamentalIncompleto'
WHEN IND_INSTRUCAO = 'POC' THEN 'PosGraduacaoCompleta'
WHEN IND_INSTRUCAO = 'POI' THEN 'PosGraduacaoIncompleta'
ELSE 'NaoIdentificado'
END
FROM [BASE_ORIGEM].[dbo].[SEGURADO] AS S
/*-----------------------------------------------------------------------------------
Passo 21: Importar Segurados [Contatos]
-------------------------------------------------------------------------------------*/
-- Cria campo temporário para controlar ID antigo
ALTER TABLE [BASE_DESTINO].[dbo].[Contatos]
ADD COD_SEGURADO bigint
-- Alterar campo para ser compatível ao importar
ALTER TABLE [BASE_DESTINO].[dbo].[Contatos]
ALTER COLUMN Telefone VARCHAR(20) COLLATE SQL_Latin1_General_CP1_CI_AI NULL
ALTER TABLE [BASE_DESTINO].[dbo].[Contatos]
ALTER COLUMN Celular VARCHAR(20) COLLATE SQL_Latin1_General_CP1_CI_AI NULL
-- Importação
INSERT INTO [BASE_DESTINO].[dbo].[Contatos] (
Id,
COD_SEGURADO,
Telefone,
Celular,
Email)
SELECT
NEWID(), -- Gerar um GUID para ser o novo ID
S.COD_SEGURADO, -- Campo temporário para controlar ID antigo
NUM_TELEFONE,
NUM_CELULAR,
DES_EMAIL
FROM [BASE_ORIGEM].[dbo].[SEGURADO] AS S
-- Reverte alteração no campo
ALTER TABLE [BASE_DESTINO].[dbo].[Contatos]
ALTER COLUMN Telefone nvarchar(20) COLLATE Latin1_General_CI_AS NULL
ALTER TABLE [BASE_DESTINO].[dbo].[Contatos]
ALTER COLUMN Celular nvarchar(20) COLLATE Latin1_General_CI_AS NULL
/*-----------------------------------------------------------------------------------
Passo 21: Importar Segurados [Vinculos]
-------------------------------------------------------------------------------------*/
-- Cria campo temporário para controlar ID antigo
ALTER TABLE [BASE_DESTINO].[dbo].[Vinculos]
ADD COD_SEGURADO bigint
-- Importação
INSERT INTO [BASE_DESTINO].[dbo].[Vinculos] (
Id,
COD_SEGURADO,
EntidadeId,
LotacaoId,
CargoId,
LocalDeTrabalhoId)
SELECT
NEWID(), -- Gerar um GUID para ser o novo ID
S.COD_SEGURADO, -- Campo temporário para controlar ID antigo
E.Id, --EntidadeId
L.Id, --LotacaoId
C.Id, --CargoId
LT.Id --LocalDeTrabalhoId
FROM [BASE_ORIGEM].[dbo].SEGURADO AS S
LEFT JOIN [BASE_DESTINO].[dbo].[Entidades] AS E ON S.COD_ENTIDADE = E.COD_ENTIDADE
LEFT JOIN [BASE_DESTINO].[dbo].[Lotacoes] AS L ON S.ID_LOTACAO = L.ID_LOTACAO
LEFT JOIN [BASE_DESTINO].[dbo].[Cargos] AS C ON S.ID_CARGO = C.ID_CARGO
LEFT JOIN [BASE_DESTINO].[dbo].[LocaisDeTrabalho] AS LT ON S.ID_LOCAL_TRABALHO = LT.ID_LOCAL_TRABALHO
/*-----------------------------------------------------------------------------------
Passo 21: Importar Segurados [Enderecos]
-------------------------------------------------------------------------------------*/
-- Cria campo temporário para controlar ID antigo
ALTER TABLE [BASE_DESTINO].[dbo].[Enderecos]
ADD COD_SEGURADO bigint
-- Importação
INSERT INTO [BASE_DESTINO].[dbo].[Enderecos] (
COD_SEGURADO,
Cep,
Municipio,
Uf,
Logradouro,
Numero,
Bairro,
Complemento)
SELECT
U.COD_SEGURADO, -- Campo temporário para controlar ID antigo
U.NUM_CEP,
M.NOM_MUNICIPIO,
UF.SGL_UF,
L.NOM_LOGRADOURO,
U.NUM_NUMERO,
B.NOM_BAIRRO,
U.TXT_COMPLEMENTO
FROM [BASE_ORIGEM].[dbo].[SEGURADO] AS U
LEFT JOIN [BASE_ORIGEM].[dbo].[MUNICIPIO] AS M ON U.COD_MUNICIPIO = M.COD_MUNICIPIO
LEFT JOIN [BASE_ORIGEM].[dbo].[UF] AS UF ON U.COD_UF = UF.COD_UF
LEFT JOIN [BASE_ORIGEM].[dbo].[LOGRADOURO] AS L ON U.COD_LOGRADOURO = L.COD_LOGRADOURO
LEFT JOIN [BASE_ORIGEM].[dbo].[BAIRRO] AS B ON U.COD_BAIRRO = B.COD_BAIRRO
/*-----------------------------------------------------------------------------------
Passo 23: Importar Segurados
-------------------------------------------------------------------------------------*/
-- Cria campo temporário para controlar ID antigo
ALTER TABLE [BASE_DESTINO].[dbo].Segurados
ADD COD_SEGURADO bigint
-- Importação
INSERT INTO [BASE_DESTINO].[dbo].Segurados (
Id,
COD_SEGURADO,
Nome,
Ativo,
DadoDeOrigemId,
DadoDoSeguradoId,
EnderecoId,
ContatoId,
VinculoId)
SELECT
NEWID(), -- Gerar um GUID para ser o novo ID
S.COD_SEGURADO, -- Campo temporário para controlar ID antigo
NOM_SEGURADO,
CASE WHEN IND_ATIVO = 'S' THEN 1 ELSE 0 END, -- Converte char em bit
DO.Id,--
DS.Id,--DadoDoSeguradoId
E.Id,--EnderecoId
C.Id,--ContatoId
V.Id--VinculoId
FROM [BASE_ORIGEM].[dbo].[SEGURADO] AS S
LEFT JOIN [BASE_DESTINO].[dbo].[Enderecos] AS E ON S.COD_SEGURADO = E.COD_SEGURADO
LEFT JOIN [BASE_DESTINO].[dbo].DadosDeOrigem AS DO ON S.COD_SEGURADO = DO.COD_SEGURADO
LEFT JOIN [BASE_DESTINO].[dbo].DadosDosSegurados AS DS ON S.COD_SEGURADO = DS.COD_SEGURADO
LEFT JOIN [BASE_DESTINO].[dbo].Contatos AS C ON S.COD_SEGURADO = C.COD_SEGURADO
LEFT JOIN [BASE_DESTINO].[dbo].Vinculos AS V ON S.COD_SEGURADO = V.COD_SEGURADO
3. Executar instrução
2.3 Alterações necessárias
Após a importação dos cadastros, 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.
3. Conclusão
Concluímos que a nível de cadastros, a importação deve ocorrer sem impedimentos. Porém, na planilha foi levantado alguns dados que podem ter formatação padronizadas como, por exemplo, descrições/nomes em caixa alta ou cep/telefone/celular sem máscara ao salvar no banco. Será definido pelo P.O. o valor e a prioridade de tais alterações e tratamentos.