Você está na página 1de 7

// IMPORTADOS

utilString = Scripts.util_string.importar();

// ESQUEMA
esquema = [
profissionalMedico: Esquema.caracter,
contagemImovel: Esquema.numero,
contagemCadastro: Esquema.numero,
totalContagemImovel: Esquema.numero,
totalContagemCadastro: Esquema.numero,
]

// FONTE DE DADOS
fonte = Dados.dinamico.v2.novo(esquema)
fonteDomiciliarTerritorialImovel = Dados.saude.v1.domiciliarTerritorialImovel
fonteDomiciliarTerritorialCadastroIndividual =
Dados.saude.v1.domiciliarTerritorialCadastroIndividual
fonteProfissionalCbo = Dados.saude.v1.profissionalCbo

// PARÂMETROS
pUnidade =
utilString.removeColchetes(parametros?.pUnidade?.selecionados?.valor?:"");
pProfissional =
utilString.removeColchetes(parametros?.pProfissional?.selecionados?.valor?:"");
pEquipe = utilString.removeColchetes(parametros?.pEquipe?.selecionados?.valor?:"");
pSituacao = parametros?.pSituacao?.selecionados?.valor?:"";

boolean isContemAtual = false;


boolean isContemAnterior = false;
boolean isContemCancelado = false;
boolean isContemAlcool = false;
boolean isteveDiagnosticoProblemaSaudeMental = false;
boolean isusaOutrasDrogas = false;
boolean isteveHipertensaoArterial = false;
boolean ispossuiTeveCancer = false;
boolean isacamado = false;
boolean ispossuiTuberculose = false;
boolean isgestante = false;
boolean ispossuiHanseniase = false;
boolean isteveInfarto = false;
boolean isteveAvcDerrame = false;
boolean isusaPlantasMedicinais = false;
boolean isteveDiabetes = false;
boolean isdomiciliado = false;
boolean ispossuiTeveProblemaRins = false;
boolean ispossuiDoencaCardiaca = false;
boolean isinternacaoUltimosDozeMeses = false;
boolean isusaPraticasIntegrativasComplementares = false;
boolean isteveDoencaoRespiratoria = false;
boolean isfumante = false;

// VARIAVEIS GLOBAIS
def contagemProfissionais = [:]
def unidadeNome = ""
def contagemCadastro = ""
def profissionalMedico = ""
def totalContagemImovel = 0
def totalContagemCadastro = 0
criterioDomiciliar = "ultimaVersao = true"
if (pProfissional){
criterioDomiciliar += " and profissional.id in (${pProfissional})"
}

if (pEquipe){
criterioDomiciliar += " and equipe.id in (${pEquipe})"
}

se (pSituacao != ""){
percorrer (pSituacao) { valor ->

se (valor == "usaAlcool"){
isContemAlcool = true;
}
se (valor == 'teveDiagnosticoProblemaSaudeMental'){
isteveDiagnosticoProblemaSaudeMental = true;
}
se (valor == 'usaOutrasDrogas'){
isusaOutrasDrogas = true;
}
se (valor =='teveHipertensaoArterial'){
isteveHipertensaoArterial = true;
}
se (valor == 'possuiTeveCancer'){
ispossuiTeveCancer = true;
}
se (valor == 'acamado'){
isacamado = true;
}
se (valor == 'possuiTuberculose'){
ispossuiTuberculose == true;
}
se (valor == 'gestante'){
isgestante = true;
}
se (valor == 'possuiHanseniase'){
ispossuiHanseniase = true;
}
se (valor == 'teveInfarto'){
isteveInfarto = true;
}
se (valor == 'teveAvcDerrame'){
isteveAvcDerrame = true;
}
se (valor == 'usaPlantasMedicinais'){
isusaPlantasMedicinais = true;
}
se (valor == 'teveDiabetes'){
isteveDiabetes = true;
}
se (valor == 'domiciliado'){
isdomiciliado = true;
}
se (valor == 'possuiTeveProblemaRins'){
ispossuiTeveProblemaRins = true;
}
se (valor == 'possuiDoencaCardiaca'){
ispossuiDoencaCardiaca = true;
}
se (valor == 'internacaoUltimosDozeMeses'){
isinternacaoUltimosDozeMeses = true;
}
se (valor == 'usaPraticasIntegrativasComplementares'){
isusaPraticasIntegrativasComplementares = true;
}
se (valor == 'teveDoencaoRespiratoria'){
isteveDoencaoRespiratoria = true;
}
se (valor == 'fumante'){
isfumante = true;
}
}
}

filtro = "ultimaVersao = true"


se (isContemAlcool == true) {
se(filtro == ""){
filtro += " usaAlcool = true ";
}senao{
filtro += " and usaAlcool = true ";
}
}

se (isteveDiagnosticoProblemaSaudeMental == true) {
se(filtro == ""){
filtro += " teveDiagnosticoProblemaSaudeMental = true ";
}senao{
filtro += " and teveDiagnosticoProblemaSaudeMental = true ";
}
}

se (isusaOutrasDrogas == true) {
se(filtro == ""){
filtro += " usaOutrasDrogas = true ";
}senao{
filtro += " and usaOutrasDrogas = true ";
}
}

se (isteveHipertensaoArterial == true) {
se(filtro == ""){
filtro += " teveHipertensaoArterial = true ";
}senao{
filtro += " and teveHipertensaoArterial = true ";
}
}

