PROCEDIMIENTO DE ANULACION Y BORRADO DE TURNOS



El modulo de turnos cuenta con los procedimientos de anulación y borrado de turnos

Ambos pueden ejecutarse en un turnos puntuales o en un grupo de turnos



Presionado el BOTON BORRAR desde el formulario de asignación de turnos se abren

Dos opciones la de borrar el turno o la de anular el mismo.

El procedimiento  Borrar elimina totalmente los turnos

CREATE PROCEDURE dbo.Turnos_Asignados_Borrar @ID int AS
DELETE [Turnos Asignados a Pacientes]
FROM [Turnos Asignados a Pacientes]
WHERE ([Turnos Asignados a Pacientes].Autonumérico =@id)
GO

El procedimiento Anular  marca  como anulado el turno seleccionado, pero no lo borra de la tabla

CREATE PROCEDURE dbo.Turnos_Asignados_Anular @ID int AS 
UPDATE[Turnos Asignados a Pacientes] set [Turnos Asignados a Pacientes].Anulado=1
WHERE ([Turnos Asignados a Pacientes].Autonumérico =@id)
GO





Que diferencias existen entre borrar y anular turnos?



Al borrar un turno este se elimina totalmente de la tabla no existiendo ninguna posibilidad de recuperar el mismo, a diferencia del borrado en el proceso de anulación se marca el turno el cual no desaparece físicamente de la tabla de turnos pero este no se vuelve a Mostar mas quedando disponible su horario ( el horario del turno anulado) para volver a usurase. Es factible buscar los turnos anulados y armar un listado de los mismos en caso de que se quieran volver a recitar por ejemplo.



Desde el Formulario de búsqueda de citas para turnos Médicos solo podemos anular turnos que seleccionemos

ya que borrar varios turnos a la vez podría ser algo insalbablemente grave si se hiciera por error, por ese motivo no

programamos esa opción.



El formulario de búsqueda de citas se puede filtrar las mismas de acuerdo a distintos criterios, igual que el formulario de asignación de turnos este dispone de un botón borrar el cual permite que los turnos seleccionados puedan ser borrados, o anulados

Antes de proceder confirma al usuario y su nivel de acceso para poder hacer esta operacion

Porcedimiento Anular todos los turnos seleccionados

CREATE PROCEDURE dbo.dbo_Turnos_Asig_Anula_varios @PApellido varchar(20), @PNombre varchar(20), @PHistoria int = 0, @PSexo int=0, @PObraSocial int=0, @PServicio int=0, @PMédico int=0, @Pfechadesde DateTime=null, @Pfechaanterior DateTime=null AS
/*
@PHistoria int = 0 cuando no se pasa el parármetro se le asigna el valor de default=0
*/

UPDATE [Turnos Asignados a Pacientes] set [Turnos Asignados a Pacientes].Anulado=1

FROM [Turnos Asignados a Pacientes] 


FULL JOIN [Especialidades Médicas] ON [Turnos Asignados a Pacientes].[Código de Especialidad] = [Especialidades Médicas].Código
FULL JOIN [Obras Sociales y Prepagos] ON [Turnos Asignados a Pacientes].[Código de Obra Social] = [Obras Sociales y Prepagos].[Código de Obra Social]
FULL JOIN Médicos ON [Turnos Asignados a Pacientes].[Número de Médico]= Médicos.[Número de Médico] 
FULL JOIN Pacientes ON [Turnos Asignados a Pacientes].[Historia Clínica] =Pacientes.[Nro Historia Clínica]
WHERE [Turnos Asignados a Pacientes].[Historia Clínica] = case @PHistoria when 0 then [Turnos Asignados a Pacientes].[Historia Clínica] else @PHistoria end
AND [Turnos Asignados a Pacientes].Sexo = case @Psexo when 0 then [Turnos Asignados a Pacientes].Sexo else @PSexo end
AND [Turnos Asignados a Pacientes].[Código de Obra Social] = case @PObraSocial when 0 then [Turnos Asignados a Pacientes].[Código de Obra Social] else @PObraSocial end
AND [Turnos Asignados a Pacientes].[Código de Especialidad] = case @PServicio when 0 then [Turnos Asignados a Pacientes].[Código de Especialidad] else @PServicio end
AND [Turnos Asignados a Pacientes].[Número de Médico] = case @PMédico when 0 then [Turnos Asignados a Pacientes].[Número de Médico] else @PMédico end
AND [Turnos Asignados a Pacientes].Apellido like @PApellido+'%'
AND [Turnos Asignados a Pacientes].Nombre like @PNombre+'%'
AND [Turnos Asignados a Pacientes].[Fecha y Hora]>= @Pfechadesde
AND [Turnos Asignados a Pacientes].[Fecha y Hora]<=@Pfechaanterior


