(b) Realização da carga da tabela TUSS a partir das tabelas de domínio Versão 3.0 do TISS


A partir da versão 3.0 do TISS o siste da ANS divulgou a documentação das tabelas de domínio em sua página. A figura a seguir ilustra o site da ANS (nota: a ANS poderá mudar o seu site sem aviso , de modo que o processo descrito nesse manual serve como um exemplo , ficando a responsabilidade pela obtenção das tabelas do TUSS a cargo de orientações a serem fornecidas pela ANS) :







URL da página acima: http://www.ans.gov.br/index.php/espaco-dos-prestadores/tiss (sujeito a alterações da ANS).


Logo abaixo encontaremos o link para acesso à documentação do TISS 3.2:






Abaixo ilustramos onde estão os links para download da documentação do TISS 3.02. : No tópico denominado “Componente de representação de conceitos em saúde (Terminologia unificada da saúde suplementar) teremos os arquivos em formato PDF ou EXCELL com o conteúdo das tabelas TUSS:




Particularmente estaremos interessados no arquivo “Padrão TISS_Representação de Conceitos em Saúde” no formato excell (conforme ilustrado abaixo).





Ao abrirmos esse arquivo teremos uma planilha excell onde cada pasta corresponde a uma tabela do TUSS. A figura a seguir ilustra o cadastro de “Materiais” do TUSS. Para exportar o cadastro de materiais, basicamente nos posicionamos nessa planilha e clicamos no botão “Salvar como” da própria planilha informado um nome e importante no tipo informe “texto .CSV” conforme ilustrado abaixo:





IMPORTANTE: Selecione nas opções de salva do arquivo .CSV : Delimitador de campo = “|” (caracter pipe) , Delimitar de texto : deixe em branco conforme ilustração abaixo:






NOTA IMPORTANTE: Foram observados em alguns casos práticos que a baixa dos arquivos realizada através do site da ANS conforme links e descrições indicados acima (procmdimento tecnicamente correto) gerou arquivos contendo caracteres “não ANSI” que podem provocar falhas em processos de leitura dos mesmos (ocasionam leitura parcial do conteúdo do arquivo). A Incoway mantem uma cópia dos arquivos da ANS (livre de caracteres não ANSI) disponível para download na seguinte URL: http://200.161.143.128:9080/downloads/TUSS_MAT_MED_Rev01.zip

O arquivo obtido deverá ser utilizado em um processo de carga de script (importação de arquivos) utilizando o script de importação denominado “TUSS Carga Materiais” conforme ilustração abaixo:




Nota: Caso esse script não esteja configurado na sua instalação do IW você poderá realizar a configuração desse script segundo os seguintes passos:


(1) Copie as seguintes tabelas do banco de referência da Incoway (utilizando a interface F0043):

(2) Criar as tabelas temporárias utilizadas no script

Execute os seguintes comandos SQL:


Sintase Oracle:

CREATE TABLE TMPTD_LOAD_TUSS_MAT ( CODIGOTUSS VARCHAR2(10) ,

TERMO VARCHAR2(350) ,

REF_FABRICANTE VARCHAR2(350) ,

FABRICANTE VARCHAR2(350),

DATA_INI_VIG VARCHAR2(15),

DATA_FIM_VIG VARCHAR2(15),

DATA_FIM_IMPL VARCHAR2(15),

REGISTRO_ANVISA VARCHAR2(15),

CLASSE_RISCO VARCHAR2(5) );



CREATE TABLE TMPTD_LOAD_TUSS_MED ( CODIGOTUSS VARCHAR2(10) ,

TERMO VARCHAR2(350) ,

APRESENTACAO VARCHAR2(350) ,

FABRICANTE VARCHAR2(350),

DATA_INI_VIG VARCHAR2(15),

DATA_FIM_VIG VARCHAR2(15),

DATA_FIM_IMPL VARCHAR2(15) );


Sintase SQLSERVER:
CREATE TABLE TMPTD_LOAD_TUSS_MAT ( CODIGOTUSS VARCHAR(10) ,

TERMO VARCHAR(350) ,

REF_FABRICANTE VARCHAR(350) ,

FABRICANTE VARCHAR(350),

DATA_INI_VIG VARCHAR(15),

DATA_FIM_VIG VARCHAR(15),

DATA_FIM_IMPL VARCHAR(15),

REGISTRO_ANVISA VARCHAR(15),

CLASSE_RISCO VARCHAR(5) );