se (ispossuiTeveCancer == true) {
se(filtro == ""){
filtro += " possuiTeveCancer = true ";
}senao{
filtro += " and possuiTeveCancer = true ";
}
}

se (isacamado == true) {
se(filtro == ""){
filtro += " acamado = true ";
}senao{
filtro += " and acamado = true ";
}
}

se (ispossuiTuberculose == true) {
se(filtro == ""){
filtro += " possuiTuberculose = true ";
}senao{
filtro += " and possuiTuberculose = true ";
}
}

se (isgestante == true) {
se(filtro == ""){
filtro += " gestante = true ";
}senao{
filtro += " and gestante = true ";
}
}

se (ispossuiHanseniase == true) {
se(filtro == ""){
filtro += " possuiHanseniase = true ";
}senao{
filtro += " and possuiHanseniase = true ";
}
}

se (isteveInfarto == true) {
se(filtro == ""){
filtro += " teveInfarto = true ";
}senao{
filtro += " and teveInfarto = true ";
}
}

se (isteveAvcDerrame == true) {
se(filtro == ""){
filtro += " teveAvcDerrame = true ";
}senao{
filtro += " and teveAvcDerrame = true ";
}
}

se (isusaPlantasMedicinais == true) {
se(filtro == ""){
filtro += " usaPlantasMedicinais = true ";
}senao{
filtro += " and usaPlantasMedicinais = true ";
}
}

se (isteveDiabetes == true) {
se(filtro == ""){
filtro += " teveDiabetes = true ";
}senao{
filtro += " and teveDiabetes = true ";
}
}

se (isdomiciliado == true) {
se(filtro == ""){
filtro += " domiciliado = true ";
}senao{
filtro += " and domiciliado = true ";
}
}

se (ispossuiTeveProblemaRins == true) {
se(filtro == ""){
filtro += " possuiTeveProblemaRins = true ";
}senao{
filtro += " and possuiTeveProblemaRins = true ";
}
}
se (ispossuiDoencaCardiaca == true) {
se(filtro == ""){
filtro += " possuiDoencaCardiaca = true ";
}senao{
filtro += " and possuiDoencaCardiaca = true ";
}
}

se (isinternacaoUltimosDozeMeses == true) {
se(filtro == ""){
filtro += " internacaoUltimosDozeMeses = true ";
}senao{
filtro += " and internacaoUltimosDozeMeses = true ";
}
}

se (isusaPraticasIntegrativasComplementares == true) {
se(filtro == ""){
filtro += " usaPraticasIntegrativasComplementares = true ";
}senao{
filtro += " and usaPraticasIntegrativasComplementares = true ";
}
}

se (isteveDoencaoRespiratoria == true) {
se(filtro == ""){
filtro += " teveDoencaoRespiratoria = true ";
}senao{
filtro += " and teveDoencaoRespiratoria = true ";
}
}

se (isfumante == true) {
se(filtro == ""){
filtro += " fumante = true ";
}senao{
filtro += " and fumante = true ";
}
}

dadosDomiciliarTerritorialImovel = fonteDomiciliarTerritorialImovel.busca(campos:
"id, profissional(id, nome), equipe(id, nome)", criterio: criterioDomiciliar)
percorrer (dadosDomiciliarTerritorialImovel) { imoveis ->

filtroAlternativo = ""
filtroAlternativo += filtro + " and profissional.id in
($imoveis.profissional.id)"

filtroProfissionalCbo = "profissional.id in ($imoveis.profissional.id)"


if (pUnidade){
filtroProfissionalCbo += " and unidade.id in (${pUnidade})"
}

dadosProfissionalCbo = fonteProfissionalCbo.busca(campos: "profissional(nome),


unidade(id, nome)", criterio: filtroProfissionalCbo)
percorrer (dadosProfissionalCbo) { cbo ->
unidadeNome = cbo.unidade.nome
}

profissionalMedico = imoveis.profissional.nome
contagemImovel = imoveis.profissional.nome

chave = [nomeProfissional: imoveis.profissional.id]

if(!contagemProfissionais[chave]){

totalImoveisProfissional = fonteDomiciliarTerritorialImovel.busca(campos: "id,


profissional(id, nome), equipe(id, nome)", criterio: "profissional.id =
$imoveis.profissional.id and ultimaVersao = true and cancelado = false")

dadosDomiciliarTerritorialCadastroIndividual =
fonteDomiciliarTerritorialCadastroIndividual.busca(criterio: "profissional.id =
$imoveis.profissional.id and ultimaVersao = true and cancelado = false", campos:
"cliente.nome")

contagemProfissionais[chave] = [contagemImovel:
totalImoveisProfissional.size(),contagemCadastro:
dadosDomiciliarTerritorialCadastroIndividual.size(),profissionalMedico:imoveis.prof
issional.nome]
}
}

contagemProfissionais.each { key, value ->


linha = [
profissionalMedico: value.profissionalMedico,
contagemImovel: value.contagemImovel,
contagemCadastro: value.contagemCadastro,
]
totalContagemImovel += value.contagemImovel;
totalContagemCadastro += value.contagemCadastro;

fonte.inserirLinha(linha)
imprimir JSON.escrever(linha)
}

def totalContagem = [
totalContagemImovel: totalContagemImovel,
totalContagemCadastro: totalContagemCadastro
]
fonte.inserirLinha(totalContagem)
imprimir JSON.escrever(totalContagem)

retornar fonte

Você também pode gostar