GO

RECUPERAR TURNOS ANULADO

Para recuperar los turnos anulados de un periodo debemos seleccionar el filtro el periodo y las caracteristicas para que los mismos

nos sean mostrados, luego presionamos el boton "Desmarcar Turnos Anulados" y los mismos vuelven a estar vigentes....

    OBSERVACIONES DEL PROCEDIMIENTO DE DESMARCAR TURNOS ANULADOS

Mientras un turno estuvo anulado, para el sistema no existio por lo tanto ese mismo se le pudo asignar a otro paciente, al desmarcar turnos anulados, nosotros corremos el riesgo de que existan turnos superpuestos para un mismo medico, por lo tanto esta opcion la debemos usar con criterio.

CREATE PROCEDURE dbo.Turnos_Desanular @PApellido varchar(20), @PNombre varchar(20), @PHistoria int = 0, @PSexo int=0, @PObraSocial int=0, @PServicio int=0, @PMédico int=0, @Pfechadesde DateTime=null, @Pfechaanterior DateTime=null AS

/*
@PHistoria int = 0 cuando no se pasa el parármetro se le asigna el valor de default=0
*/


UPDATE [Turnos Asignados a Pacientes] set [Turnos Asignados a Pacientes].Anulado=0

FROM [Turnos Asignados a Pacientes] 
FULL JOIN [Especialidades Médicas] ON [Turnos Asignados a Pacientes].[Código de Especialidad] = [Especialidades Médicas].Código
FULL JOIN [Obras Sociales y Prepagos] ON [Turnos Asignados a Pacientes].[Código de Obra Social] = [Obras Sociales y Prepagos].[Código de Obra Social]
FULL JOIN Médicos ON [Turnos Asignados a Pacientes].[Número de Médico]= Médicos.[Número de Médico] 
FULL JOIN Pacientes ON [Turnos Asignados a Pacientes].[Historia Clínica] =Pacientes.[Nro Historia Clínica]
WHERE [Turnos Asignados a Pacientes].[Historia Clínica] = case @PHistoria when 0 then [Turnos Asignados a Pacientes].[Historia Clínica] else @PHistoria end
AND [Turnos Asignados a Pacientes].Sexo = case @Psexo when 0 then [Turnos Asignados a Pacientes].Sexo else @PSexo end
AND [Turnos Asignados a Pacientes].[Código de Obra Social] = case @PObraSocial when 0 then [Turnos Asignados a Pacientes].[Código de Obra Social] else @PObraSocial end
AND [Turnos Asignados a Pacientes].[Código de Especialidad] = case @PServicio when 0 then [Turnos Asignados a Pacientes].[Código de Especialidad] else @PServicio end
AND [Turnos Asignados a Pacientes].[Número de Médico] = case @PMédico when 0 then [Turnos Asignados a Pacientes].[Número de Médico] else @PMédico end
AND [Turnos Asignados a Pacientes].Apellido like @PApellido+'%'
AND [Turnos Asignados a Pacientes].Nombre like @PNombre+'%'
AND [Turnos Asignados a Pacientes].[Fecha y Hora]>= @Pfechadesde
AND [Turnos Asignados a Pacientes].[Fecha y Hora]<=@Pfechaanterior
AND [Turnos Asignados a Pacientes].Anulado =1

GO

 

Procedimientos almacenados Relacionados

data.dbo_Turnos_Desanular

dbo.dbo_Turnos_Asig_Anula_varios

dbo.dbo_Turnos_Asig_Borra_varios

dbo.Turnos_Asignados_Búsqueda

dbo.Turnos_Asignados_Anular

dbo.Turnos_Asignados_Borrar

 

 

OBSERVACIONES CON RESPECTO A LOS HORARIOS EXTRAS DE ATENCION Y A LA SUSPENCION DE HORARIOS

Tanto los horarios extras de atencion como a suspencion de horarios se aplica por dia y no por bloque, estas novedades afectan

a todos los bloques de un dia.