Parcourir la source

Agregar campos extras como entregado y programado

sebas il y a 4 ans
Parent
commit
58b24c0b08
5 fichiers modifiés avec 182 ajouts et 47 suppressions
  1. 27 1
      consulta.py
  2. 34 6
      models/medic_clinic.py
  3. 106 33
      static/src/js/clinicmedic.js
  4. 15 5
      views/clinic_history_sis.xml
  5. 0 2
      views/clinicmedic.xml

+ 27 - 1
consulta.py

@@ -26,6 +26,7 @@ class ClinicMedicvisit(models.Model):
 				'at_base': clinichistory.at_base or "",
 				'nro_salida': clinichistory.nro_salida or "",
                 'planned_start_date': clinichistory.planned_start_date or "",
+				'programado': clinichistory.programado or "",
 				'edad_paciente': clinichistory.edad_paciente or "",
 				'antig_trabajo': clinichistory.antig_trabajo or "",
                 'planned_end_date': clinichistory.planned_end_date or "",
@@ -48,11 +49,12 @@ class ClinicMedicvisit(models.Model):
                 'motivo': clinichistory.motivo or "",
                 'diagnostic': clinichistory.diagnostic or "",
 				'indicacion': clinichistory.indicacion or "",
-                'actions': clinichistory.actions or "",
                 'recommendations': clinichistory.recommendations or "",
 				'epicrisis': clinichistory.epicrisis or "",
                 'presuntivo': clinichistory.presuntivo or "",
                 'clasificacion': clinichistory.clasificacion or "",
+				'informado': clinichistory.informado or "",
+				'entregado': clinichistory.entregado or "",
                 'signature_image_paramedico': clinichistory.signature_image_paramedico or "",
 				'signature_image_medico': clinichistory.signature_image_medico or "",
                 'signature_image_paciente': clinichistory.signature_image_paciente or "",
@@ -102,3 +104,27 @@ class ClinicMedicvisitLine(models.Model):
 			})
 
 		return values
+
+class ClinicInsumosvisitLine(models.Model):
+	_inherit = 'clinic.insumos.line'
+
+	@api.model
+	def getClinicInsumosvisitLine(self,domain):
+		ClinicInsumosvisitLine = self.env['clinic.insumos.line'].search(domain)
+		values = []
+		for line in ClinicInsumosvisitLine:
+			values.append({
+                # ID
+				'id': line.id,
+                # LINE INFO
+                'clinicinsumos_id': line.clinichistory_id.id,
+                'product_id':[
+                    line.product_id.id,
+                    line.product_id.name,
+                ],
+                'quantity': line.quantity or "",
+                'brand': line.brand or "",
+                'number': line.number or "",
+			})
+
+		return values

+ 34 - 6
models/medic_clinic.py

@@ -36,14 +36,14 @@ class MedicClinic(models.Model):
     )
     partner_id = fields.Many2one(
         comodel_name='res.partner',
-        string='Cliente'
+        string='Seguro'
     )
     paciente_id = fields.Many2one(
         comodel_name='res.partner',
         string='Paciente'
     )
     lugar_visita = fields.Selection([('A domicilio','A domicilio'),('Vía pública','Vía pública'),('Comercio','Comercio'),('Sanatorio','Sanatorio')],'Lugar atendido')