CREATE TABLE TMPTD_LOAD_TUSS_MED ( CODIGOTUSS VARCHAR(10) ,

TERMO VARCHAR(350) ,

APRESENTACAO VARCHAR(350) ,

FABRICANTE VARCHAR(350),

DATA_INI_VIG VARCHAR(15),

DATA_FIM_VIG VARCHAR(15),

DATA_FIM_IMPL VARCHAR(15) );





(3) Para cadastrar os scripts de carga das tabelas TUSS Materiais

Clique na opção <edit> do combo box no canto superior dessa interface o IW irá exibir a caixa de diálogo F0149 através da qual será possível cadastrar um novo script. A figura a seguir ilustra essa caixa de diálogo:





Se o script não estiver publicado na sua instalação clique no botão novo e valore os atributos editáveis conforme ilustrado abaixo:




Coluna ID: Deixe em branco (o IW irá gerar um ID automáticamente, o ID do script na sua instalação poderá ser diferente do valor ilustrado nesse exemplo)
Nome: Valore com exatamente como ilustrado acima : TUSS Carga Materiais

Nome Tabela: Selecione a tabella TD_LOAD_TUSS_MAT
Diretório: Valore conforme ilustrado acima: TD_LOAD_TUSS_MAT

Tipo Importação: Arquivo
Comando SQL: Nesse atributo deverá ser lançado o seguinte conteúdo:


Sintaxe Oracle:

- -----------------------------------------------------------------------------------------------------------------------;
-- DRIVER PARA LEITURA DA TABELA TUSS: MATERIAIS (TABELA 19 DO TUSS) ;
-- -----------------------------------------------------------------------------------------------------------------------;

-- INSERE DADOS DA TABELA TEMPORARIA NA TABELA TD_LOAD_TUSS_MAT;
DELETE FROM TD_LOAD_TUSS_MAT;

INSERT INTO TD_LOAD_TUSS_MAT ( CODIGOTUSS, TERMO, REF_FABRICANTE ,FABRICANTE, DATA_INI_VIG,DATA_FIM_VIG, DATA_FIM_IMPL , REGISTRO_ANVISA, CLASSE_RISCO )
SELECT CODIGOTUSS, TERMO, REF_FABRICANTE ,FABRICANTE, DATA_INI_VIG,DATA_FIM_VIG, DATA_FIM_IMPL , REGISTRO_ANVISA, CLASSE_RISCO
FROM TmpTD_LOAD_TUSS_MAT;

-- EXECUTA TRIM NAS COLUNAS LIDAS;
UPDATE TmpTD_LOAD_TUSS_MAT SET TERMO = TRIM(TERMO);
UPDATE TmpTD_LOAD_TUSS_MAT SET REF_FABRICANTE = TRIM(REF_FABRICANTE);
UPDATE TmpTD_LOAD_TUSS_MAT SET FABRICANTE = TRIM(FABRICANTE);

UPDATE TMPTD_LOAD_TUSS_MED SET TERMO = ' - ' WHERE TERMO IS NULL;
UPDATE TmpTD_LOAD_TUSS_MED SET APRESENTACAO = ' - ' WHERE APRESENTACAO IS NULL;
UPDATE TmpTD_LOAD_TUSS_MED SET FABRICANTE = ' - ' WHERE FABRICANTE IS NULL;

-- ELIMINA REDUNDANCIA NOS DADOS A CARREGAR : NAO PODEM EXISTIR DOIS REGISTROS CITANDO UM MESMO CODIGO TUSS;
UPDATE TD_LOAD_TUSS_MAT SET COD_REPETIDO = 0 ;

UPDATE TD_LOAD_TUSS_MAT SET MIN_ID_CDTUSS = (
SELECT MIN(B.ID) FROM TD_LOAD_TUSS_MAT B
WHERE
B.CODIGOTUSS = TD_LOAD_TUSS_MAT.CODIGOTUSS
);

UPDATE TD_LOAD_TUSS_MAT SET COD_REPETIDO = 1 WHERE ID <> MIN_ID_CDTUSS;

