| Data de elaboração | 29/06/2023 |
| Responsável pelo estudo | Raissa de Sousa Stodulski, Taillon Miguel Gonçalves, Ádelle Camarão Monteiro |
| 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 | 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?
Email 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.
Script
/*-----------------------------------------------------------------------------------
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
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.
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.