5 using System.Collections;
\r
8 using Dominio.Autorizaciones;
\r
9 using Dominio.Afiliados;
\r
17 namespace Controlador
\r
20 /// Clase controlador que lleva a cabo los CU de "Pedir autorizacion automatica",
\r
21 /// "Pedir autorizacion manual" y actualizar "autorizacion manual"
\r
23 public class AutorizacionController : Controller
\r
25 #region Constructores
\r
27 public AutorizacionController(DateTime fechaSolicitud): base()
\r
32 #endregion Constructores
\r
34 #region Campos Privados
\r
36 private Autorizacion _currentAutorizacion = null ;
\r
38 #endregion Campos Privados
\r
40 #region Propiedades privadas
\r
42 public Autorizacion CurrentAutorizacion
\r
44 get { return _currentAutorizacion; }
46 #endregion Propiedades privadas
\r
48 #region Métodos Públicos
\r
51 /// Guarda un pedido de autorizacion manual.
\r
53 public bool guardarAutorizacionManual(String codPrestacion, String cuitPrestador
\r
54 , int codAfiliado, String observaciones)
\r
56 bool codigosOk = true;
\r
58 //solo para testing--------------------
\r
59 this.InsertarDatosNecesarios();
\r
60 //------------------------------------
\r
62 AutorizacionManual aut = new AutorizacionManual(DateTime.Now);
\r
64 #region Se insancia prestador, prestacion y afiliado, y se asocia a aut
\r
67 ArrayList al = this.ObjectSetToArrayList( this.Db.get( new Prestacion(codPrestacion) ) );
\r
68 if (null==(aut.Prestacion = ( (al.Count == 0)? null : al[0] ) as Prestacion))
\r
72 al = this.ObjectSetToArrayList( this.Db.get( new Prestador(cuitPrestador) ) );
\r
73 if (null==(aut.Prestador = ( (al.Count == 0)? null : al[0] ) as Prestador))
\r
79 al = this.ObjectSetToArrayList( this.Db.get( new Afiliado(codAfiliado) ) );
\r
80 if (null==(aut.Afiliado = ( (al.Count == 0)? null : al[0] ) as Afiliado))
\r
83 #endregion Se insancia prestador, prestacion y afiliado, y se asocia a aut
\r
84 //Seteo fecha de vencimiento como dentro de 60 días
\r
85 aut.FechaVencimiento = DateTime.Now.AddDays(60);
\r
88 aut.Observaciones = observaciones;
\r
90 //Signo prox codigo para autorizacion
\r
91 AutoIncrementable c = new AutoIncrementable ();
\r
94 aut.Codigo = c.NextAutorizacion();
\r
97 if (codigosOk) this.Db.set(aut);
\r
103 //PRE: No hay autorizaciones manuales y automaticas con mismo codigo!!
\r
104 public Autorizacion obtener(int codigo)
\r
107 ArrayList al = this.ObjectSetToArrayList( this.Db.get( new AutorizacionManual(codigo) ) );
\r
108 Autorizacion a = ((al.Count == 0)? null : al[0] ) as Autorizacion;
\r
111 //Busco automatica, si no hay manual para ese codigo
\r
113 al = this.ObjectSetToArrayList( this.Db.get( new AutorizacionAutomatica(codigo) ) );
\r
114 a = ((al.Count == 0)? null : al[0] ) as Autorizacion;
\r
119 public float evaluarAutorizacionAutomatica(String cuitPrestador, String codPrestacion, int codAfiliado, out int codAutorizacion)
122 bool codigosOk = true;
\r
123 float porcentajeDeCobertura = 0;
\r
124 string fundamentosResolucion = "Todo ok";
\r
126 AutorizacionAutomatica aut = new AutorizacionAutomatica(DateTime.Now);
\r
128 #region Se insancia prestador, prestacion y afiliado, y se asocia a aut
\r
131 ArrayList al = this.ObjectSetToArrayList( this.Db.get( new Prestacion(codPrestacion) ) );
\r
132 if (null==(aut.Prestacion = ( (al.Count == 0)? null : al[0] ) as Prestacion))
\r
136 al = this.ObjectSetToArrayList( this.Db.get( new Prestador(cuitPrestador) ) );
\r
137 if (null==(aut.Prestador = ( (al.Count == 0)? null : al[0] ) as Prestador))
\r
143 al = this.ObjectSetToArrayList( this.Db.get( new Afiliado(codAfiliado) ) );
\r
144 if (null==(aut.Afiliado = ( (al.Count == 0)? null : al[0] ) as Afiliado))
\r
147 #endregion Se insancia prestador, prestacion y afiliado, y se asocia a aut
\r
148 //Seteo fecha de vencimiento como dentro de 60 días
\r
151 //Seteo fecha de vencimiento como dentro de 60 días
\r
152 aut.FechaVencimiento = DateTime.Now.AddDays(60);
\r
156 porcentajeDeCobertura = aut.Afiliado.VerificarCobertura(codPrestacion);
160 #warning verificar cobertura deberia tirar excepcion si explota, o se rechaza
161 //TODO Asignar motivo de rechazo a fundamentosResolucion
165 //Si porcentaje es 0, se registra rechazada
166 aut.setResolucion(fundamentosResolucion, porcentajeDeCobertura);
170 this._currentAutorizacion=aut;
\r
172 #warning deberia obtener codigo de autorizacion ACA y devolverlo
\r
173 codAutorizacion = 131313; //TODO SETEAR CODIGO BIEN!!
\r
177 return porcentajeDeCobertura;
180 public ArrayList obtenerAutorizacionesPendientes()
\r
182 Query query = Db.query();
183 query.constrain(typeof(AutorizacionManual));
184 query.descend("_fechaRealizacion").constrain(DateTime.MinValue);
186 ObjectSet result = query.execute ();
188 return ObjectSetToArrayList (result);
193 #endregion Métodos Públicos
\r
195 #region Métodos Privados
\r
198 /// Procesa las lineas del reporte una vez que el mismo ha sido validado:
\r
199 /// Si está aprobada, la registra en el sistema y la agrega al reporte de Consumo de los Afiliados.
\r
200 /// A todas las lineas las agrega al Informe de Aprobaciones/rechazos de Prestaciones Realizadas.
\r
202 /// <param name="ip">Reporte del cual se porcesarán las lineas</param>
\r
204 private void InsertarDatosNecesarios()
\r
207 Prestador pre = new Prestador();
\r
208 pre.Cuit = "11-11111111-1";
\r
209 ObjectSet os = this.Db.get( pre );
\r
210 if ( (os == null) || (os.size() == 0) )
\r
212 Dominio.SDireccion dir;
\r
213 dir.Calle = "Gaona"; dir.CodigoPostal = "AB1504"; dir.Departamento = "";
\r
214 dir.Numero = 1234; dir.Piso = 0; dir.Provincia = Dominio.EProvincia.CAPITAL_FEDERAL;
\r
215 dir.Telefono = "5056-4567";
\r
216 pre.Direccion = dir;
\r
217 pre.Email = @"roberto@sancamilo.com";
\r
218 pre.FechaBaja = DateTime.MinValue;
\r
219 pre.Nombre = "Clinica San Camilo";
\r
220 pre.Password = "camilo";
\r
221 pre.Zona = new SZona( "Caballito", "Zona de Caballito" );
\r
222 this.Db.set( pre );
\r
225 Prestacion p = new Prestacion();
\r
226 p.Codigo = "mierda" ;
\r
228 Categoria c = new Categoria();
\r
230 c.Nombre="categoria 1";
\r
233 p.Nombre= "hospital de clinicas";
\r
236 Afiliado a = new Afiliado(69);
\r
237 a.Apellido = "apellido";
\r
238 a.EMail = "afiliado@aaa.com";
\r
244 /*AutorizacionAutomatica a = new AutorizacionAutomatica();
\r
246 os = this.Db.get( a );
\r
247 if ( (os == null) || (os.size() == 0) )
\r
249 a.Afiliado = new Dominio.Afiliados.Afiliado( 987 );
\r
250 a.Prestacion = new Prestacion( "B01AC06" );
\r
252 a.FechaSolicitud = new DateTime( 2005, 5, 20 ); // 20 de mayo
\r
253 a.FechaRealizacion = DateTime.MinValue;
\r
254 a.FechaVencimiento = a.FechaSolicitud.AddMonths( 2 ); // 20 de julio, aprox
\r
256 a.PorcentajeCobertura = 12.5F;
\r
261 #endregion Métodos Privados
\r