-- INSERE REGISTRO NA SCCCODE ;
INSERT INTO SCCCODE (CODENAME , ALTERNATENAME , IDTABLE, CODECONDITION, CANCELED )
SELECT (SUBSTR( (TERMO || ' - ' || REF_FABRICANTE),1,100) || ' (' || SUBSTR(FABRICANTE,1,47) || ')' ) AS CODENAME ,
CODIGOTUSS AS ALTERNATENAME ,
(SELECT MAX(ID) FROM SCCTABLE WHERE TABLENAME = 'TCTUSS') AS IDTABLE ,
0 AS CODECONDITION ,
0 AS CANCELED
FROM TD_LOAD_TUSS_MAT
WHERE CODIGOTUSS NOT IN ( SELECT DISTINCT ALTERNATENAME FROM SCCCODE WHERE IDTABLE = (SELECT MAX(ID) FROM SCCTABLE WHERE TABLENAME = 'TCTUSS') AND ALTERNATENAME IS NOT NULL )
AND COD_REPETIDO = 0 AND CODIGOTUSS IS NOT NULL AND CODIGOTUSS <> '';


-- INSERE REGISTRO NA TCTUSS ;
INSERT INTO TCTUSS ( IDCODE, CDIGO_TUSS )
SELECT ID, ALTERNATENAME
FROM SCCCODE
WHERE
IDTABLE = (SELECT MAX(ID) FROM SCCTABLE WHERE TABLENAME = 'TCTUSS')
AND ID NOT IN (SELECT DISTINCT IDCODE FROM TCTUSS );


-- INSERE REGISTRO NA TCReg_Cob_Proced_H ;
-- NOTA: EM ALGUMAS BASES ANTIGAS O NOME DESSA TABELA PODE ESTAR DIFERENTE (EXEMPLO : TCReg_Cob_Proced_);

INSERT INTO TCReg_Cob_Proced_H (IDCODE)
SELECT DISTINCT IDCODE FROM TCTUSS WHERE IDCODE NOT IN ( SELECT DISTINCT IDCODE FROM TCReg_Cob_Proced_H) ;

-- RETIRA ACENTOS NO CODENAME NO TUSS ;

UPDATE SCCCODE SET CODENAME = REPLACE(CODENAME, 'Á','A') WHERE IDTABLE = (SELECT MAX(ID) FROM SCCTABLE WHERE TABLENAME = 'TCTUSS');
UPDATE SCCCODE SET CODENAME = REPLACE(CODENAME, 'Ó','O') WHERE IDTABLE = (SELECT MAX(ID) FROM SCCTABLE WHERE TABLENAME = 'TCTUSS');
UPDATE SCCCODE SET CODENAME = REPLACE(CODENAME, 'Ã','A') WHERE IDTABLE = (SELECT MAX(ID) FROM SCCTABLE WHERE TABLENAME = 'TCTUSS');
UPDATE SCCCODE SET CODENAME = REPLACE(CODENAME, 'Ê','E') WHERE IDTABLE = (SELECT MAX(ID) FROM SCCTABLE WHERE TABLENAME = 'TCTUSS');
UPDATE SCCCODE SET CODENAME = REPLACE(CODENAME, 'É','E') WHERE IDTABLE = (SELECT MAX(ID) FROM SCCTABLE WHERE TABLENAME = 'TCTUSS');
UPDATE SCCCODE SET CODENAME = REPLACE(CODENAME, 'Í','I') WHERE IDTABLE = (SELECT MAX(ID) FROM SCCTABLE WHERE TABLENAME = 'TCTUSS');
UPDATE SCCCODE SET CODENAME = REPLACE(CODENAME, 'Ú','U') WHERE IDTABLE = (SELECT MAX(ID) FROM SCCTABLE WHERE TABLENAME = 'TCTUSS');
UPDATE SCCCODE SET CODENAME = REPLACE(CODENAME, 'Ô','O') WHERE IDTABLE = (SELECT MAX(ID) FROM SCCTABLE WHERE TABLENAME = 'TCTUSS');


Sintase SQLSSERVER:

- -----------------------------------------------------------------------------------------------------------------------;
-- DRIVER PARA LEITURA DA TABELA TUSS: MATERIAIS (TABELA 19 DO TUSS) ;
-- -----------------------------------------------------------------------------------------------------------------------;

-- INSERE DADOS DA TABELA TEMPORARIA NA TABELA TD_LOAD_TUSS_MAT;
DELETE FROM TD_LOAD_TUSS_MAT;

INSERT INTO TD_LOAD_TUSS_MAT ( CODIGOTUSS, TERMO, REF_FABRICANTE ,FABRICANTE, DATA_INI_VIG,DATA_FIM_VIG, DATA_FIM_IMPL , REGISTRO_ANVISA, CLASSE_RISCO )
SELECT CODIGOTUSS, TERMO, REF_FABRICANTE ,FABRICANTE, DATA_INI_VIG,DATA_FIM_VIG, DATA_FIM_IMPL , REGISTRO_ANVISA, CLASSE_RISCO
FROM TmpTD_LOAD_TUSS_MAT;

