-\r
-#region Usings\r
-\r
-using System;\r
-using System.Collections;\r
-\r
-using Dominio;\r
-using Dominio.Autorizaciones;\r
-using Dominio.Afiliados;\r
-\r
+
+#region Usings
+
+using System;
+using System.Collections;
+
+using Dominio;
+using Dominio.Autorizaciones;
+using Dominio.Afiliados;
+
using com.db4o;
using com.db4o.query;
-#endregion Usings\r
-\r
-namespace Controlador\r
-{\r
- /// <summary>\r
- /// Clase controlador que lleva a cabo los CU de "Pedir autorizacion automatica",\r
- /// "Pedir autorizacion manual" y actualizar "autorizacion manual"\r
- /// </summary>\r
- public class AutorizacionController : Controller\r
- {\r
- #region Constructores\r
- \r
- public AutorizacionController(DateTime fechaSolicitud): base()\r
- {\r
-\r
- }\r
-\r
- #endregion Constructores\r
-\r
- #region Campos Privados \r
-\r
- private Autorizacion _currentAutorizacion = null ; \r
- \r
- #endregion Campos Privados\r
-\r
- #region Propiedades privadas\r
-\r
- public Autorizacion CurrentAutorizacion\r
+#endregion Usings
+
+namespace Controlador
+{
+ /// <summary>
+ /// Clase controlador que lleva a cabo los CU de "Pedir autorizacion automatica",
+ /// "Pedir autorizacion manual" y actualizar "autorizacion manual"
+ /// </summary>
+ public class AutorizacionController : Controller
+ {
+ #region Constructores
+
+ public AutorizacionController(DateTime fechaSolicitud): base()
+ {
+
+ }
+
+ #endregion Constructores
+
+ #region Campos Privados
+
+ private Autorizacion _currentAutorizacion = null ;
+
+ #endregion Campos Privados
+
+ #region Propiedades privadas
+
+ public Autorizacion CurrentAutorizacion
{
get { return _currentAutorizacion; }
- }\r
- #endregion Propiedades privadas\r
-\r
- #region Métodos Públicos\r
- \r
- /// <summary>\r
- /// Guarda un pedido de autorizacion manual.\r
- /// </summary>\r
- public bool guardarAutorizacionManual(String codPrestacion, String cuitPrestador\r
- , int codAfiliado, String observaciones)\r
- {\r
- bool codigosOk = true;\r
- \r
- AutorizacionManual aut = new AutorizacionManual(DateTime.Now);\r
- \r
- #region Se insancia prestador, prestacion y afiliado, y se asocia a aut\r
- //Seteo prestacion\r
- \r
- ArrayList al = this.ObjectSetToArrayList( this.Db.get( new Prestacion(codPrestacion) ) );\r
- if (null==(aut.Prestacion = ( (al.Count == 0)? null : al[0] ) as Prestacion))\r
- codigosOk=false;\r
-\r
- //Seteo prestador\r
- al = this.ObjectSetToArrayList( this.Db.get( new Prestador(cuitPrestador) ) );\r
- if (null==(aut.Prestador = ( (al.Count == 0)? null : al[0] ) as Prestador))\r
- codigosOk=false;\r
-\r
- \r
-\r
- //Seteo afiliado\r
- al = this.ObjectSetToArrayList( this.Db.get( new Afiliado(codAfiliado) ) );\r
- if (null==(aut.Afiliado = ( (al.Count == 0)? null : al[0] ) as Afiliado))\r
- codigosOk=false;\r
- \r
- #endregion Se insancia prestador, prestacion y afiliado, y se asocia a aut\r
- //Seteo fecha de vencimiento como dentro de 60 días\r
- aut.FechaVencimiento = DateTime.Now.AddDays(60);\r
-\r
-\r
- aut.Observaciones = observaciones; \r
-\r
- //Signo prox codigo para autorizacion\r
- AutoIncrementable c = new AutoIncrementable ();\r
- using (c)\r
- {\r
- aut.Codigo = c.NextAutorizacion();\r
- }\r
-\r
- if (codigosOk) this.Db.set(aut);\r
-\r
- return codigosOk; \r
- \r
- }\r
-\r
- //PRE: No hay autorizaciones manuales y automaticas con mismo codigo!!\r
- public Autorizacion obtener(int codigo)\r
- { \r
- //Busco manual\r
- ArrayList al = this.ObjectSetToArrayList( this.Db.get( new AutorizacionManual(codigo) ) );\r
- Autorizacion a = ((al.Count == 0)? null : al[0] ) as Autorizacion;\r
- \r
- if (null==a)\r
- //Busco automatica, si no hay manual para ese codigo\r
- {\r
- al = this.ObjectSetToArrayList( this.Db.get( new AutorizacionAutomatica(codigo) ) );\r
- a = ((al.Count == 0)? null : al[0] ) as Autorizacion;\r
- }\r
- return a;\r
- }\r
-\r
+ }
+ #endregion Propiedades privadas
+
+ #region Métodos Públicos
+
+ /// <summary>
+ /// Guarda un pedido de autorizacion manual.
+ /// </summary>
+ public bool guardarAutorizacionManual(String codPrestacion, String cuitPrestador
+ , int codAfiliado, String observaciones)
+ {
+ bool codigosOk = true;
+
+ AutorizacionManual aut = new AutorizacionManual(DateTime.Now);
+
+ #region Se insancia prestador, prestacion y afiliado, y se asocia a aut
+ //Seteo prestacion
+
+ ArrayList al = this.ObjectSetToArrayList( this.Db.get( new Prestacion(codPrestacion) ) );
+ if (null==(aut.Prestacion = ( (al.Count == 0)? null : al[0] ) as Prestacion))
+ codigosOk=false;
+
+ //Seteo prestador
+ al = this.ObjectSetToArrayList( this.Db.get( new Prestador(cuitPrestador) ) );
+ if (null==(aut.Prestador = ( (al.Count == 0)? null : al[0] ) as Prestador))
+ codigosOk=false;
+
+
+
+ //Seteo afiliado
+ al = this.ObjectSetToArrayList( this.Db.get( new Afiliado(codAfiliado) ) );
+ if (null==(aut.Afiliado = ( (al.Count == 0)? null : al[0] ) as Afiliado))
+ codigosOk=false;
+
+ #endregion Se insancia prestador, prestacion y afiliado, y se asocia a aut
+ //Seteo fecha de vencimiento como dentro de 60 días
+ aut.FechaVencimiento = DateTime.Now.AddDays(60);
+
+
+ aut.Observaciones = observaciones;
+
+ //Signo prox codigo para autorizacion
+ AutoIncrementable c = new AutoIncrementable ();
+ using (c)
+ {
+ aut.Codigo = c.NextAutorizacion();
+ }
+
+ if (codigosOk) this.Db.set(aut);
+
+ return codigosOk;
+
+ }
+
+ //PRE: No hay autorizaciones manuales y automaticas con mismo codigo!!
+ public Autorizacion obtener(int codigo)
+ {
+ //Busco manual
+ /*ArrayList al = this.ObjectSetToArrayList( this.Db.get( new AutorizacionManual(codigo) ) );
+ Autorizacion a = ((al.Count == 0)? null : al[0] ) as Autorizacion;*/
+ Query query = Db.query();
+ query.constrain(typeof(AutorizacionManual));
+ query.descend("_codigo").constrain(codigo);
+ ObjectSet result = query.execute ();
+
+ ArrayList al = ObjectSetToArrayList (result);
+
+ Autorizacion a = null;
+ try {
+ a = ((al.Count == 0)? null : al[0] ) as Autorizacion;
+ } catch (Exception e) {
+ Console.WriteLine ("Bad");
+ }
+ Console.WriteLine (a);
+
+ if (null==a) {
+ Console.WriteLine ("NO EXISTE AUTORIZACION MANUAL DE CODIGO {0}", codigo);
+ //Busco automatica, si no hay manual para ese codigo
+ al = this.ObjectSetToArrayList( this.Db.get( new AutorizacionAutomatica(codigo) ) );
+ a = ((al.Count == 0)? null : al[0] ) as Autorizacion;
+ }
+ return a;
+ }
+
public float evaluarAutorizacionAutomatica(String cuitPrestador, String codPrestacion, int codAfiliado, out int codAutorizacion)
{
- bool codigosOk = true;\r
- float porcentajeDeCobertura = 0;\r
- string fundamentosResolucion = "Todo ok";\r
- \r
- AutorizacionAutomatica aut = new AutorizacionAutomatica(DateTime.Now);\r
- \r
- #region Se insancia prestador, prestacion y afiliado, y se asocia a aut\r
- //Seteo prestacion\r
- \r
- ArrayList al = this.ObjectSetToArrayList( this.Db.get( new Prestacion(codPrestacion) ) );\r
- if (null==(aut.Prestacion = ( (al.Count == 0)? null : al[0] ) as Prestacion))\r
- codigosOk=false;\r
-\r
- //Seteo prestador\r
- al = this.ObjectSetToArrayList( this.Db.get( new Prestador(cuitPrestador) ) );\r
- if (null==(aut.Prestador = ( (al.Count == 0)? null : al[0] ) as Prestador))\r
- codigosOk=false;\r
-\r
- \r
-\r
- //Seteo afiliado\r
- al = this.ObjectSetToArrayList( this.Db.get( new Afiliado(codAfiliado) ) );\r
- if (null==(aut.Afiliado = ( (al.Count == 0)? null : al[0] ) as Afiliado))\r
- codigosOk=false;\r
- \r
- #endregion Se insancia prestador, prestacion y afiliado, y se asocia a aut\r
- //Seteo fecha de vencimiento como dentro de 60 días\r
- \r
-\r
- //Seteo fecha de vencimiento como dentro de 60 días\r
- aut.FechaVencimiento = DateTime.Now.AddDays(60);\r
-\r
- try\r
+ bool codigosOk = true;
+ float porcentajeDeCobertura = 0;
+ string fundamentosResolucion = "Todo ok";
+
+ AutorizacionAutomatica aut = new AutorizacionAutomatica(DateTime.Now);
+
+ #region Se insancia prestador, prestacion y afiliado, y se asocia a aut
+ //Seteo prestacion
+
+ ArrayList al = this.ObjectSetToArrayList( this.Db.get( new Prestacion(codPrestacion) ) );
+ if (null==(aut.Prestacion = ( (al.Count == 0)? null : al[0] ) as Prestacion))
+ codigosOk=false;
+
+ //Seteo prestador
+ al = this.ObjectSetToArrayList( this.Db.get( new Prestador(cuitPrestador) ) );
+ if (null==(aut.Prestador = ( (al.Count == 0)? null : al[0] ) as Prestador))
+ codigosOk=false;
+
+
+
+ //Seteo afiliado
+ al = this.ObjectSetToArrayList( this.Db.get( new Afiliado(codAfiliado) ) );
+ if (null==(aut.Afiliado = ( (al.Count == 0)? null : al[0] ) as Afiliado))
+ codigosOk=false;
+
+ #endregion Se insancia prestador, prestacion y afiliado, y se asocia a aut
+ //Seteo fecha de vencimiento como dentro de 60 días
+
+
+ //Seteo fecha de vencimiento como dentro de 60 días
+ aut.FechaVencimiento = DateTime.Now.AddDays(60);
+
+ try
{
porcentajeDeCobertura = aut.Afiliado.VerificarCobertura(codPrestacion);
- }\r
- catch\r
+ }
+ catch
{
#warning verificar cobertura deberia tirar excepcion si explota, o se rechaza
//TODO Asignar motivo de rechazo a fundamentosResolucion
}
- finally\r
+ finally
{
//Si porcentaje es 0, se registra rechazada
aut.setResolucion(fundamentosResolucion, porcentajeDeCobertura);
- if (codigosOk) \r
- {\r
- this.Db.set(aut);\r
- this._currentAutorizacion=aut;\r
- }\r
- #warning deberia obtener codigo de autorizacion ACA y devolverlo\r
- codAutorizacion = 131313; //TODO SETEAR CODIGO BIEN!!\r
- \r
+ if (codigosOk)
+ {
+ this.Db.set(aut);
+ this._currentAutorizacion=aut;
+ }
+ #warning deberia obtener codigo de autorizacion ACA y devolverlo
+ codAutorizacion = 131313; //TODO SETEAR CODIGO BIEN!!
+
}
return porcentajeDeCobertura;
}
-\r
- public ArrayList obtenerAutorizacionesPendientes()\r
+
+ public ArrayList obtenerAutorizacionesPendientes()
{
Query query = Db.query();
query.constrain(typeof(AutorizacionManual));
return ObjectSetToArrayList (result);
}
-\r
- //PRE: El codigo solicitado tiene que ser de una autorizacion manual.\r
- public bool setResolucionAutorizacionManual(int codAutorizacion, \r
- String fundamentosResolucion, float porcentaje)\r
- {\r
- AutorizacionManual a = this.obtener(codAutorizacion) as AutorizacionManual;\r
- if (null==a) return false;\r
- a.Aprobada = (porcentaje==0)?false:true;\r
- a.PorcentajeCobertura = porcentaje;\r
- a.FundamentosResolucion = fundamentosResolucion;\r
- this.Db.set(a);\r
-\r
- return true;\r
- }\r
-\r
-\r
- #endregion Métodos Públicos\r
-\r
- #region Métodos Privados\r
-\r
- /// <summary>\r
- /// Procesa las lineas del reporte una vez que el mismo ha sido validado:\r
- /// Si está aprobada, la registra en el sistema y la agrega al reporte de Consumo de los Afiliados. \r
- /// A todas las lineas las agrega al Informe de Aprobaciones/rechazos de Prestaciones Realizadas.\r
- /// </summary>\r
- /// <param name="ip">Reporte del cual se porcesarán las lineas</param>\r
- \r
- private void InsertarDatosNecesarios()\r
- {\r
+
+ public ArrayList obtenerAutorizacionesPorAfiliado (int codafiliado)
+ {
+ Afiliado a = new Afiliado (codafiliado);
+
+ Query query = Db.query();
+ query.constrain(typeof(Autorizacion));
+ query.descend("_afiliado").constrain(a);
+
+ ObjectSet result = query.execute ();
+
+ return ObjectSetToArrayList (result);
+ }
+ //PRE: El codigo solicitado tiene que ser de una autorizacion manual.
+ public bool setResolucionAutorizacionManual(int codAutorizacion,
+ String fundamentosResolucion, float porcentaje)
+ {
+ AutorizacionManual a = this.obtener(codAutorizacion) as AutorizacionManual;
+ if (null==a) return false;
+ a.Aprobada = (porcentaje==0)?false:true;
+ a.PorcentajeCobertura = porcentaje;
+ a.FundamentosResolucion = fundamentosResolucion;
+ a.FechaResolucion = DateTime.Now;
+ this.Db.set(a);
+
+ return true;
+ }
+
+
+ #endregion Métodos Públicos
+
+ #region Métodos Privados
+
+ /// <summary>
+ /// Procesa las lineas del reporte una vez que el mismo ha sido validado:
+ /// Si está aprobada, la registra en el sistema y la agrega al reporte de Consumo de los Afiliados.
+ /// A todas las lineas las agrega al Informe de Aprobaciones/rechazos de Prestaciones Realizadas.
+ /// </summary>
+ /// <param name="ip">Reporte del cual se porcesarán las lineas</param>
+
+ private void InsertarDatosNecesarios()
+ {
return;
- //PRESTADOR\r
- Prestador pre = new Prestador();\r
- pre.Cuit = "11-11111111-1";\r
- ObjectSet os = this.Db.get( pre );\r
- if ( (os == null) || (os.size() == 0) )\r
- {\r
- Dominio.SDireccion dir;\r
- dir.Calle = "Gaona"; dir.CodigoPostal = "AB1504"; dir.Departamento = "";\r
- dir.Numero = 1234; dir.Piso = 0; dir.Provincia = Dominio.EProvincia.CAPITAL_FEDERAL;\r
- dir.Telefono = "5056-4567";\r
- pre.Direccion = dir;\r
- pre.Email = @"roberto@sancamilo.com";\r
- pre.FechaBaja = DateTime.MinValue;\r
- pre.Nombre = "Clinica San Camilo";\r
- pre.Password = "camilo";\r
- pre.Zona = new SZona( "Caballito", "Zona de Caballito" );\r
- this.Db.set( pre );\r
- }\r
-\r
- Prestacion p = new Prestacion();\r
- p.Codigo = "mierda" ;\r
-\r
- Categoria c = new Categoria();\r
- c.Codigo=10;\r
- c.Nombre="categoria 1";\r
- \r
- p.Categoria = c;\r
- p.Nombre= "hospital de clinicas";\r
- this.Db.set(p);\r
-\r
- Afiliado a = new Afiliado(69);\r
- a.Apellido = "apellido";\r
- a.EMail = "afiliado@aaa.com";\r
-\r
- this.Db.set(a);\r
- \r
-\r
- //AUTORIZACIONES\r
- /*AutorizacionAutomatica a = new AutorizacionAutomatica();\r
- a.Codigo = 123;\r
- os = this.Db.get( a );\r
- if ( (os == null) || (os.size() == 0) )\r
- {\r
- a.Afiliado = new Dominio.Afiliados.Afiliado( 987 );\r
- a.Prestacion = new Prestacion( "B01AC06" );\r
- a.Prestador = pre;\r
- a.FechaSolicitud = new DateTime( 2005, 5, 20 ); // 20 de mayo\r
- a.FechaRealizacion = DateTime.MinValue;\r
- a.FechaVencimiento = a.FechaSolicitud.AddMonths( 2 ); // 20 de julio, aprox\r
- a.Aprobada = true;\r
- a.PorcentajeCobertura = 12.5F;\r
- this.Db.set( a );\r
- }*/\r
- }\r
-\r
- #endregion Métodos Privados\r
-\r
- }\r
-}\r
+ //PRESTADOR
+ Prestador pre = new Prestador();
+ pre.Cuit = "11-11111111-1";
+ ObjectSet os = this.Db.get( pre );
+ if ( (os == null) || (os.size() == 0) )
+ {
+ Dominio.SDireccion dir;
+ dir.Calle = "Gaona"; dir.CodigoPostal = "AB1504"; dir.Departamento = "";
+ dir.Numero = 1234; dir.Piso = 0; dir.Provincia = Dominio.EProvincia.CAPITAL_FEDERAL;
+ dir.Telefono = "5056-4567";
+ pre.Direccion = dir;
+ pre.Email = @"roberto@sancamilo.com";
+ pre.FechaBaja = DateTime.MinValue;
+ pre.Nombre = "Clinica San Camilo";
+ pre.Password = "camilo";
+ pre.Zona = new SZona( "Caballito", "Zona de Caballito" );
+ this.Db.set( pre );
+ }
+
+ Prestacion p = new Prestacion();
+ p.Codigo = "mierda" ;
+
+ Categoria c = new Categoria();
+ c.Codigo=10;
+ c.Nombre="categoria 1";
+
+ p.Categoria = c;
+ p.Nombre= "hospital de clinicas";
+ this.Db.set(p);
+
+ Afiliado a = new Afiliado(69);
+ a.Apellido = "apellido";
+ a.EMail = "afiliado@aaa.com";
+
+ this.Db.set(a);
+
+
+ //AUTORIZACIONES
+ /*AutorizacionAutomatica a = new AutorizacionAutomatica();
+ a.Codigo = 123;
+ os = this.Db.get( a );
+ if ( (os == null) || (os.size() == 0) )
+ {
+ a.Afiliado = new Dominio.Afiliados.Afiliado( 987 );
+ a.Prestacion = new Prestacion( "B01AC06" );
+ a.Prestador = pre;
+ a.FechaSolicitud = new DateTime( 2005, 5, 20 ); // 20 de mayo
+ a.FechaRealizacion = DateTime.MinValue;
+ a.FechaVencimiento = a.FechaSolicitud.AddMonths( 2 ); // 20 de julio, aprox
+ a.Aprobada = true;
+ a.PorcentajeCobertura = 12.5F;
+ this.Db.set( a );
+ }*/
+ }
+
+ #endregion Métodos Privados
+
+ }
+}