-- Script de creación de vistas nuevas que están en local pero no en producción
-- Generado automáticamente - 2025-08-19

USE [Clinica]
GO

-- =====================================================================================
-- Vista: [Caja].[VWBancos]
-- =====================================================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE VIEW [Caja].[VWBancos] AS
SELECT 
    b.IdBanco,
    b.Nombre
FROM 
    Caja.Bancos b 
GO

-- =====================================================================================
-- Vista: [Caja].[VWCicloCaja]
-- =====================================================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE VIEW [Caja].[VWCicloCaja]
AS
SELECT IdCicloCaja, IdCaja, FechaApertura, SaldoInicial, SaldoFinal, FechaCierre FROM Caja.CicloCaja cc
GO

-- =====================================================================================
-- Vista: [Caja].[VWReporteMovimientoCaja]
-- =====================================================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE VIEW [Caja].[VWReporteMovimientoCaja]
AS
SELECT mc.IdMovimientoCaja, mc.NroBono, c.Descripcion as Caja, mp.Descripcion as ModalidadPago, tc.Descripcion as TipoCopago,
mc.Monto, mc.FechaMovimiento, contacto.IdContacto IdCajero, contacto.Nombre Cajero, cc.FechaApertura
FROM Caja.MovimientoCaja mc
INNER JOIN 
    Caja.Caja c ON mc.IdCaja = c.IdCaja
INNER JOIN 
    Caja.CicloCaja cc ON mc.IdCicloCaja = cc.IdCicloCaja
INNER JOIN 
    Caja.TipoModalidadPago mp ON mc.IdTipoModalidadPago = mp.IdTipoModalidadPago
INNER JOIN 
    Caja.TipoCopago tc ON mc.IdTipoCopago = tc.IdTipoCopago
JOIN
    Core.Usuario u ON u.IdUsuario = cc.IdUsuarioCajero
JOIN 
    Core.Contacto contacto ON contacto.IdContacto = u.IdContacto
GO

-- =====================================================================================
-- Vista: [Clinica].[VWCitaInfoImed]
-- =====================================================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE VIEW [Clinica].[VWCitaInfoImed]
AS
SELECT c.IdCita, c.FechaHora, c.DuracionMinutos, c.IdTipoEstadoCita, c.IndEliminado, c.IdSistemaSalud,
p.IdProfesional, p.Rut RutProfesional, p.Nombres + ' ' + p.Apellidos NombreProfesional,
paciente.IdPaciente, paciente.Rut RutPacaiente, paciente.Nombres + ' ' + paciente.Apellidos NombrePaciente, 
prestacion.IdPrestacion, prestacion.Descripcion Prestacion, prestacion.CodigoInterno, prestacion.CodigoFonasa, prestacion.IdTipoPrestacion,
prestacion.Descripcion as TipoPrestacion

FROM Clinica.Cita c 
JOIN Clinica.Profesional p ON p.IdProfesional = c.IdProfesional
JOIN Clinica.Paciente paciente ON paciente.IdPaciente = c.IdPaciente
JOIN Clinica.Prestacion ON prestacion.IdPrestacion = c.IdPrestacion
GO

-- =====================================================================================
-- Vista: [Clinica].[VWFichaEvolucionDisponible]
-- =====================================================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE VIEW [Clinica].[VWFichaEvolucionDisponible]
AS
SELECT f.IdPaciente, cfe.IdFichaEvolucion, cfe.Fecha, fee.IdTipoPrestacion 
FROM Ficha.Ficha f
JOIN Ficha.FichaEvolucion cfe ON f.IdFicha = cfe.IdFicha
JOIN Ficha.FichaEvolucionExamen fee ON fee.IdFichaEvolucion = cfe.IdFichaEvolucion
LEFT JOIN Clinica.CitaFichaEvolucionExamen cfee ON cfee.IdFichaEvolucionExamen = fee.IdFichaEvolucionExamen
WHERE cfe.IndCerrada = 1 AND cfee.IdCitaFichaEvolucionExamen IS NULL
AND cfe.IndEliminado = 0
-- AND f.IdPaciente = 2765
GROUP BY f.IdPaciente,cfe.IdFichaEvolucion,cfe.Fecha, fee.IdTipoPrestacion
GO

-- =====================================================================================
-- Vista: [Clinica].[VWFichaEvolucionExamenDisponible]
-- =====================================================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE VIEW [Clinica].[VWFichaEvolucionExamenDisponible]
AS
SELECT f.IdPaciente, cfe.IdFichaEvolucion, cfe.Fecha, fee.IdTipoPrestacion 
FROM Ficha.Ficha f
JOIN Ficha.FichaEvolucion cfe ON f.IdFicha = cfe.IdFicha
JOIN Ficha.FichaEvolucionExamen fee ON fee.IdFichaEvolucion = cfe.IdFichaEvolucion
LEFT JOIN Clinica.CitaFichaEvolucionExamen cfee ON cfee.IdFichaEvolucionExamen = fee.IdFichaEvolucionExamen
WHERE cfe.IndCerrada = 1 AND cfee.IdCitaFichaEvolucionExamen IS NULL
AND cfe.IndEliminado = 0
-- AND f.IdPaciente = 2765
GROUP BY f.IdPaciente,cfe.IdFichaEvolucion,cfe.Fecha, fee.IdTipoPrestacion
GO

