#ifndef __CONTROLE_H__
#define __CONTROLE_H__

#define MAXVEC 100     			/* Nombre maximum d'erreur */

#include "Ris.h"
#include "Ssrfg2.h"

/* DECLARATION DES VARIABLES EXTERNES*/
extern short nbactes;         /* Nb. d'actes */       
extern unsigned char prof_diags[]; /* Profils de tous les diags */
extern unsigned char prof_actes[] ;/* profil des actes */
extern unsigned char profctl[];    /* profil de contrôle de tous les diags */

extern short lgacte;

extern struct ACTE tab_actes[];

extern short _dxmsize;        /* Taille du profil de diags */ 
extern short lgdiag;          /* Taille des diagnostic */
extern short index(char s1[],char s2[],int nb);
extern void convdate (char *adat,short *p_jj,short *p_mm,short *p_aa) ;

/*****************************************************************************
Fonction ctlsej
Description : 
Lancement de la fonction de contrôle des champs des RUMs
******************************************************************************/                                                               
short ctlsej(short vecerr[]);
                                                               
/******************************************************************************
Fonctions de controle de chacun des champs du RUM 

fcnf	: Fonction de controle du n° finess
fcnr	: Fonction de controle du n° de RHS
fcass	: Fonction de contrôle du n° de SS
fcrgb	: Fonction de contrôle du rang de bénéficiaire
fcth	: Fonction de contrôle du type d'hospitalisation
fcdn	: Fonction de controle de la date de naissance
fcsx	: Fonction de controle du sexe
fcus	: Fonction de controle de l'unite medicale
fcde	: Fonction de controle de la date d'entree
fcme	: Fonction de controle du mode d'entree
fcpr	: Fonction de controle de la provenance
fcds	: Fonction de controle de la date de sortie
fcms	: Fonction de controle du mode se sortie
fcdst	: Fonction de controle de la destination
fccp	: Fonction de controle du code postal
fcnosm 	: Fonction de contrôle du numéro de semaine                              
fcjpr	: Fonction de contrôle des indicateurs de présence
fcchi	: Fonction de contrôle de la date d'intervention
fcdpc 	: Fonction de contrôle de la finalité de prise en charge
fcdp 	: Fonction de contrôle de morbidité principale
fcdge 	: Fonction de contrôle du diagnostic étiologique
fcnba	: Fonction de contrôle du nombre d'actes
fcdgs	: Fonction de contrôle des diagnostics associés
fcdep	: Fonction de contrôle des variables de dépendance
fcfrou	: Fonction de contrôle de la variable fauteil roulant
fcreed	: Fonction de contrôle des variables de durée de rééducation
fcac	: Fonction de controle des actes  
******************************************************************************/
short fcnf(char finess[] );
short fcnr(char numrss[] );
short fcass(char zone[]);
short fcrgb(char zone[]);
short fcth(char zone);
short fcdn (char dn[],char nosem[]);
short fcsx(char sexe);
short fcus(char unmed[]);
short fcde(char datent[],char typh);
short fcme(char modent,char typhosp);
short fcpr(char prov,char modent,char typhops);
short fcds (char zone[],short ret2,char datent[]);
short fcms (char zone,char datesor[]) ;
short fcdst(char dest,char modsor,char typhosp);
short fccp(char codpost[]);
short fcnosm(char nosem[],short ret2,char datent[],short ret3,char datsor[],char typh);                               
short fcjpr(char zone[]);
short fcchi(char zone[],short ret2,char datent[]);
short fcdpc (char zone[],unsigned char *masque,unsigned char prfctl);
short fcdp (char zone[],char diagpc[],unsigned char *masque,unsigned char prfctl) ;
short fcdge  (char zone[],char diagp[],char diagpc[], unsigned char *masque,unsigned char prfctl) ;
short fcnba(char nba[]);
short fcdgs(char zone[],unsigned char *masque,unsigned char prfctl);
short fcdep(char zone);
short fcfrou(char zone);
short fcreed(char zone[]);
short fcac(char zone[],unsigned char profil);
short fcaccam(char zone[],unsigned char profil);

/******************************************************************************
Fonctions utilitaires 
testcpt		: Teste si le nombre d'erreurs est supérieur  à 100
majghm		: Met à jour la CMD le GHM et le Code retour
majvecerr	: Met à jour le vecteur d'erreur
contfmt	    : Controle de format pour une chaîne de caractere
contdate	: Controle de date
calldate	: Appel de la date systeme
contval		: Verifie l'appartenance a une plage de valeur
*******************************************************************************/
void testcpt(short *flag);
void majghj(short ret,char cmd[],char ghj[]);
void majvecerr(short vecerr[],short ret);
short contfmt (char *zone,char format[],short ft,short taille);
short contdate (char *adate);
void  calldate (char *wdate);
short contval(char *zone,char *valeur,short lgt);

/****************************************************************************
Fonctions utilitaires 
convdate : transforme une date jjmmaaaa en 3 variables jj mm aa
nombre_jour_1860 : Rend le nombre de jour entre la date et le 01/01/1980
callage : Calcul l'age anniversaire entre la date de naissance et la date  
          d'entrée En jour et en année          
jour_semaine : Fonction donnant le numéro du jour d'une date
long no_semaine : fonction donnant le numéro de semaine d'une date
void dlundi_s : fonction donnant la date du lundi d'une semaine donnée
*****************************************************************************/
void convdate (char *adat,short *p_jj,short *p_mm,short *p_aa);
long nombre_jour_1860(char *date);
void callage (char *datnais,char *datsor); 
short jour_semaine (char *date) ;
long no_semaine(char *date);
void dlundi_s(char nosem[],char datlun[]); 


/* Variables globales au module de controle */
short cpterrs;        /* Compteur des erreurs */
short flag;           /* Indique le depassement de MAXVEC */

char dateptr[9];		/* contient la date systeme */

#endif