-    tipo_paciente = fields.Selection([('directivo','Directivo'),('Cliente externo','Cliente externo'),('Trabajador','Trabajador'),('Otros','Otros')],'Tipo de paciente')
+    tipo_paciente = fields.Selection([('directivo','Directivo'),('Cliente externo','Cliente externo'),('Trabajador','Trabajador'),('Particular','Particular'),('Otros','Otros')],'Tipo de paciente')
     line_ids = fields.One2many(
         comodel_name='clinic.history.line',
         inverse_name='clinichistory_id',
@@ -65,6 +65,7 @@ class MedicClinic(models.Model):
     planned_end_date = fields.Datetime(
         string='Fecha y hora de Atención'
     )
+    programado = fields.Selection([('Programado','Programado')],'Programado')
     name_movil = fields.Char(
         string='Móvil'
     )
@@ -120,8 +121,13 @@ class MedicClinic(models.Model):
     indicacion = fields.Text(
         string='Indicación Médica'
     )
-    actions = fields.Text(
-        string='Acciones'
+    # actions = fields.Text(
+    #     string='Insumos utilizados'
+    # )
+    insumos_ids = fields.One2many(
+        comodel_name='clinic.insumos.line',
+        inverse_name='clinichistory_id',
+        string='Insumos Utilizados'
     )
     recommendations = fields.Text(
         string="Tratamiento Administrado"
@@ -133,11 +139,16 @@ class MedicClinic(models.Model):
         string='Diagnóstico Presuntivo'
     )
     clasificacion = fields.Selection([('Emergencia','Emergencia'),('Urgencia','Urgencia'),('Consulta','Consulta'),('Suministro','Suministro'),('T.A.R','T.A.R'),('tbr','T.B.R')],'Clasificación de la Atención')
-
+    informado = fields.Char(
+        string='Informado a:'
+    )
+    entregado = fields.Char(
+        string='Entrega de paciente a:'
+    )
 
     signature_image_paramedico= fields.Binary(string='Firma Paramédico')
     signature_image_medico= fields.Binary(string='Firma Médico')
-    signature_image_paciente = fields.Binary(string='Firma Paciente')
+    signature_image_paciente = fields.Binary(string='Firma Paciente o Responsable')
     state = fields.Selection([
         ('draft', 'Programado'),
         ('redraft', 'Reprogramado'),
@@ -287,3 +298,20 @@ class ClinicHistoryLine(models.Model):
     quantity = fields.Float(string='Cantidad', default=1.0)
     brand = fields.Char(string='Marca')
     number = fields.Char(string="Numero de serie")
+
+class ClinicInsumosLine(models.Model):
+    _name = 'clinic.insumos.line'
+    _description = 'Insumos Utilizados'
+    _inherit = ['mail.thread', 'ir.needaction_mixin']
+
+    clinichistory_id = fields.Many2one(
+        comodel_name='clinic.history',
+        string='Insumos Clinicos')
+
+    product_id = fields.Many2one(
+        comodel_name='product.product',
+        string='Product'
+    )
+    quantity = fields.Float(string='Cantidad', default=1.0)
+    brand = fields.Char(string='Marca')
+    number = fields.Char(string="Numero de serie")

+ 106 - 33
static/src/js/clinicmedic.js

@@ -44,6 +44,9 @@ openerp.clinic_history_medic = function (instance, local) {
                 return self.fecthClinicMedicvisitLine();
             }).then(function(ClinicMedicvisitLine){
                 self.ClinicMedicvisitLine = ClinicMedicvisitLine;
+                return self.fecthClinicInsumosvisitLine();
+            }).then(function(ClinicInsumosvisitLine){
+                self.ClinicInsumosvisitLine = ClinicInsumosvisitLine;
                 return self.drawPDF();
             });
             return false;
@@ -69,6 +72,18 @@ openerp.clinic_history_medic = function (instance, local) {
             });
         },
 
+        fecthClinicInsumosvisitLine: function () {
+            var self = this;
+            var clinicinsumos_ids = _.flatten(_.map(self.ClinicMedicvisit,function(map){
+                return map.id;
+            }));
+            var domain=[['clinichistory_id','in',clinicinsumos_ids]];
+            var ClinicInsumosvisitLine = new instance.web.Model('clinic.insumos.line');
+            return ClinicInsumosvisitLine.call('getClinicInsumosvisitLine',[domain], {
+                context: new instance.web.CompoundContext()
+            });
+        },
+
         drawPDF:function(){
             var self = this;
             var doc = self.ClinicMedicvisit.shift();
@@ -76,6 +91,8 @@ openerp.clinic_history_medic = function (instance, local) {
             var docWorkItem = [];
             var getColumns = [];
             var getColumns1 = [];
+            var docWorkItem1 = [];
+            var getColumnsMaterial1 = [];
 
             var pdfDoc = new jsPDF();
             pdfDoc.addImage("data:image/png;base64," + self.valorNull(doc.company_logo), 'PNG', 14, 3, 35, 20);
@@ -102,7 +119,7 @@ openerp.clinic_history_medic = function (instance, local) {
             });
 
             getColumns.push({
-                title : 'Insumos utilizados:',
+                title : 'Servicios',
                 dataKey: 'product',
                 align: 'left',
             });
@@ -117,6 +134,37 @@ openerp.clinic_history_medic = function (instance, local) {
                 align: 'center',
             });
 
+            var ClinicInsumosvisitLine = self.ClinicInsumosvisitLine;
+               for (var i = 0; i < ClinicInsumosvisitLine.length; i++) {
+                   docWorkItem1.push({
+                       xnumber : i + 1,
+                       product: ClinicInsumosvisitLine[i].product_id[1],
+                       quantity : ClinicInsumosvisitLine[i].quantity,
+                       number : ClinicInsumosvisitLine[i].number
+                   })
+            }
+
+            getColumnsMaterial1.push({
+                title : 'N°',
+                dataKey: 'xnumber',
+                align: 'center',
+            });
+            getColumnsMaterial1.push({
+                title : 'Insumos Utilizados',
+                dataKey: 'product',
+                align: 'left',
+            });
+            getColumnsMaterial1.push({
+                title : 'Cantidad',
+                dataKey: 'quantity',
+                align: 'center',
+            });
+            getColumnsMaterial1.push({
+                title : 'Estado',
+                dataKey: 'number',
+                align: 'center',
+            });
+
             pdfDoc.autoTable(getColumns, docItem, {
                 theme: 'grid',
                 styles: {
@@ -131,7 +179,7 @@ openerp.clinic_history_medic = function (instance, local) {
                     color: 'black',
                     fontStyle: 'bold',
                     textColor: [0, 0, 0],
-                    fontSize: 9
+                    fontSize: 8
                 },
                 columnStyles: {
                     xnumber : {halign:'center',columnWidth: '4px'},
@@ -256,6 +304,11 @@ openerp.clinic_history_medic = function (instance, local) {
                     pdfDoc.setTextColor(40);
                     pdfDoc.text(58,42, moment(doc.planned_start_date).format('DD/MM/YYYY HH:mm'));
 
+                    pdfDoc.setFontSize(10);
+                    pdfDoc.setFontStyle('normal');
+                    pdfDoc.setTextColor(40);
+                    pdfDoc.text(89,42,self.valorNull(doc.programado));
+
                     pdfDoc.setFontSize(10);
                     pdfDoc.setFontStyle('bold');
                     pdfDoc.setTextColor(10);
@@ -271,10 +324,6 @@ openerp.clinic_history_medic = function (instance, local) {
                     // pdfDoc.setTextColor(40);
                     // pdfDoc.text(14,42,'Factura N°: ');
                     //
-                    // pdfDoc.setFontSize(10);
-                    // pdfDoc.setFontStyle('normal');
-                    // pdfDoc.setTextColor(40);
-                    // pdfDoc.text(29,42,self.valorNull(doc.nro_factura));
 
                     pdfDoc.setFontSize(10);
                     pdfDoc.setFontStyle('bold');
@@ -554,20 +603,44 @@ openerp.clinic_history_medic = function (instance, local) {
                 }
             });
 
+            /*
+            =============================================================
+                INSUMOS UTILIZADOS
+            =============================================================
+            */
+            var finalY = pdfDoc.autoTable.previous.finalY;
+            pdfDoc.autoTable(getColumnsMaterial1, docWorkItem1, {
+                theme: 'grid',
+                startY: finalY +3,
+                styles: {
+                    overflow: 'linebreak',
+                    columnWidth: 'auto',
+                    fontSize: 7,
 
+                },
+                headerStyles: {
+                    fillColor: [255, 255, 255],
+                    borderColor: [150, 152, 154],
+                    fontSize: 8,
+                    textColor: [0, 0, 0]
+                },
+                columnStyles: {
+                    xnumber : {columnWidth: '8px', halign: 'center'},
+                    product: {columnWidth: '8px', halign: 'left'},
+                    quantity : {columnWidth: '8px', halign: 'center'},
+                    number : {columnWidth: '4px', halign: 'center'},
+                },
+                margin: {horizontal: 14},
+                // addPageContent: function (data) {
+                //     pdfDoc.setFontSize(12);
+                //     pdfDoc.setFontStyle('bold');
+                //     pdfDoc.setTextColor(40);
+                //     pdfDoc.text(15,finalY + 7,'CONTROL DE CALIDAD, FICHAS Y LACRES');
+                // }
+            });
 
-            // pdfDoc.setFontSize(10);
-            // pdfDoc.setFontStyle('bold');
-            // pdfDoc.setTextColor(10);
-            // pdfDoc.text(14,127,'Insumos utilizados: ');
-            //
-            // pdfDoc.setFontSize(10);
-            // pdfDoc.setFontStyle('normal');
-            // pdfDoc.setTextColor(40);
-            // pdfDoc.text(self.valorNull(doc.actions), 14,pdfDoc.autoTable.previous.finalY + 10, {maxWidth:188,align:'justify'});
-
-            pdfDoc.rect(13, pdfDoc.autoTable.previous.finalY + 1, pdfDoc.internal.pageSize.getWidth() - 18 , 69, 'S');
-            pdfDoc.rect(13, pdfDoc.autoTable.previous.finalY + 1, pdfDoc.internal.pageSize.getWidth() - 18 , 77, 'S');
+            pdfDoc.rect(13, pdfDoc.autoTable.previous.finalY + 1, pdfDoc.internal.pageSize.getWidth() - 18 , 64, 'S');
+            pdfDoc.rect(13, pdfDoc.autoTable.previous.finalY + 1, pdfDoc.internal.pageSize.getWidth() - 18 , 72, 'S');
 
             pdfDoc.setFontSize(10);
             pdfDoc.setFontStyle('bold');
@@ -602,27 +675,27 @@ openerp.clinic_history_medic = function (instance, local) {
             pdfDoc.setFontSize(10);
             pdfDoc.setFontStyle('bold');
             pdfDoc.setTextColor(10);
-            pdfDoc.text(14,pdfDoc.autoTable.previous.finalY + 30,'Diagnóstico Presuntivo:');
+            pdfDoc.text(14,pdfDoc.autoTable.previous.finalY + 25,'Diagnóstico Presuntivo:');
 
             pdfDoc.setFontSize(10);
             pdfDoc.setFontStyle('normal');
             pdfDoc.setTextColor(40);
-            pdfDoc.text(14,pdfDoc.autoTable.previous.finalY + 35, self.valorNull(doc.presuntivo));
+            pdfDoc.text(14,pdfDoc.autoTable.previous.finalY + 30, self.valorNull(doc.presuntivo));
 
             pdfDoc.setFontSize(10);
             pdfDoc.setFontStyle('bold');
             pdfDoc.setTextColor(40);
-            pdfDoc.text(14,pdfDoc.autoTable.previous.finalY + 45,'Firma y Sello Profesional SIS');
+            pdfDoc.text(14,pdfDoc.autoTable.previous.finalY + 40,'Firma y Sello Profesional SIS');
 
             pdfDoc.setFontSize(10);
             pdfDoc.setFontStyle('normal');
             pdfDoc.setTextColor(40);
-            pdfDoc.text(110,pdfDoc.autoTable.previous.finalY + 45,'Firma Paciente o Responsable');
+            pdfDoc.text(110,pdfDoc.autoTable.previous.finalY + 40,'Firma Paciente o Responsable');
 
             pdfDoc.setFontSize(10);
             pdfDoc.setFontStyle('bold');
             pdfDoc.setTextColor(40);
-            pdfDoc.text(14,pdfDoc.autoTable.previous.finalY + 50,'Paramédico');
+            pdfDoc.text(14,pdfDoc.autoTable.previous.finalY + 45,'Paramédico');
 
             pdfDoc.setFontSize(10);
             pdfDoc.setFontStyle('normal');
@@ -633,12 +706,12 @@ openerp.clinic_history_medic = function (instance, local) {
             pdfDoc.setFontSize(10);
             pdfDoc.setFontStyle('normal');
             pdfDoc.setTextColor(40);
-            pdfDoc.text(110,pdfDoc.autoTable.previous.finalY + 50,'C.I.Nª:');
+            pdfDoc.text(110,pdfDoc.autoTable.previous.finalY + 45,'C.I.Nª:');
 
             pdfDoc.setFontSize(10);
             pdfDoc.setFontStyle('normal');
             pdfDoc.setTextColor(40);
-            pdfDoc.text(120,pdfDoc.autoTable.previous.finalY + 50, self.valorNull(doc.presuntivo));
+            pdfDoc.text(120,pdfDoc.autoTable.previous.finalY + 45, self.valorNull(doc.presuntivo));
 
             pdfDoc.setFontSize(10);
             pdfDoc.setFontStyle('normal');
@@ -650,45 +723,45 @@ openerp.clinic_history_medic = function (instance, local) {
             pdfDoc.setFontSize(10);
             pdfDoc.setFontStyle('bold');
             pdfDoc.setTextColor(40);
-            pdfDoc.text(14,pdfDoc.autoTable.previous.finalY + 60,'Médico');
+            pdfDoc.text(14,pdfDoc.autoTable.previous.finalY + 55,'Médico');
 
             pdfDoc.setFontSize(10);
             pdfDoc.setFontStyle('normal');
             pdfDoc.setTextColor(40);
-            pdfDoc.addImage("data:image/png;base64," + self.valorNull(doc.signature_image_medico), 'PNG', 55, pdfDoc.autoTable.previous.finalY + 55, 18, 15);
+            pdfDoc.addImage("data:image/png;base64," + self.valorNull(doc.signature_image_medico), 'PNG', 55, pdfDoc.autoTable.previous.finalY + 50, 18, 15);
           //  pdfDoc.text(30,pdfDoc.autoTable.previous.finalY + 60, self.valorNull(doc.signature_image_medico));
 
             pdfDoc.setFontSize(10);
             pdfDoc.setFontStyle('normal');
             pdfDoc.setTextColor(40);
           //  pdfDoc.text(65,pdfDoc.autoTable.previous.finalY + 60, self.valorNull(doc.user_image));
-            pdfDoc.addImage("data:image/png;base64," + self.valorNull(doc.user_image), 'PNG', 75, pdfDoc.autoTable.previous.finalY + 50, 18, 15);
+            pdfDoc.addImage("data:image/png;base64," + self.valorNull(doc.user_image), 'PNG', 75, pdfDoc.autoTable.previous.finalY + 45, 18, 15);
 
             pdfDoc.setFontSize(10);
             pdfDoc.setFontStyle('bold');
             pdfDoc.setTextColor(40);
-            pdfDoc.text(14,pdfDoc.autoTable.previous.finalY + 65,'Informado a: ');
+            pdfDoc.text(14,pdfDoc.autoTable.previous.finalY + 60,'Informado a: ');
 
             pdfDoc.setFontSize(10);
             pdfDoc.setFontStyle('normal');
             pdfDoc.setTextColor(40);
-            pdfDoc.text(30,pdfDoc.autoTable.previous.finalY + 65, ' ');
+            pdfDoc.text(37,pdfDoc.autoTable.previous.finalY + 60, self.valorNull(doc.informado));
 
             pdfDoc.setFontSize(10);
             pdfDoc.setFontStyle('bold');
             pdfDoc.setTextColor(40);
-            pdfDoc.text(110,pdfDoc.autoTable.previous.finalY + 65,'Entrega a: ');
+            pdfDoc.text(110,pdfDoc.autoTable.previous.finalY + 60,'Entrega a: ');
 
             pdfDoc.setFontSize(10);
             pdfDoc.setFontStyle('normal');
             pdfDoc.setTextColor(40);
-            pdfDoc.text(128,pdfDoc.autoTable.previous.finalY + 65, ' ');
+            pdfDoc.text(129,pdfDoc.autoTable.previous.finalY + 60, self.valorNull(doc.entregado));
 
 
             pdfDoc.setFontSize(10);
             pdfDoc.setFontStyle('bold');
             pdfDoc.setTextColor(40);
-            pdfDoc.text(70,pdfDoc.autoTable.previous.finalY + 75,'"EXCELENCIA EN SERVICIOS DE SALUD"');
+            pdfDoc.text(70,pdfDoc.autoTable.previous.finalY + 70,'"EXCELENCIA EN SERVICIOS DE SALUD"');
 
             pdfDoc.save('HISTORIA CLINICA PRE-HOSPITALAR.pdf');
         },

+ 15 - 5
views/clinic_history_sis.xml

@@ -39,7 +39,7 @@
                     <separator/>
                     <group expand="0" string="Agrupado por...">
                         <filter string="Médico" domain="[]" context="{'group_by':'user_id'}" />
-                        <filter string="Cliente" domain="[]" context="{'group_by':'partner_id'}" />
+                        <filter string="Seguro" domain="[]" context="{'group_by':'partner_id'}" />
                         <filter string="Estado" name="State" context="{'group_by':'state'}"/>
                     </group>
                 </search>
@@ -78,6 +78,7 @@
                                 <field name="order_date" required="1"/>
                                 <field name="name_movil"/>
                                 <field name="planned_start_date" required="1"/>
+                                <field name="programado"/>
                                 <field name="tipo_paciente"/>
                                 <field name="uso_gel"/>
                             </group>
@@ -134,6 +135,8 @@
                         <notebook>
                             <page string="Tratamiento Administrado (medicamentos y dosis)">
                                 <field name="line_ids"/>
+                                <separator string="Insumos utilizados"/>
+                                <field name="insumos_ids"/>
                                 <group >
                                     <group>
                                         <field name="respuesta_tratamiento" string="Respuesta al Tratamiento: " />
@@ -143,19 +146,26 @@
                                     </group>
                                 </group>
 
-                                <separator string="Acciones"/>
-                                <field name="actions" placeholder="describe las acciones..."  />
+
                                 <separator string="Recomendaciones y sugerencias"/>
-                                <field name="recommendations" placeholder="describe las recommendaciones..."  />
+                                <field name="recommendations" placeholder="describe las recomendaciones..."  />
                                 <separator string="Epicrisis"/>
                                 <field name="epicrisis" placeholder="describe el Epicrisis..."  />
                                 <separator string="Presuntivo"/>
                                 <field name="presuntivo" placeholder="describe presuntivo ..."  />
-                                <separator string="Clasificacion"/>
+                                <separator string="Clasificacion de la atención"/>
                                 <field name="clasificacion"   />
                           <!--      <xpath expr="//field[@name='clasificacion']" position="attributes">
                             			  <attribute name="invisible">1</attribute>
                                 </xpath>  -->
+                                <group>
+                                    <group>
+                                        <field name="informado"/>
+                                    </group>
+                                    <group>
+                                        <field name="entregado"/>
+                                    </group>
+                                </group>
                                 <xpath>
                             			 <label for="signature_image_paciente" class="oe_edit_only"/>
                             			 <h2><field name="signature_image_paciente" widget="signature"/></h2>

+ 0 - 2
views/clinicmedic.xml

@@ -6,8 +6,6 @@
             <field name="model">clinic.history</field>
             <field name="inherit_id" ref="clinic_history_medic.form_clinic_history_sis"/>
             <field name="arch" type="xml">
-							 <!-- <xpath expr="//field[@name]" position="inside">  -->
-							  <!-- <xpath	expr="//footer" position="inside"> -->
                 <xpath expr="//div[@class='oe_title']" position="after">
 										<div class="clinichistorymedic_button_box oe_right oe_button_box" id="clinichistorymedic_button_container"></div>
 								</xpath>