-- =====================================================================================
-- Vista: [Clinica].[VWPrestacionesRealizadas]
-- =====================================================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE VIEW [Clinica].[VWPrestacionesRealizadas] AS
SELECT
    ROW_NUMBER() OVER (ORDER BY(SELECT NULL)) AS Nro,
    cc.IdCaja,
    caja.Descripcion Caja,
    ec.IdTipoEstadoCaja, ec.Descripcion as TipoEstadoCaja,
    '' as 'RutCajero',
    contacto.Nombre as 'NombreCajero',
    FORMAT(mc.FechaMovimiento, 'dd-MM-yyyy') as 'FechaMovimiento',
    FORMAT(mc.FechaMovimiento, 'HH:mm') as 'HoraMovimiento',
    profesional.IdProfesional,
    profesional.Rut as 'RutProfesional',
    profesional.Nombres + ' ' + profesional.Apellidos as 'NombreProfesional',
    paciente.Rut as 'RutPaciente',
    paciente.Nombres + ' ' + paciente.Apellidos as 'NombrePaciente',
    prestacion.CodigoInterno as 'CodigoPrestacion',
    prestacion.Descripcion as 'NombrePrestacion',
    tp.IdTipoPrestacion,
    tp.Descripcion TipoPrestacion,
    tmp.Descripcion as 'Modalidad',
    sistemaSalud.Descripcion as 'SistemaSalud',
    isapre.Descripcion as Isapre,
    mc.NroBono as 'NroBono',
    FORMAT(mc.FechaEmision, 'dd-MM-yyyy') as 'FechaEmision',
    FORMAT(mc.FechaRecepcion, 'dd-MM-yyyy') as 'FechaRecepcion',
    mc.TotalBono as 'Valor',
    mc.MontoPagadoPrevision as 'MontoPagadoPrevision',
    mc.MontoCopago as 'MontoCopago',
    mc.Seguros as 'SeguroComplementario',
    mc.Excendentes,
    mc.Monto as 'TotalPagado'
FROM
    Caja.MovimientoCaja mc
    JOIN Caja.CicloCaja cc ON cc.IdCicloCaja = mc.IdCicloCaja
    JOIN Core.Usuario usuario ON usuario.IdUsuario = cc.IdUsuarioCajero
    JOIN Core.Contacto contacto ON contacto.IdContacto = usuario.IdContacto
    JOIN Caja.Caja caja ON caja.IdCaja = mc.IdCaja
    JOIN Caja.TipoEstadoCaja ec ON caja.IdTipoEstadoCaja = ec.IdTipoEstadoCaja
    JOIN Clinica.Cita cita ON cita.IdCita = mc.IdCita
    JOIN Clinica.Profesional profesional ON profesional.IdProfesional = cita.IdProfesional
    JOIN Clinica.Paciente paciente ON paciente.IdPaciente = cita.IdPaciente
    JOIN Clinica.Prestacion prestacion ON prestacion.IdPrestacion = cita.IdPrestacion
    JOIN Clinica.TipoPrestacion tp ON tp.IdTipoPrestacion = prestacion.IdTipoPrestacion
    JOIN Caja.TipoModalidadPago tmp ON tmp.IdTipoModalidadPago = mc.IdTipoModalidadPago
    LEFT JOIN Clinica.SistemaSalud sistemaSalud ON sistemaSalud.IdSistemaSalud = mc.SistemaSalud
    LEFT JOIN Clinica.Isapre isapre ON isapre.IdIsapre = mc.IdIsapre
GO