-- EXECUTA TRIM NAS COLUNAS LIDAS;
UPDATE TmpTD_LOAD_TUSS_MAT SET TERMO = RTRIM(TERMO);
UPDATE TmpTD_LOAD_TUSS_MAT SET REF_FABRICANTE = RTRIM(REF_FABRICANTE);
UPDATE TmpTD_LOAD_TUSS_MAT SET FABRICANTE = RTRIM(FABRICANTE);

UPDATE TmpTD_LOAD_TUSS_MAT SET TERMO = LTRIM(TERMO);
UPDATE TmpTD_LOAD_TUSS_MAT SET REF_FABRICANTE = LTRIM(REF_FABRICANTE);
UPDATE TmpTD_LOAD_TUSS_MAT SET FABRICANTE = LTRIM(FABRICANTE);

UPDATE TMPTD_LOAD_TUSS_MED SET TERMO = ' - ' WHERE TERMO IS NULL;
UPDATE TmpTD_LOAD_TUSS_MED SET APRESENTACAO = ' - ' WHERE APRESENTACAO IS NULL;
UPDATE TmpTD_LOAD_TUSS_MED SET FABRICANTE = ' - ' WHERE FABRICANTE IS NULL;

-- ELIMINA REDUNDANCIA NOS DADOS A CARREGAR : NAO PODEM EXISTIR DOIS REGISTROS CITANDO UM MESMO CODIGO TUSS;
UPDATE TD_LOAD_TUSS_MAT SET COD_REPETIDO = 0 ;

UPDATE TD_LOAD_TUSS_MAT SET MIN_ID_CDTUSS = (
SELECT MIN(B.ID) FROM TD_LOAD_TUSS_MAT B
WHERE
B.CODIGOTUSS = TD_LOAD_TUSS_MAT.CODIGOTUSS
);

UPDATE TD_LOAD_TUSS_MAT SET COD_REPETIDO = 1 WHERE ID <> MIN_ID_CDTUSS;

-- INSERE REGISTRO NA SCCCODE ;
INSERT INTO SCCCODE (CODENAME , ALTERNATENAME , IDTABLE, CODECONDITION, CANCELED )
SELECT (SUBSTRING( (TERMO || ' - ' || REF_FABRICANTE),1,100) || ' (' || SUBSTRING(FABRICANTE,1,47) || ')' ) AS CODENAME ,
CODIGOTUSS AS ALTERNATENAME ,
(SELECT MAX(ID) FROM SCCTABLE WHERE TABLENAME = 'TCTUSS') AS IDTABLE ,
0 AS CODECONDITION ,
0 AS CANCELED
FROM TD_LOAD_TUSS_MAT
WHERE CODIGOTUSS NOT IN ( SELECT DISTINCT ALTERNATENAME FROM SCCCODE WHERE IDTABLE = (SELECT MAX(ID) FROM SCCTABLE WHERE TABLENAME = 'TCTUSS') AND ALTERNATENAME IS NOT NULL )
AND COD_REPETIDO = 0 AND CODIGOTUSS IS NOT NULL AND CODIGOTUSS <> '' AND REF_FABRICANTE IS NOT NULL;


-- INSERE REGISTRO NA TCTUSS ;
INSERT INTO TCTUSS ( IDCODE, CDIGO_TUSS )
SELECT ID, ALTERNATENAME
FROM SCCCODE
WHERE
IDTABLE = (SELECT MAX(ID) FROM SCCTABLE WHERE TABLENAME = 'TCTUSS')
AND ID NOT IN (SELECT DISTINCT IDCODE FROM TCTUSS );


-- INSERE REGISTRO NA TCReg_Cob_Proced_H ;
-- NOTA: EM ALGUMAS BASES ANTIGAS O NOME DESSA TABELA PODE ESTAR DIFERENTE (EXEMPLO : TCReg_Cob_Proced_);

INSERT INTO TCReg_Cob_Proced_H (IDCODE)
SELECT DISTINCT IDCODE FROM TCTUSS WHERE IDCODE NOT IN ( SELECT DISTINCT IDCODE FROM TCReg_Cob_Proced_H) ;

-- RETIRA ACENTOS NO CODENAME NO TUSS ;

