Você está na página 1de 5

// IMPORTADOS

utilString = Scripts.util_string.importar();
utilEndereco = Scripts.util_endereco.importar();

// ESQUEMA
esquema = [
id: Esquema.numero,
analiticoExtra: Esquema.caracter,
idUnidade: Esquema.numero,
nomeUnidade: Esquema.caracter,
listProfisisonal: Esquema.lista(
Esquema.objeto([
idProfissional: Esquema.numero,
nomeProfissional: Esquema.caracter,
listProcedimento: Esquema.lista(
Esquema.objeto([
descricaoProcedimento: Esquema.caracter,
codigoProcedimento: Esquema.caracter,
quantidadeTProcedimento: Esquema.numero,
valorTProcedimento: Esquema.numero,
valorProc: Esquema.caracter,
listProcedimentoData: Esquema.lista(
Esquema.objeto([
descricaoProcedimento: Esquema.caracter,
horaregistro: Esquema.caracter,
codigoProcedimento: Esquema.caracter,
valorUnProcedimento: Esquema.numero,
valorProcedimento: Esquema.numero,
quantidadeProcedimento: Esquema.numero,
analitico: Esquema.caracter,
procedimentoData: Esquema.caracter,
cliente: Esquema.caracter,
cnsCliente: Esquema.caracter,
sexoCliente: Esquema.caracter,
idade: Esquema.numero,
valorProc: Esquema.caracter
])
)
])
)
])
)
]

fonteDinamica = Dados.dinamico.v2.novo(esquema)

// PARAMETROS
hoje = Datas.hoje()
horaInicial = parametros.horaInicial?.selecionado?.valor;
horaFinal = parametros.horaFinal?.selecionado?.valor;
dataInicialP = parametros.periodoInicial.valor.formatar('dd-MM-yyyy');
dataFinalP = parametros.periodoFinal.valor.formatar('dd-MM-yyyy');
idUnidadeP =
utilString.removeColchetes(parametros?.idUnidade?.selecionados?.valor?:""); //Lista
multipla
idProfissional =
utilString.removeColchetes(parametros.idProfissional?.selecionados?.valor?:"");
//Lista multipla
idEspecialidadeP =
utilString.removeColchetes(parametros?.idEspecialidade?.selecionados?.valor?:""); /
/Lista multipla
idGrupoProcedimentoP = parametros.idGrupoProcedimento?.selecionado?.valor;
idProcedimentos =
utilString.removeColchetes(parametros?.idProcedimentos?.selecionados?.valor?:""); /
/Lista multipla
analiticoP = parametros.analitico?.selecionado?.valor;
valorProcP = parametros.valorProc?.selecionado?.valor;
atendimentoP = parametros.atendimento?.selecionado?.valor;
sexoP = parametros.sexo?.selecionado?.valor;
idadeDeAnos = parametros.idadeInicialAnos?.valor;
idadeDeMeses = parametros.idadeInicialMeses?.valor;
idadeDeDias = parametros.idadeInicialDias?.valor;
idadeAteAnos = parametros.idadeFinalAnos?.valor;
idadeAteMeses = parametros.idadeFinalMeses?.valor;
idadeAteDias = parametros.idadeFinalDias?.valor;

// VARIAVEIS GLOBAIS
totalProcedimentoMap = [:]
procedimentoDataMap = [:]
procedimentoMap = [:]
profissionalMap = [:]
unidadeMap = [:]

dataInicial = hoje
se (!!idadeAteAnos) {dataInicial = Datas.removeMeses(dataInicial, 12 *
idadeAteAnos)}
se (!!idadeAteMeses) {dataInicial = Datas.removeMeses(dataInicial, idadeAteMeses)}
se (!!idadeAteDias) {dataInicial = Datas.removeDias(dataInicial, idadeAteDias)}
dataInicial = dataInicial.formatar('yyyy-MM-dd')