-- =====================================================================================
-- Vista: [Clinica].[VWPrestacionesRealizadasImagenesExamenes]
-- =====================================================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE VIEW [Clinica].[VWPrestacionesRealizadasImagenesExamenes] AS
SELECT
    ROW_NUMBER() OVER (ORDER BY(SELECT NULL)) AS Nro,
    cc.IdCaja,
    caja.Descripcion Caja,
    ec.IdTipoEstadoCaja, ec.Descripcion as TipoEstadoCaja,
    '' as 'RutCajero',
    contacto.Nombre as 'NombreCajero',
    FORMAT(mc.FechaMovimiento, 'dd-MM-yyyy') as 'FechaMovimiento',
    FORMAT(mc.FechaMovimiento, 'HH:mm') as 'HoraMovimiento',
    profesional.IdProfesional,
    p.Rut as 'RutProfesional',
    p.Nombres + ' ' + p.Apellidos as 'NombreProfesional',
    paciente.Rut as 'RutPaciente',
    paciente.Nombres + ' ' + paciente.Apellidos as 'NombrePaciente',
    prestacion.CodigoInterno as 'CodigoPrestacion',
    prestacion.Descripcion as 'NombrePrestacion',
    tp.IdTipoPrestacion,
    tp.Descripcion TipoPrestacion,
    tmp.Descripcion as 'Modalidad',
    sistemaSalud.Descripcion as 'SistemaSalud',
    isapre.Descripcion as Isapre,
    mc.NroBono as 'NroBono',
    FORMAT(mc.FechaEmision, 'dd-MM-yyyy') as 'FechaEmision',
    FORMAT(mc.FechaRecepcion, 'dd-MM-yyyy') as 'FechaRecepcion',
    mc.TotalBono as 'Valor',
    mc.MontoPagadoPrevision as 'MontoPagadoPrevision',
    mc.MontoCopago as 'MontoCopago',
    mc.Seguros as 'SeguroComplementario',
    mc.Excendentes,
    mc.Monto as 'TotalPagado'
FROM
    Caja.MovimientoCaja mc
    JOIN Caja.CicloCaja cc ON cc.IdCicloCaja = mc.IdCicloCaja
    JOIN Core.Usuario usuario ON usuario.IdUsuario = cc.IdUsuarioCajero
    JOIN Core.Contacto contacto ON contacto.IdContacto = usuario.IdContacto
    JOIN Caja.Caja caja ON caja.IdCaja = mc.IdCaja
    JOIN Caja.TipoEstadoCaja ec ON caja.IdTipoEstadoCaja = ec.IdTipoEstadoCaja
    JOIN Clinica.Cita cita ON cita.IdCita = mc.IdCita

    OUTER APPLY (
        SELECT TOP 1 *
        FROM Clinica.CitaFichaEvolucionExamen cfee
        WHERE cfee.IdCita = cita.IdCita
        ORDER BY cfee.IdCitaFichaEvolucionExamen -- o la columna que defina el "primero"
    ) cfee
    JOIN Ficha.FichaEvolucion fe 
        ON fe.IdFichaEvolucion = cfee.IdFichaEvolucion
    JOIN Clinica.PRofesional p ON p.IdProfesional = fe.IdProfesional

    JOIN Clinica.Profesional profesional ON profesional.IdProfesional = cita.IdProfesional
    JOIN Clinica.Paciente paciente ON paciente.IdPaciente = cita.IdPaciente
    JOIN Clinica.Prestacion prestacion ON prestacion.IdPrestacion = cita.IdPrestacion
    JOIN Clinica.TipoPrestacion tp ON tp.IdTipoPrestacion = prestacion.IdTipoPrestacion
    JOIN Caja.TipoModalidadPago tmp ON tmp.IdTipoModalidadPago = mc.IdTipoModalidadPago
    LEFT JOIN Clinica.SistemaSalud sistemaSalud ON sistemaSalud.IdSistemaSalud = mc.SistemaSalud
    LEFT JOIN Clinica.Isapre isapre ON isapre.IdIsapre = mc.IdIsapre

GO

-- =====================================================================================
-- Vista: [Core].[VWUsuario]
-- =====================================================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE VIEW [Core].[VWUsuario]
AS
SELECT u.IdUsuario, u.LoginName, u.IdContacto, u.IdPerfil, c.Nombre, c.Email, c.Cargo
FROM Core.Usuario u
JOIN Core.Contacto c ON c.IdContacto = u.IdContacto
GO

-- =====================================================================================
-- Vista: [Imed].[VWBonoInterfaz]
-- =====================================================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE VIEW [Imed].[VWBonoInterfaz]
AS
SELECT
    bi.IdBonoInterfaz,
    bi.IdCita,
    lb.FolioBono,
    lb.FecEmi,
    ISNULL(SUM(lpv.MontoBon), 0) as MontoBon,
    ISNULL(SUM(lpv.MontoCopago), 0) as MontoCopago,
    ISNULL(SUM(lpv.MontoPrest), 0) as MontoPrest,
    ISNULL(SUM(lob.MtoBonAdic), 0) as MtoBonAdic

FROM Imed.BonoInterfaz bi
JOIN Imed.ListaBono lb ON lb.IdBonoInterfaz = bi.IdBonoInterfaz
JOIN Imed.ListaPrestVta lpv ON lpv.IdListaBono = lb.IdListaBono
LEFT JOIN Imed.ListaOtrasBon lob ON lob.IdListaPrestVta = lpv.IdListaPrestVta
GROUP BY 
    bi.IdBonoInterfaz,
    bi.IdCita,
    lb.FolioBono,
    lb.FecEmi
GO

-- =====================================================================================
-- Fin del script
-- =====================================================================================