UPDATE SCCCODE SET CODENAME = REPLACE(CODENAME, 'Á','A') WHERE IDTABLE = (SELECT MAX(ID) FROM SCCTABLE WHERE TABLENAME = 'TCTUSS');
UPDATE SCCCODE SET CODENAME = REPLACE(CODENAME, 'Ó','O') WHERE IDTABLE = (SELECT MAX(ID) FROM SCCTABLE WHERE TABLENAME = 'TCTUSS');
UPDATE SCCCODE SET CODENAME = REPLACE(CODENAME, 'Ã','A') WHERE IDTABLE = (SELECT MAX(ID) FROM SCCTABLE WHERE TABLENAME = 'TCTUSS');
UPDATE SCCCODE SET CODENAME = REPLACE(CODENAME, 'Ê','E') WHERE IDTABLE = (SELECT MAX(ID) FROM SCCTABLE WHERE TABLENAME = 'TCTUSS');
UPDATE SCCCODE SET CODENAME = REPLACE(CODENAME, 'É','E') WHERE IDTABLE = (SELECT MAX(ID) FROM SCCTABLE WHERE TABLENAME = 'TCTUSS');
UPDATE SCCCODE SET CODENAME = REPLACE(CODENAME, 'Í','I') WHERE IDTABLE = (SELECT MAX(ID) FROM SCCTABLE WHERE TABLENAME = 'TCTUSS');
UPDATE SCCCODE SET CODENAME = REPLACE(CODENAME, 'Ú','U') WHERE IDTABLE = (SELECT MAX(ID) FROM SCCTABLE WHERE TABLENAME = 'TCTUSS');
UPDATE SCCCODE SET CODENAME = REPLACE(CODENAME, 'Ô','O') WHERE IDTABLE = (SELECT MAX(ID) FROM SCCTABLE WHERE TABLENAME = 'TCTUSS');



IMPORTANTE: Após cadastrar o script na sua sua base estando na interface F00161 selecione o script “TUSS Carga Materiais” conforme ilustrado abaixo e navegue para a aba aba “Arquivo de Configuração” :





Copie e cole as seguintes configurações:

LoadToTemp=3
StartLine=7
SkipError=True
Trace=On
Delimiter=|
FileName=*.txt



Nota:
No momento da primeira referenciação ao script o IW deverá criar automaticamente o diretório no servidor de aplicação do IW no qual deverá ser posicionado o arquivo .txt contendo a tabela de codigos de materiais do TUSS que foi obtida do site da ANS conforme descrito anteriormente. Nominalmente esse diretório será o seguinte: D:\IW\IMPORT\TD_LOAD_TUSS_MAT\TD_LOAD_TUSS_MAT\<nome_seu_arquivo_dados_mat_tuss.txt>



(4) Para cadastrar os scripts de carga das tabelas TUSS Medicamentos


Clique na opção <edit> do combo box no canto superior dessa interface o IW irá exibir a caixa de diálogo F0149 através da qual será possível cadastrar um novo script. A figura a seguir ilustra essa caixa de diálogo:





Coluna ID: Deixe em branco (o IW irá gerar um ID automáticamente, o ID do script na sua instalação poderá ser diferente do valor ilustrado nesse exemplo)
Nome: Valore com exatamente como ilustrado acima : TUSS Carga Medicamentos

Nome Tabela: Selecione a tabella TD_LOAD_TUSS_MED
Diretório: Valore conforme ilustrado acima: TD_LOAD_TUSS_MED

Tipo Importação: Arquivo
Comando SQL: Nesse atributo deverá ser lançado o seguinte conteúdo:


Sintaxe Oracle:

-- -----------------------------------------------------------------------------------------------------------------------;
-- DRIVER PARA LEITURA DA TABELA TUSS: MEDICAMENTOS (TABELA 20 DO TUSS) ;
-- -----------------------------------------------------------------------------------------------------------------------;

-- INSERE DADOS DA TABELA TEMPORARIA NA TABELA TD_LOAD_TUSS_MED;
DELETE FROM TD_LOAD_TUSS_MED;

INSERT INTO TD_LOAD_TUSS_MED ( CODIGOTUSS, TERMO, APRESENTACAO,FABRICANTE, DATA_INI_VIG,DATA_FIM_VIG, DATA_FIM_IMPL )
SELECT CODIGOTUSS, TERMO, APRESENTACAO,FABRICANTE, DATA_INI_VIG,DATA_FIM_VIG, DATA_FIM_IMPL
FROM TmpTD_LOAD_TUSS_MED;

