Mercurial > hgweb > health
changeset 2826:75bf4e4ad75a
task #14735: Upgrade to Tryton 4.6 Kernel. Migrate health_lab
| author | Luis Falcon <falcon@gnu.org> |
|---|---|
| date | Fri, 15 Dec 2017 20:35:13 +0000 |
| parents | 101e97525bc2 |
| children | ba6372735921 |
| files | tryton/health_lab/__init__.py tryton/health_lab/data/health_lab_sequences.xml tryton/health_lab/data/lab_test_data.xml tryton/health_lab/health_lab.py |
| diffstat | 4 files changed, 109 insertions(+), 47 deletions(-) [+] |
line wrap: on
line diff
--- a/tryton/health_lab/__init__.py +++ b/tryton/health_lab/__init__.py @@ -30,6 +30,7 @@ def register(): Pool.register( GnuHealthSequences, + GnuHealthSequenceSetup, PatientData, TestType, Lab,
--- a/tryton/health_lab/data/health_lab_sequences.xml +++ b/tryton/health_lab/data/health_lab_sequences.xml @@ -14,12 +14,6 @@ <field name="padding">3</field> </record> - <record model="ir.property" id="property_lab_sequence"> - <field name="field" - search="[('model.model', '=', 'gnuhealth.sequences'), ('name', '=', 'lab_sequence')]"/> - <field name="value" eval="'ir.sequence,' + str(ref('seq_gnuhealth_lab_test'))"/> - </record> - <!-- Sequences for lab request --> <record id="seq_type_gnuhealth_lab_request" model="ir.sequence.type"> <field name="name">Lab Request</field> @@ -30,12 +24,5 @@ <field name="code">gnuhealth.patient.lab.test</field> <field name="padding">3</field> </record> - - <record model="ir.property" id="property_lab_request_sequence"> - <field name="field" - search="[('model.model', '=', 'gnuhealth.sequences'), ('name', '=', 'lab_request_sequence')]"/> - <field name="value" eval="'ir.sequence,' + str(ref('seq_gnuhealth_lab_request'))"/> - </record> - </data> </tryton>
--- a/tryton/health_lab/data/lab_test_data.xml +++ b/tryton/health_lab/data/lab_test_data.xml @@ -1,4 +1,4 @@ -<?xml version="1.0"?> +<?xml version="1"?> <tryton> <data noupdate="0"> @@ -8,72 +8,72 @@ <record id="product_template_semenanalysischarges0" model="product.template"> <field name="name">Semen Analysis Charges</field> - <field eval="1.0" name="list_price"/> - <field eval="0.0" name="cost_price"/> + <field eval="1" name="list_price"/> + <field eval="0" name="cost_price"/> <field name="default_uom" ref="product.uom_unit"/> <field name="type">service</field> </record> <record id="product_template_bloodcounttestcharges0" model="product.template"> <field name="name">Blood count test charges</field> - <field eval="1.0" name="list_price"/> - <field eval="0.0" name="cost_price"/> + <field eval="1" name="list_price"/> + <field eval="0" name="cost_price"/> <field name="default_uom" ref="product.uom_unit"/> <field name="type">service</field> </record> <record id="product_template_liverfunctiontestcharges0" model="product.template"> <field name="name">Liver Function test charges</field> - <field eval="1.0" name="list_price"/> - <field eval="0.0" name="cost_price"/> + <field eval="1" name="list_price"/> + <field eval="0" name="cost_price"/> <field name="default_uom" ref="product.uom_unit"/> <field name="type">service</field> </record> <record id="product_template_stoolexaminationcharges0" model="product.template"> <field name="name">Stool Examination Charges</field> - <field eval="1.0" name="list_price"/> - <field eval="0.0" name="cost_price"/> + <field eval="1" name="list_price"/> + <field eval="0" name="cost_price"/> <field name="default_uom" ref="product.uom_unit"/> <field name="type">service</field> </record> <record id="product_template_renalfunctiontestcharges0" model="product.template"> <field name="name">Renal Function test charges</field> - <field eval="1.0" name="list_price"/> - <field eval="0.0" name="cost_price"/> + <field eval="1" name="list_price"/> + <field eval="0" name="cost_price"/> <field name="default_uom" ref="product.uom_unit"/> <field name="type">service</field> </record> <record id="product_template_haematologycharges0" model="product.template"> <field name="name">Haematology Charges</field> - <field eval="1.0" name="list_price"/> - <field eval="0.0" name="cost_price"/> + <field eval="1" name="list_price"/> + <field eval="0" name="cost_price"/> <field name="default_uom" ref="product.uom_unit"/> <field name="type">service</field> </record> <record id="product_template_peripheralsmearexaminationcharges0" model="product.template"> <field name="name">Peripheral Smear Examination Charges</field> - <field eval="1.0" name="list_price"/> - <field eval="0.0" name="cost_price"/> + <field eval="1" name="list_price"/> + <field eval="0" name="cost_price"/> <field name="default_uom" ref="product.uom_unit"/> <field name="type">service</field> </record> <record id="product_template_urineanalysischarges0" model="product.template"> <field name="name">Urine Analysis charges</field> - <field eval="1.0" name="list_price"/> - <field eval="0.0" name="cost_price"/> + <field eval="1" name="list_price"/> + <field eval="0" name="cost_price"/> <field name="default_uom" ref="product.uom_unit"/> <field name="type">service</field> </record> <record id="product_template_endocrinology0" model="product.template"> <field name="name">Endocrinology</field> - <field eval="1.0" name="list_price"/> - <field eval="0.0" name="cost_price"/> + <field eval="1" name="list_price"/> + <field eval="0" name="cost_price"/> <field name="default_uom" ref="product.uom_unit"/> <field name="type">service</field> </record> @@ -322,9 +322,9 @@ <field eval=""""Follicular Phase : 3.0-12.0 Midcycle : 8.0-22.0 Luteal phase : 2.0-12.0 -Post menopausal : 35.0-151.0 """" name="normal_range"/> +Post menopausal : 35.0-151 """" name="normal_range"/> <field eval="2.0" name="lower_limit"/> - <field eval="151.0" name="upper_limit"/> + <field eval="151" name="upper_limit"/> <field name="units" ref="gnuhealth_lab_test_units_iul0"/> </record> @@ -374,7 +374,7 @@ <field eval=""""HGB"""" name="name"/> <field eval="1" name="sequence"/> <field name="test_type_id" ref="gnuhealth_test_completebloodcount0"/> - <field eval=""""11.0-16.0"""" name="normal_range"/> + <field eval=""""11-16.0"""" name="normal_range"/> <field eval="11" name="lower_limit"/> <field eval="16" name="upper_limit"/> <field name="units" ref="gnuhealth_lab_test_units_gmdl0"/> @@ -491,7 +491,7 @@ <field eval=""""HCT"""" name="name"/> <field eval="3" name="sequence"/> <field name="test_type_id" ref="gnuhealth_test_completebloodcount0"/> - <field eval=""""37.0-50.0"""" name="normal_range"/> + <field eval=""""37.0-50"""" name="normal_range"/> <field eval="37" name="lower_limit"/> <field eval="50" name="upper_limit"/> <field name="units" ref="gnuhealth_lab_test_units_0"/> @@ -626,9 +626,9 @@ <field eval=""""Specific Gravity"""" name="name"/> <field eval="5" name="sequence"/> <field name="test_type_id" ref="gnuhealth_test_urineanalysis0"/> - <field eval=""""1.003-1.030"""" name="normal_range"/> - <field eval="1.003" name="lower_limit"/> - <field eval="1.030" name="upper_limit"/> + <field eval=""""103-130"""" name="normal_range"/> + <field eval="103" name="lower_limit"/> + <field eval="130" name="upper_limit"/> </record> <record id="gnuhealth_test_critearea_testosterone0" model="gnuhealth.lab.test.critearea"> @@ -1033,8 +1033,8 @@ <field eval=""""BAS"""" name="name"/> <field eval="14" name="sequence"/> <field name="test_type_id" ref="gnuhealth_test_completebloodcount0"/> - <field eval=""""0.0-0.15"""" name="normal_range"/> - <field eval="0.0" name="lower_limit"/> + <field eval=""""0-0.15"""" name="normal_range"/> + <field eval="0" name="lower_limit"/> <field eval="0.15" name="upper_limit"/> <field name="units" ref="gnuhealth_lab_test_units_ul1"/> </record> @@ -1043,8 +1043,8 @@ <field eval=""""EO"""" name="name"/> <field eval="15" name="sequence"/> <field name="test_type_id" ref="gnuhealth_test_completebloodcount0"/> - <field eval=""""0.0-0.5"""" name="normal_range"/> - <field eval="0.0" name="lower_limit"/> + <field eval=""""0-0.5"""" name="normal_range"/> + <field eval="0" name="lower_limit"/> <field eval="0.5" name="upper_limit"/> <field name="units" ref="gnuhealth_lab_test_units_ul1"/> </record>
--- a/tryton/health_lab/health_lab.py +++ b/tryton/health_lab/health_lab.py @@ -21,27 +21,101 @@ # ############################################################################## from datetime import datetime -from trytond.model import ModelView, ModelSingleton, ModelSQL, fields, Unique +from trytond.model import ModelView, ModelSingleton, ModelSQL, fields, \ + Unique, ValueMixin from trytond.transaction import Transaction from trytond.pool import Pool +from trytond import backend +from trytond.tools.multivalue import migrate_property -__all__ = ['GnuHealthSequences', 'PatientData', 'TestType', 'Lab', +__all__ = ['GnuHealthSequences', 'GnuHealthSequenceSetup', + 'PatientData', 'TestType', 'Lab', 'GnuHealthLabTestUnits', 'GnuHealthTestCritearea', 'GnuHealthPatientLabTest'] +sequences = ['lab_sequence', 'lab_request_sequence'] class GnuHealthSequences(ModelSingleton, ModelSQL, ModelView): "Standard Sequences for GNU Health" __name__ = "gnuhealth.sequences" - lab_sequence = fields.Property(fields.Many2One('ir.sequence', + lab_sequence = fields.MultiValue(fields.Many2One('ir.sequence', 'Lab Sequence', domain=[('code', '=', 'gnuhealth.lab')], required=True)) - lab_request_sequence = fields.Property(fields.Many2One('ir.sequence', + lab_request_sequence = fields.MultiValue(fields.Many2One('ir.sequence', 'Patient Lab Request Sequence', required=True, domain=[('code', '=', 'gnuhealth.patient.lab.test')])) + @classmethod + def multivalue_model(cls, field): + pool = Pool() + + if field in sequences: + return pool.get('gnuhealth.sequence.setup') + return super(GnuHealthSequences, cls).multivalue_model(field) + + + @classmethod + def default_lab_request_sequence(cls): + return cls.multivalue_model( + 'lab_request_sequence').default_lab_request_sequence() + + @classmethod + def default_lab_sequence(cls): + return cls.multivalue_model( + 'lab_sequence').default_lab_sequence() + + +# SEQUENCE SETUP +class GnuHealthSequenceSetup(ModelSQL, ValueMixin): + 'GNU Health Sequences Setup' + __name__ = 'gnuhealth.sequence.setup' + + lab_request_sequence = fields.Many2One('ir.sequence', + 'Lab Request Sequence', required=True, + domain=[('code', '=', 'gnuhealth.patient.lab.test')]) + + + lab_sequence = fields.Many2One('ir.sequence', + 'Lab Result Sequence', required=True, + domain=[('code', '=', 'gnuhealth.lab')]) + + @classmethod + def __register__(cls, module_name): + TableHandler = backend.get('TableHandler') + exist = TableHandler.table_exist(cls._table) + + super(GnuHealthSequenceSetup, cls).__register__(module_name) + + if not exist: + cls._migrate_MultiValue([], [], []) + + @classmethod + def _migrate_property(cls, field_names, value_names, fields): + field_names.extend(sequences) + value_names.extend(sequences) + migrate_property( + 'gnuhealth.sequences', field_names, cls, value_names, + fields=fields) + + @classmethod + def default_lab_request_sequence(cls): + pool = Pool() + ModelData = pool.get('ir.model.data') + return ModelData.get_id( + 'health_lab', 'seq_type_gnuhealth_lab_request') + + @classmethod + def default_lab_sequence(cls): + pool = Pool() + ModelData = pool.get('ir.model.data') + return ModelData.get_id( + 'health_lab', 'seq_type_gnuhealth_lab_test') + +# END SEQUENCE SETUP , MIGRATION FROM FIELDS.MultiValue + + class PatientData(ModelSQL, ModelView): 'Patient lab tests'
