#ifndef __SSRFG2_H__
#define __SSRFG2_H__

#define MAXLIN  1000    /* Taille maximal d'une table "carree" */
#define MAXCOL  1000    /* Taille maximal d'une table "carree" */
#define TMASK   1000
#define MAX_FUNC 20      /* Nombre maxi de fonctions dans l'arbre*/
#define TAILLEVECL 256   /* Taille standard grande */
#define TAILLEVECC 10    /* Taille standard petite */

//CD 05/01/07
//#define NBDIAGS 8        /* Nombre de diagnostics */
#define NBDAS 20        /* Nombre de diags associes dans format interne*/
#define NBDIAGTOT 23    /* Nombre total de diags 3 + 20 */
//CD 05/01/07 suppression
//#define LG_DIAGS 48       /* Taille de la chaine des diagnostics */

#define LGRMAXACTE 10        /* Taille d'un acte */
#define NBACTES 10       /* Nombre d'actes */
#define caras '+'


#include "Controle.h"
#include "Tables.h"
#include "Ris.h"


struct ACTE
{
	short len ;
	char arr[LGRMAXACTE];
};
struct ACTE tab_actes[NBACTES];      /* Tableau contenant les actes */


//CD 05/01/07
int nbdiagas;/* Nombre de diagnostics associes dans le format lu*/

//CD 05/01/07 ajout de static
static short puis2[8]={1,2,4,8,16,32,64,128};

FILE *pttree,*ptmdiag10,*ptacte,*ptaccam;

long _doffnop10;         /* Offset des numeros de masques */
short  _dsize;	         /* longueur d'un no de masque de diagnostic */
long _doffpro10;		 /* Offset des masques caracteristiques*/
short _dxmsize;          /* Longueur des masques de cara. de diag */
short _dxmsize2;         /* Longueur des masques de cara. de diag */
#define _tpref 2         /* Taille des prefixes */
#define _tsuf  4         /* Taille des suffixes */
#define _nbpref 2600     /* Nombre de prefixes */
#define NBREEDTEST 8     /* Nombre de temps de rééducation à tester */
#define NBREED 12        /* Nombre  de type de rééducation */
short lgdiag;          /* Longueur d'un diagnostic */
short lgacte;          /* Longueur d'un acte */
long taille_arbre;
long _poffnop;           /* Offset des numeros de masques actes*/
short  _psize;           /* longueur no de masque  */
short   _prmsize;	     /* longueur d'un masque d'acte */

long    _poffnop_ccam;        /* Offset des numeros de masques actes*/
short   _psize_ccam;          /* longueur no de masque  */
long    _poffpro_ccam;		  /* Offset des masques caracteristiques actes*/
#define _tpref_ccam 2         /* Taille des prefixes */
#define _tsuf_ccam  4         /* Taille des suffixes */
#define _nbpref_ccam 17576    /* Nombre de prefixes */


short _trsize;        /* Taille des informations d'un noeud */
#define _tentete 32      /* Taille des entetes de table */
long _toffset;           /* Taille de l'offset des numeros de noeud */  

short tabcmc[TAILLEVECL];   /* Tableau de correspondance index- CMC */
typedef unsigned char uchar;        


/* Definition de la structure d'entete de table */
struct ENTETE {
    char sign[8];
    char verc[2];
    char revc[2];
    char datc[6];
    char nomt[8];
    uchar ffic;
    uchar nstb;
    uchar kgen[4];
} entete_table;
/* Definition de la structure d'entete de sous-table */
struct entete {
    char sgstn[8];
    char vcstn[2];
    char rcstn[2];
    char dgstn[6];
    uchar nastn[2];
    uchar lastn;
    uchar lgstn[4];
    uchar ofstn[4];
    uchar dpstn;
    uchar lpstn;
    char restn;
}entete_stab;

/* Definition de la structure d'un noeud */
struct tree  {
	short  subclus;	/* fonction / numéro de G.H.M. */
	short  para1;	
    short  para2;
	short  nbranch;	/* nombre de sous-branches / 0 si G.H.M. atteint */
    short  pfils;	/* numero de noeud du premier fils */
}	treetab;		/* définition de la structure de l'arbre */
short 	_stpos;		/* position de départ du niveau suivant, par noeud */    
short agelt(), dcmc(), dplist(),aclist(),pcplist(),tdglist(),phylt(),rellt(),faut(),chir(),
  reedegh(),reedifh(),grp(),reedegm(),reedifm(),rdpribgth(),rdpribgtm(),nbjlt(),tdg2list(),aller() ;

//CD 05/01/07 ajout du static
static short(*funcbuf [MAX_FUNC])()=
                { agelt, dcmc, dplist,aclist,pcplist,tdglist,phylt,rellt,faut,chir,
                  reedegh,reedifh,grp,reedegm,reedifm,rdpribgth,rdpribgtm,nbjlt,tdg2list,aller }  ;


//CD 05/01/07
//char str_diags[LG_DIAGS+1];           /* Variable contenant les diags */
char str_diags[(NBDAS+3)*6+1];           /* Variable contenant les diags */

unsigned char prof_diags[TAILLEVECL]; /* Profils de tous les diags */
unsigned char prof_actes[TAILLEVECL] ; /* profil des actes */

//CD 05/01/07
//unsigned char profctl[NBACTES];        /* profil de contrôle de tous les diags */
unsigned char profctl[NBDAS+3];        /* profil de contrôle de tous les diags */

short age;        /* Age anniversaire */
short nbjpres;    /* Nombre de jours de présence */
short nbjchir;    /* Délai de l'intervention chirurgicale */    
short nbactes;    /* Nombres d'actes */
short dephy;//,deprel; CD CG plus utilisé en M24 deprel;   /* Dépendance physique et relationelle */   

extern short controle(short vecerr[],short *cret,short *cmc,short *ghj);
extern void dlundi_s(char nosem[],char datlun[]);
extern long nombre_jour_1860(char *date);
extern short contnumsem(char nosem[]);

//CD 03/01/07
extern void InitErreur(short vecerr[]);

char datlun[9];

#endif