3
É4à[(  ã               @   s*   d Z ddlZddlmZ G dd„ dƒZdS )u`  
This class calculates the diabetes mellitus risk based on the artcile:

  Wilson PWF, Meigs JB, Sullivan L, Fox CS, Nathan DM, Dâ€™Agostino RB.
  Prediction of Incident Diabetes Mellitus in Middle-aged Adults. The
  Framingham Offspring Study. Arch Intern Med. 2007;167(10):1068â€“1074.
  doi:10.1001/archinte.167.10.1068

@author: Vertigo BioSystems
é    N)Úexpc               @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚDiabetesMellitusRiskc             C   st   |j j| _|j j| _|j j| _|j j| _|j j| _|jj| _|jj	| _	|jj
| _
|jj| _|jj| _|jjƒ | _d S )N)Ú	analyticsÚfasting_glucose_levelÚcholesterol_hdl_CÚtriglyceridesÚtriglyceride_levelÚsbpÚsbp_treatedÚanthropometryÚheightÚweightÚageÚsexÚhereditary_pathologiesÚparental_diabetesÚdiabetesÚbmi)ÚselfÚhealth_info© r   úY/var/www/vitahealth/hygea.vitahealth/riskmap/src/vbs_riskmap/risk/DiabetesMellitusRisk.pyÚ__init__   s    









zDiabetesMellitusRisk.__init__c             C   s^  | j dk	ob| jdk	ob| jdk	ob| jdk	ob| jdk	ob| jdk	ob| jdk	ob| jdk	ob| jdkob| jdkrDd}| j dkr†| j dk r†|d }| jdkr¤| jd	k r¤|d
 }n| jdkr¶|d }| jdkrÔ| jdk rð|d }n| jdkrð| jdk rð|d }| jdkr|d }| jdkr|d }| jdks0| jdkr8|d
 }| j	|ƒ}nd}t
jdt|ƒ ƒ |S )aá  
        This function runs a basic test for diabetes-2 risks. The age must be
        between 45 and 60 years old.

        TBased on the original test made in the paper in the documentation.
        More information in the documentation.
        It computes some factors and add them to a final score, based on the
        papers.

        Parameters
        ----------
        self:

        Returns
        -------
        punctuation: float
        final punctuation

        Né-   é<   r   éd   é   é
   é   é   é   g      >@é   ÚMé(   ÚFé2   Té   é–   é‚   é   z.DiabetesMellitusRisk: risk_diabetes_mellitus: )r   r   r   r   r   r   r	   r
   r   Ú(punctuation_conversion_diabetes_mellitusÚloggingÚinfoÚstr)r   ÚpunctuationÚriskr   r   r   Úrisk_diabetes_mellitus&   s>    









z+DiabetesMellitusRisk.risk_diabetes_mellitusc             C   sÒ   |dk	rÊ|dkrdS |dkr dS |dkr,dS |dkr8dS |d	krDd
S |dkrPdS |dkr\dS |dkrhdS |dkrtdS |dkr€dS |dkrŒdS |dkr˜dS |dkr¤dS |dkr°dS |dkr¼dS |dkrÎdS ndS dS )a±  
        This function runs a punctuation conversion for the score get in
        diabetes mellitus risk test. The age must be between 45 and 60 years
        old.

        TBased on the original test made in the diabetes mellitus paper.
        More information in the documentation.

        Parameters
        ----------
        punctuation:  float

        Returns
        -------
        risk: float
        final risk

        Nr   r&   é   é   é   é   r!   é   é   é   é   é   é	   é   é   é   é   é   é   r   é   é   é   é!   é#   r   )r   r.   r   r   r   r*   \   sD    z=DiabetesMellitusRisk.punctuation_conversion_diabetes_mellitusc             C   sð  | j dk	ol| jdk	ol| jdk	ol| jdk	ol| jdk	ol| jdk	ol| jdk	ol| jdk	ol| jdk	ol| j dkol| j dkrÖd}| j dkr’| jdk r’|d }n&| j dkr¦|d }n| j dk r¸|d	 }| jd
krÊ|d }| jdkrÜ|d }| jdkrú| jdk rú|d }n*| jdkr|d }n| jdk r$|d	 }| jdkr8|d }| jdksP| jdkrX|d }| jdkrx| jdk rx|d }| jd
krš| jdk rº|d }n | jdkrº| jdk rº|d }ddt	| ƒ  }|d }nd}t
jdt|ƒ ƒ |S ) aW  
        This function runs a basic test for diabtes risks usign
        logistic regression.

        TBased on the original test made in the  diabetes article.
        More information in the documentation.

        Parameters
        ----------
        self:

        Returns
        -------
        risk: float
        final risk

        Nr   r   gÅ °rh@r%   éA   g;ßO—n’?g#Ûù~j¼´?r   r"   g{®Gáz„?Tg®Gázâ?r   r   gÝ$•CÓ?g      >@gq=
×£pí?r'   gffffffâ?r(   g¬Zd;ßß?r   r   g®Gáz®ÿ?r#   gh‘í|?5î?r$   r)   z9DiabetesMellitusRisk: risk_diabetes_mellitus_regression: gÅ °rhÀ)r   r   r   r   r
   r	   r   r   r   r   r+   Údebugr-   )r   Zz_coefficientr/   r   r   r   Ú!risk_diabetes_mellitus_regression“   sV    











z6DiabetesMellitusRisk.risk_diabetes_mellitus_regressionN)Ú__name__Ú
__module__Ú__qualname__r   r0   r*   rH   r   r   r   r   r      s   67r   )Ú__doc__r+   Úmathr   r   r   r   r   r   Ú<module>   s   