-- EXECUTA TRIM SOBRE AS COLUNAS LIDAS;
UPDATE TmpTD_LOAD_TUSS_MED SET TERMO = TRIM(TERMO);
UPDATE TmpTD_LOAD_TUSS_MED SET APRESENTACAO = TRIM(APRESENTACAO);
UPDATE TmpTD_LOAD_TUSS_MED SET FABRICANTE = TRIM(FABRICANTE);

UPDATE TMPTD_LOAD_TUSS_MED SET TERMO = ' - ' WHERE TERMO IS NULL;
UPDATE TmpTD_LOAD_TUSS_MED SET APRESENTACAO = ' - ' WHERE APRESENTACAO IS NULL;
UPDATE TmpTD_LOAD_TUSS_MED SET FABRICANTE = ' - ' WHERE FABRICANTE IS NULL;


-- ELIMINA REDUNDANCIA NOS DADOS A CARREGAR : NAO PODEM EXISTIR DOIS REGISTROS CITANDO UM MESMO CODIGO TUSS;
UPDATE TD_LOAD_TUSS_MED SET COD_REPETIDO = 0 ;

UPDATE TD_LOAD_TUSS_MED SET MIN_ID_CDTUSS = (
SELECT MIN(B.ID) FROM TD_LOAD_TUSS_MED B
WHERE
B.CODIGOTUSS = TD_LOAD_TUSS_MED.CODIGOTUSS
);

UPDATE TD_LOAD_TUSS_MED SET COD_REPETIDO = 1 WHERE ID <> MIN_ID_CDTUSS;

-- INSERE REGISTRO NA SCCCODE ;
INSERT INTO SCCCODE (CODENAME , ALTERNATENAME , IDTABLE, CODECONDITION, CANCELED )
SELECT (SUBSTR( (TERMO || ' ' || APRESENTACAO ),1,100) || ' (' || SUBSTR(FABRICANTE,1,47) || ')' ) AS CODENAME ,
CODIGOTUSS AS ALTERNATENAME ,
(SELECT MAX(ID) FROM SCCTABLE WHERE TABLENAME = 'TCTUSS') AS IDTABLE ,
0 AS CODECONDITION ,
0 AS CANCELED
FROM TD_LOAD_TUSS_MED
WHERE CODIGOTUSS NOT IN ( SELECT DISTINCT ALTERNATENAME FROM SCCCODE WHERE IDTABLE = (SELECT MAX(ID) FROM SCCTABLE WHERE TABLENAME = 'TCTUSS') AND ALTERNATENAME IS NOT NULL )
AND COD_REPETIDO = 0 AND CODIGOTUSS IS NOT NULL AND CODIGOTUSS <> '' ;

-- INSERE REGISTRO NA TCTUSS ;
INSERT INTO TCTUSS ( IDCODE, CDIGO_TUSS )
SELECT ID, ALTERNATENAME
FROM SCCCODE
WHERE
IDTABLE = (SELECT MAX(ID) FROM SCCTABLE WHERE TABLENAME = 'TCTUSS')
AND ID NOT IN (SELECT DISTINCT IDCODE FROM TCTUSS );

-- INSERE REGISTRO NA TCReg_Cob_Proced_H ;
-- NOTA: EM ALGUMAS BASES ANTIGAS O NOME DESSA TABELA PODE ESTAR DIFERENTE (EXEMPLO : TCReg_Cobr_Proced_);

INSERT INTO TCReg_Cob_Proced_H (IDCODE)
SELECT DISTINCT IDCODE FROM TCTUSS WHERE IDCODE NOT IN ( SELECT DISTINCT IDCODE FROM TCReg_Cob_Proced_H) ;



-- RETIRA ACENTOS NO CODENAME NO TUSS ;