dataFinal = hoje
se (!!idadeDeAnos) {dataFinal = Datas.removeMeses(dataFinal, 12 * idadeDeAnos)}
se (!!idadeDeMeses) {dataFinal = Datas.removeMeses(dataFinal, idadeDeMeses)}
se (!!idadeDeDias) {dataFinal = Datas.removeDias(dataFinal, idadeDeDias)}
dataFinal= dataFinal.formatar('yyyy-MM-dd')

filtro = "dataRegistro >= $dataInicialP and dataRegistro <= $dataFinalP"


se (!!idUnidadeP){
filtro += " and unidade.id in ($idUnidadeP)"
}
se (!!idProfissional){
filtro += " and profissionalExecutante.id in ($idProfissional)"
}
se (!!idEspecialidadeP){
filtro += " and atendimento.id is not null and atendimento.especialidade.id in
($idEspecialidadeP)"
}
se (!!idGrupoProcedimentoP){
filtro += " and procedimento.grupo.id in ($idGrupoProcedimentoP)"
}
se (!!idProcedimentos){
filtro += " and procedimento.id in ($idProcedimentos)"
}
se (!!sexoP){
filtro += " and cliente.id is not null and cliente.sexo in ($sexoP)"
}
se (!dataInicial.equals(hoje.formatar('yyyy-MM-dd'))) {filtro += " and cliente.id
is not null and cliente.dataNascimento >= $dataInicial "}
se (!dataFinal.equals(hoje.formatar('yyyy-MM-dd'))) {filtro += " and
cliente.dataNascimento <= $dataFinal "}

fonteDinamica = Dados.dinamico.v2.novo(esquema)
fonteProcedimentosRealizado = Dados.saude.v1.procedimentosRealizado;
dadosProcedimentosRealizado = fonteProcedimentosRealizado.busca(criterio: filtro,
campos: "id, quantidade, dataHoraRegistro, dataRegistro, horaRegistro, origem,
unidade(id, nome, unidadeFaturamento(id, nome), motivo(id, descricao)),
atendimento(especialidade(id, descricao)), profissionalExecutante(id, nome),
procedimento(id, valorSA, codigoProcedimento, descricao, grupo(id)), cliente(id,
nome, dataNascimento, idade, sexo, cns)")
percorrer (dadosProcedimentosRealizado) { itemProcedimentosRealizado ->
idUnidade = itemProcedimentosRealizado.unidade.id
nomeUnidade = itemProcedimentosRealizado.unidade.nome
idProfissional = itemProcedimentosRealizado.profissionalExecutante.id
nomeProfissional = itemProcedimentosRealizado.profissionalExecutante.nome
idProcedimento = itemProcedimentosRealizado.procedimento.id
descricaoProcedimento = itemProcedimentosRealizado.procedimento.descricao
codigoProcedimento = itemProcedimentosRealizado.procedimento.id
procedimentoData = itemProcedimentosRealizado.id
keyUnidade = idUnidade.toString()
keyProfissional = keyUnidade+"|"+idProfissional
KeyProcedimento = keyProfissional+"|"+idProcedimento
KeyProcedimentoData = KeyProcedimento+"|"+procedimentoData
totalProcedimentoMap[keyUnidade] = totalProcedimentoMap.get(keyUnidade,0) + 1
totalProcedimentoMap[keyProfissional] =
totalProcedimentoMap.get(keyProfissional,0) + 1
totalProcedimentoMap[KeyProcedimento] =
totalProcedimentoMap.get(KeyProcedimento,0) + 1
totalProcedimentoMap[KeyProcedimentoData] =
totalProcedimentoMap.get(KeyProcedimentoData,0) + 1
}

percorrer (dadosProcedimentosRealizado) { itemProcedimentosRealizado ->


idUnidade = itemProcedimentosRealizado.unidade.id
nomeUnidade = itemProcedimentosRealizado.unidade.nome
idProfissional = itemProcedimentosRealizado.profissionalExecutante.id
nomeProfissional = itemProcedimentosRealizado.profissionalExecutante.nome
idProcedimento = itemProcedimentosRealizado.procedimento.id
descricaoProcedimento = itemProcedimentosRealizado.procedimento.descricao
codigoProcedimento = itemProcedimentosRealizado.procedimento.id
procedimentoData = itemProcedimentosRealizado.id
keyUnidade = idUnidade.toString()
keyProfissional = keyUnidade+"|"+idProfissional
KeyProcedimento = keyProfissional+"|"+idProcedimento
KeyProcedimentoData = KeyProcedimento+"|"+procedimentoData

se (!procedimentoDataMap[KeyProcedimentoData] && analiticoP == 'S'/* &&


idEspecialidadeP != null*/ ) {
valorUnProcedimento = 0
quantidadeProcedimento : totalProcedimentoMap[KeyProcedimentoData]
se (valorProcP == 'S') {
valorUnProcedimento = itemProcedimentosRealizado.procedimento.valorSA
valorProcedimento = itemProcedimentosRealizado.procedimento.valorSA *
totalProcedimentoMap[KeyProcedimentoData]
}
procedimentoDataMap[KeyProcedimentoData] = [
codigoProcedimento :
itemProcedimentosRealizado.procedimento.codigoProcedimento,
descricaoProcedimento : itemProcedimentosRealizado.procedimento.descricao,
horaregistro: itemProcedimentosRealizado.horaRegistro,
procedimentoData :
itemProcedimentosRealizado.dataHoraRegistro.formatar('dd/MM/yyyy - hh:mm:ss'),
quantidadeProcedimento : totalProcedimentoMap[KeyProcedimentoData],
cliente: itemProcedimentosRealizado.cliente.nome,
cnsCliente: itemProcedimentosRealizado.cliente.cns,
sexoCliente: itemProcedimentosRealizado.cliente.sexo.substring(0,1),
idade: itemProcedimentosRealizado.cliente.idade,
valorUnProcedimento: valorUnProcedimento,
valorProcedimento: valorProcedimento,
valorProc: valorProcP
]
}

se (!procedimentoMap[KeyProcedimento]) {
procedimentoMap[KeyProcedimento] = [
codigoProcedimento :
itemProcedimentosRealizado.procedimento.codigoProcedimento,
descricaoProcedimento : itemProcedimentosRealizado.procedimento.descricao,
quantidadeTProcedimento : totalProcedimentoMap[KeyProcedimento],
valorProc: valorProcP,
listProcedimentoData: []
]
}

se (!profissionalMap[keyProfissional]) {
profissionalMap[keyProfissional] = [

idProfissional: itemProcedimentosRealizado.profissionalExecutante.id,
nomeProfissional: itemProcedimentosRealizado.profissionalExecutante.nome,
listProcedimento: []

]
}
se (!unidadeMap[keyUnidade]) {
unidadeMap[keyUnidade] = [
analiticoExtra : analiticoP,
idUnidade: itemProcedimentosRealizado.unidade.id,
nomeUnidade: itemProcedimentosRealizado.unidade.nome,
listProfisisonal: []
]
}
}

procedimentoDataMap.each{id, obj ->


mapKey = id.dividir(~/\|/)
keyUnidade = mapKey[0]
keyProfissional = keyUnidade+"|"+mapKey[1]
KeyProcedimento = keyProfissional+"|"+mapKey[2]
procedimentoMap[KeyProcedimento].listProcedimentoData << obj
}

procedimentoMap.each{id, obj ->


mapKey = id.dividir(~/\|/)
keyUnidade = mapKey[0]
keyProfissional = keyUnidade+"|"+mapKey[1]
profissionalMap[keyProfissional].listProcedimento << obj
}
profissionalMap.each{id, obj ->
mapKey = id.dividir(~/\|/)
keyUnidade = mapKey[0]
unidadeMap[keyUnidade].listProfisisonal << obj
}

unidadeMap.each{id,obj ->
fonteDinamica.inserirLinha(obj)
}

se (sexoP != null){
imprimir "Sexo: " + sexoP
}

retornar fonteDinamica

Você também pode gostar