Source code for nh_eobs_mental_health.report.clinical_review

# -*- coding: utf-8 -*-
import logging

from openerp import models, api
from openerp.addons.nh_eobs.report import helpers

_logger = logging.getLogger(__name__)


[docs]class NhClinicalObservationReport(models.Model): _name = 'report.nh.clinical.observation_report' _inherit = 'report.nh.clinical.observation_report'
[docs] @api.model def get_ews_observations(self, data, spell_activity_id): ews_activities = super(NhClinicalObservationReport, self)\ .get_ews_observations(data, spell_activity_id) return self.add_extra_ews_with_clinical_review_in_datetime_range( data, ews_activities, spell_activity_id )
[docs] def add_extra_ews_with_clinical_review_in_datetime_range( self, data, ews_activities, spell_activity_id): ews_activities_outside_datetime_range = \ self.get_ews_activity_ids_with_clinical_review_in_datetime_range( spell_activity_id, data.start_time, data.end_time ) ews_activity_ids_outside_datetime_range = \ [ews.id for ews in ews_activities_outside_datetime_range] extra_ews_activity_ids = self.get_ids_not_already_in_dict_list( ews_activities, ews_activity_ids_outside_datetime_range ) activity_model = self.pool['nh.activity'] extra_ews_activities = activity_model.read( self.env.cr, self.env.uid, extra_ews_activity_ids ) extra_ews_activities = self.get_model_values( 'nh.clinical.patient.observation.ews', extra_ews_activities ) extra_ews_activities = \ self.convert_partial_reasons_to_labels(extra_ews_activities) self.add_triggered_action_keys_to_obs_dicts(extra_ews_activities) return self.add_extra_ews_to_list(ews_activities, extra_ews_activities)
[docs] def get_ews_activity_ids_with_clinical_review_in_datetime_range( self, spell_activity_id, start_datetime, end_datetime ): domain = helpers.create_search_filter( spell_activity_id, 'nh.clinical.notification.clinical_review', start_datetime, end_datetime, states=None, date_field='date_scheduled' ) activity_model = self.env['nh.activity'] clinical_review_notifications = activity_model.search(domain) return [clinical_review.creator_id for clinical_review in clinical_review_notifications]
[docs] @classmethod def get_ids_not_already_in_dict_list(cls, dict_list, ids): dict_list_ids = [d['id'] for d in dict_list] return list(set(ids) - set(dict_list_ids))
[docs] @classmethod def add_extra_ews_to_list(cls, some_ews, more_ews): number_extra_ews = abs(len(some_ews) - len(more_ews)) if number_extra_ews: _logger.info( "{} extra EWS observations added to the report from " "outside the date range specified but triggered a clinical " "review task that is within the date range." .format(number_extra_ews) ) some_ews.extend(more_ews) return some_ews