UPDATE SCCCODE SET CODENAME = REPLACE(CODENAME, 'Á','A') WHERE IDTABLE = (SELECT MAX(ID) FROM SCCTABLE WHERE TABLENAME = 'TCTUSS');
UPDATE SCCCODE SET CODENAME = REPLACE(CODENAME, 'Ó','O') WHERE IDTABLE = (SELECT MAX(ID) FROM SCCTABLE WHERE TABLENAME = 'TCTUSS');
UPDATE SCCCODE SET CODENAME = REPLACE(CODENAME, 'Ã','A') WHERE IDTABLE = (SELECT MAX(ID) FROM SCCTABLE WHERE TABLENAME = 'TCTUSS');
UPDATE SCCCODE SET CODENAME = REPLACE(CODENAME, 'Ê','E') WHERE IDTABLE = (SELECT MAX(ID) FROM SCCTABLE WHERE TABLENAME = 'TCTUSS');
UPDATE SCCCODE SET CODENAME = REPLACE(CODENAME, 'É','E') WHERE IDTABLE = (SELECT MAX(ID) FROM SCCTABLE WHERE TABLENAME = 'TCTUSS');
UPDATE SCCCODE SET CODENAME = REPLACE(CODENAME, 'Í','I') WHERE IDTABLE = (SELECT MAX(ID) FROM SCCTABLE WHERE TABLENAME = 'TCTUSS');
UPDATE SCCCODE SET CODENAME = REPLACE(CODENAME, 'Ú','U') WHERE IDTABLE = (SELECT MAX(ID) FROM SCCTABLE WHERE TABLENAME = 'TCTUSS');
UPDATE SCCCODE SET CODENAME = REPLACE(CODENAME, 'Ô','O') WHERE IDTABLE = (SELECT MAX(ID) FROM SCCTABLE WHERE TABLENAME = 'TCTUSS');


Sintaxe SQLSERVER:

-- -----------------------------------------------------------------------------------------------------------------------;
-- DRIVER PARA LEITURA DA TABELA TUSS: MEDICAMENTOS (TABELA 20 DO TUSS) ;
-- -----------------------------------------------------------------------------------------------------------------------;

-- INSERE DADOS DA TABELA TEMPORARIA NA TABELA TD_LOAD_TUSS_MED;
DELETE FROM TD_LOAD_TUSS_MED;

INSERT INTO TD_LOAD_TUSS_MED ( CODIGOTUSS, TERMO, APRESENTACAO,FABRICANTE, DATA_INI_VIG,DATA_FIM_VIG, DATA_FIM_IMPL )
SELECT CODIGOTUSS, TERMO, APRESENTACAO,FABRICANTE, DATA_INI_VIG,DATA_FIM_VIG, DATA_FIM_IMPL
FROM TmpTD_LOAD_TUSS_MED;

-- EXECUTA TRIM SOBRE AS COLUNAS LIDAS;
UPDATE TmpTD_LOAD_TUSS_MED SET TERMO = RTRIM(TERMO);
UPDATE TmpTD_LOAD_TUSS_MED SET APRESENTACAO = RTRIM(APRESENTACAO);
UPDATE TmpTD_LOAD_TUSS_MED SET FABRICANTE = RTRIM(FABRICANTE);

UPDATE TmpTD_LOAD_TUSS_MED SET TERMO = LTRIM(TERMO);
UPDATE TmpTD_LOAD_TUSS_MED SET APRESENTACAO = LTRIM(APRESENTACAO);
UPDATE TmpTD_LOAD_TUSS_MED SET FABRICANTE = LTRIM(FABRICANTE);

UPDATE TMPTD_LOAD_TUSS_MED SET TERMO = ' - ' WHERE TERMO IS NULL;
UPDATE TmpTD_LOAD_TUSS_MED SET APRESENTACAO = ' - ' WHERE APRESENTACAO IS NULL;
UPDATE TmpTD_LOAD_TUSS_MED SET FABRICANTE = ' - ' WHERE FABRICANTE IS NULL;

-- ELIMINA REDUNDANCIA NOS DADOS A CARREGAR : NAO PODEM EXISTIR DOIS REGISTROS CITANDO UM MESMO CODIGO TUSS;
UPDATE TD_LOAD_TUSS_MED SET COD_REPETIDO = 0 ;

UPDATE TD_LOAD_TUSS_MED SET MIN_ID_CDTUSS = (
SELECT MIN(B.ID) FROM TD_LOAD_TUSS_MED B
WHERE
B.CODIGOTUSS = TD_LOAD_TUSS_MED.CODIGOTUSS
);

UPDATE TD_LOAD_TUSS_MED SET COD_REPETIDO = 1 WHERE ID <> MIN_ID_CDTUSS;

