]> git.llucax.com Git - z.facultad/75.10/miklolife.git/blob - demo/src/Controlador/AutorizacionController.cs
Se cargan los datos de la autorizacion para que el auditor los pueda ver y decidir
[z.facultad/75.10/miklolife.git] / demo / src / Controlador / AutorizacionController.cs
1 \r
2 #region Usings\r
3 \r
4 using System;\r
5 using System.Collections;\r
6 \r
7 using Dominio;\r
8 using Dominio.Autorizaciones;\r
9 using Dominio.Afiliados;\r
10 \r
11
12 using com.db4o;
13 using com.db4o.query;
14
15 #endregion Usings\r
16 \r
17 namespace Controlador\r
18 {\r
19         /// <summary>\r
20         /// Clase controlador que lleva a cabo los CU de "Pedir autorizacion automatica",\r
21         /// "Pedir autorizacion manual" y actualizar "autorizacion manual"\r
22         /// </summary>\r
23         public class AutorizacionController : Controller\r
24         {\r
25                 #region Constructores\r
26                 \r
27                 public AutorizacionController(DateTime fechaSolicitud): base()\r
28                 {\r
29 \r
30                 }\r
31 \r
32                 #endregion Constructores\r
33 \r
34                 #region Campos Privados \r
35 \r
36                 private Autorizacion _currentAutorizacion = null ;              \r
37                 \r
38                 #endregion Campos Privados\r
39 \r
40                 #region Propiedades privadas\r
41 \r
42                 public Autorizacion CurrentAutorizacion\r
43                 {
44                         get { return _currentAutorizacion; }                    
45                 }\r
46                 #endregion Propiedades privadas\r
47 \r
48                 #region Métodos Públicos\r
49                 \r
50                 /// <summary>\r
51                 /// Guarda un pedido de autorizacion manual.\r
52                 /// </summary>\r
53                 public bool guardarAutorizacionManual(String codPrestacion, String cuitPrestador\r
54                         , int codAfiliado, String observaciones)\r
55                 {\r
56                         bool codigosOk = true;\r
57                         \r
58                         //solo para testing--------------------\r
59                         this.InsertarDatosNecesarios();\r
60                         //------------------------------------\r
61 \r
62                         AutorizacionManual aut = new AutorizacionManual(DateTime.Now);\r
63                         \r
64                         #region Se insancia prestador, prestacion y afiliado, y se asocia a aut\r
65                         //Seteo prestacion\r
66                         \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
69                                 codigosOk=false;\r
70 \r
71                         //Seteo prestador\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
74                                 codigosOk=false;\r
75 \r
76                                 \r
77 \r
78                         //Seteo afiliado\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
81                                 codigosOk=false;\r
82         \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
86 \r
87 \r
88                         aut.Observaciones = observaciones;                      \r
89 \r
90                         //Signo prox codigo para autorizacion\r
91                         AutoIncrementable c = new AutoIncrementable ();\r
92                         using (c)\r
93                         {\r
94                                 aut.Codigo = c.NextAutorizacion();\r
95                         }\r
96 \r
97                         if (codigosOk) this.Db.set(aut);\r
98 \r
99                         return codigosOk;                       \r
100                 \r
101                 }\r
102 \r
103                 //PRE: No hay autorizaciones manuales y automaticas con mismo codigo!!\r
104                 public Autorizacion obtener(int codigo)\r
105                 {                       \r
106                         //Busco manual\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
109                         \r
110                         if (null==a)\r
111                         //Busco automatica, si no hay manual para ese codigo\r
112                         {\r
113                                 al = this.ObjectSetToArrayList( this.Db.get( new AutorizacionAutomatica(codigo) ) );\r
114                                 a = ((al.Count == 0)? null : al[0] ) as Autorizacion;\r
115                         }\r
116                         return a;\r
117                 }\r
118 \r
119                 public float evaluarAutorizacionAutomatica(String cuitPrestador, String codPrestacion, int codAfiliado, out int codAutorizacion)
120                 {
121
122                         bool codigosOk = true;\r
123                         float porcentajeDeCobertura = 0;\r
124                         string fundamentosResolucion = "Todo ok";\r
125                         \r
126                         AutorizacionAutomatica aut = new AutorizacionAutomatica(DateTime.Now);\r
127                         \r
128                         #region Se insancia prestador, prestacion y afiliado, y se asocia a aut\r
129                         //Seteo prestacion\r
130                         \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
133                                 codigosOk=false;\r
134 \r
135                         //Seteo prestador\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
138                                 codigosOk=false;\r
139 \r
140                                 \r
141 \r
142                         //Seteo afiliado\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
145                                 codigosOk=false;\r
146         \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
149                         \r
150 \r
151                         //Seteo fecha de vencimiento como dentro de 60 días\r
152                         aut.FechaVencimiento = DateTime.Now.AddDays(60);\r
153 \r
154                         try\r
155                         {
156                                 porcentajeDeCobertura = aut.Afiliado.VerificarCobertura(codPrestacion);
157                         }\r
158                         catch\r
159                         {
160                                 #warning verificar cobertura deberia tirar excepcion si explota, o se rechaza
161                                 //TODO Asignar motivo de rechazo a fundamentosResolucion
162                         }
163                         finally\r
164                         {
165                                 //Si porcentaje es 0, se registra rechazada
166                                 aut.setResolucion(fundamentosResolucion, porcentajeDeCobertura);
167                                 if (codigosOk) \r
168                                 {\r
169                                         this.Db.set(aut);\r
170                                         this._currentAutorizacion=aut;\r
171                                 }\r
172                                 #warning deberia obtener codigo de autorizacion ACA y devolverlo\r
173                                 codAutorizacion = 131313; //TODO SETEAR CODIGO BIEN!!\r
174                                 \r
175                                                 
176                         }
177                         return porcentajeDeCobertura;
178                 }
179 \r
180                 public ArrayList obtenerAutorizacionesPendientes()\r
181                 {                               
182                         Query query = Db.query();
183                         query.constrain(typeof(AutorizacionManual));
184                         query.descend("_fechaRealizacion").constrain(DateTime.MinValue);
185
186                         ObjectSet result = query.execute ();
187
188                         return ObjectSetToArrayList (result);
189                 }
190 \r
191 \r
192 \r
193                 #endregion Métodos Públicos\r
194 \r
195                 #region Métodos Privados\r
196 \r
197                 /// <summary>\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
201                 /// </summary>\r
202                 /// <param name="ip">Reporte del cual se porcesarán las lineas</param>\r
203                 \r
204                 private void InsertarDatosNecesarios()\r
205                 {\r
206                         //PRESTADOR\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
211                         {\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
223                         }\r
224 \r
225                         Prestacion p = new Prestacion();\r
226                         p.Codigo = "mierda" ;\r
227 \r
228                         Categoria c = new Categoria();\r
229                         c.Codigo=10;\r
230                         c.Nombre="categoria 1";\r
231                 \r
232                         p.Categoria = c;\r
233                         p.Nombre= "hospital de clinicas";\r
234                         this.Db.set(c);\r
235 \r
236                         Afiliado a = new Afiliado(69);\r
237                         a.Apellido = "apellido";\r
238                         a.EMail = "afiliado@aaa.com";\r
239 \r
240                         this.Db.set(a);\r
241                         \r
242 \r
243                         //AUTORIZACIONES\r
244                         /*AutorizacionAutomatica a = new AutorizacionAutomatica();\r
245                         a.Codigo = 123;\r
246                         os = this.Db.get( a );\r
247                         if ( (os == null) || (os.size() == 0) )\r
248                         {\r
249                                 a.Afiliado = new Dominio.Afiliados.Afiliado( 987 );\r
250                                 a.Prestacion = new Prestacion( "B01AC06" );\r
251                                 a.Prestador = pre;\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
255                                 a.Aprobada = true;\r
256                                 a.PorcentajeCobertura = 12.5F;\r
257                                 this.Db.set( a );\r
258                         }*/\r
259                 }\r
260 \r
261                 #endregion Métodos Privados\r
262 \r
263         }\r
264 }\r