-- INSERE REGISTRO NA SCCCODE ;
INSERT INTO SCCCODE (CODENAME , ALTERNATENAME , IDTABLE, CODECONDITION, CANCELED )
SELECT (SUBSTRING( (TERMO || ' ' || APRESENTACAO ),1,100) || ' (' || SUBSTRING(FABRICANTE,1,47) || ')' ) AS CODENAME ,
CODIGOTUSS AS ALTERNATENAME ,
(SELECT MAX(ID) FROM SCCTABLE WHERE TABLENAME = 'TCTUSS') AS IDTABLE ,
0 AS CODECONDITION ,
0 AS CANCELED
FROM TD_LOAD_TUSS_MED
WHERE CODIGOTUSS NOT IN ( SELECT DISTINCT ALTERNATENAME FROM SCCCODE WHERE IDTABLE = (SELECT MAX(ID) FROM SCCTABLE WHERE TABLENAME = 'TCTUSS') AND ALTERNATENAME IS NOT NULL )
AND COD_REPETIDO = 0 AND CODIGOTUSS IS NOT NULL AND CODIGOTUSS <> ''
AND FABRICANTE IS NOT NULL
AND TERMO IS NOT NULL
AND APRESENTACAO IS NOT NULL ;

-- INSERE REGISTRO NA TCTUSS ;
INSERT INTO TCTUSS ( IDCODE, CDIGO_TUSS )
SELECT ID, ALTERNATENAME
FROM SCCCODE
WHERE
IDTABLE = (SELECT MAX(ID) FROM SCCTABLE WHERE TABLENAME = 'TCTUSS')
AND ID NOT IN (SELECT DISTINCT IDCODE FROM TCTUSS );

-- INSERE REGISTRO NA TCReg_Cob_Proced_H ;
-- NOTA: EM ALGUMAS BASES ANTIGAS O NOME DESSA TABELA PODE ESTAR DIFERENTE (EXEMPLO : TCReg_Cobr_Proced_);

INSERT INTO TCReg_Cob_Proced_H (IDCODE)
SELECT DISTINCT IDCODE FROM TCTUSS WHERE IDCODE NOT IN ( SELECT DISTINCT IDCODE FROM TCReg_Cob_Proced_H) ;



-- RETIRA ACENTOS NO CODENAME NO TUSS ;

UPDATE SCCCODE SET CODENAME = REPLACE(CODENAME, 'Á','A') WHERE IDTABLE = (SELECT MAX(ID) FROM SCCTABLE WHERE TABLENAME = 'TCTUSS');
UPDATE SCCCODE SET CODENAME = REPLACE(CODENAME, 'Ó','O') WHERE IDTABLE = (SELECT MAX(ID) FROM SCCTABLE WHERE TABLENAME = 'TCTUSS');
UPDATE SCCCODE SET CODENAME = REPLACE(CODENAME, 'Ã','A') WHERE IDTABLE = (SELECT MAX(ID) FROM SCCTABLE WHERE TABLENAME = 'TCTUSS');
UPDATE SCCCODE SET CODENAME = REPLACE(CODENAME, 'Ê','E') WHERE IDTABLE = (SELECT MAX(ID) FROM SCCTABLE WHERE TABLENAME = 'TCTUSS');
UPDATE SCCCODE SET CODENAME = REPLACE(CODENAME, 'É','E') WHERE IDTABLE = (SELECT MAX(ID) FROM SCCTABLE WHERE TABLENAME = 'TCTUSS');
UPDATE SCCCODE SET CODENAME = REPLACE(CODENAME, 'Í','I') WHERE IDTABLE = (SELECT MAX(ID) FROM SCCTABLE WHERE TABLENAME = 'TCTUSS');
UPDATE SCCCODE SET CODENAME = REPLACE(CODENAME, 'Ú','U') WHERE IDTABLE = (SELECT MAX(ID) FROM SCCTABLE WHERE TABLENAME = 'TCTUSS');
UPDATE SCCCODE SET CODENAME = REPLACE(CODENAME, 'Ô','O') WHERE IDTABLE = (SELECT MAX(ID) FROM SCCTABLE WHERE TABLENAME = 'TCTUSS');



IMPORTANTE: Após cadastrar o script na sua sua base estando na interface F00161 selecione o script “TUSS Carga Medicamentos” conforme ilustrado abaixo e navegue para a aba aba “Arquivo de Configuração” :




Copie e cole as seguintes configurações:


LoadToTemp=3
StartLine=7
SkipError=True
Trace=On
Delimiter=|
FileName=*.txt


Nota: No momento da primeira referenciação ao script o IW deverá criar automaticamente o diretório no servidor de aplicação do IW no qual deverá ser posicionado o arquivo .txt contendo a tabela de codigos de medicamentos do TUSS que foi obtida do site da ANS conforme descrito anteriormente. Nominalmente esse diretório será o seguinte: D:\IW\IMPORT\TD_LOAD_TUSS_MED\TD_LOAD_TUSS_MED\<nome_seu_arquivo_dados_medicamentos_tuss.txt>