
ALGUNAS FUNCIONES Y REGLAS DE IMAGJOR.KAL

/*********************************************************/
/**         ALL FUNCTIONS ARE SAVED BELOW             **/
/*********************************************************/

       /*************************************
        ****  FUNCTION: ContinuarRadiografia2
        *************************************/
MakeFunction( ContinuarRadiografia2, [],
{
If Not(KnownValue?(ImagenA, tipoCaptura))
Then PostMessage("Captura de la imagen debe tener un valor")
 Else { 
If Not(ImagenA:tipo #=ANALOGICA) And  Not(KnownValue?(ImagenA, software))

Then PostMessage("De elegir un  valor de software")
Else {
HideWindow(Pradiografia) ;
ShowWindow(Pradiografia2) ;
MaximizeWindow(Pradiografia2); 

}}} );   

       /*************************************
        ****  FUNCTION: ChequeoAparato
        *************************************/
MakeFunction( ChequeoAparato, [],
{
If Not(KnownValue?(ImagenA:ligamento)) Or 
 Not(KnownValue?(ImagenA:hueso)) Or
 Not(KnownValue?(ImagenA:reabsorcion)) Or
 Not(KnownValue?(ImagenA:cortical))

Then PostMessage ("Debe completar toda la informacin")
Else {
If (ImagenA:ligamento #= NORMAL  And ImagenA:cortical #= CONTINUA  And (Not( ImagenA:hueso #= NORMAL)) 
Or ImagenA:reabsorcion #= APICAL Or ImagenA:reabsorcion #= LATERAL)

Then PostMessage ("Debe revisar la informacin ingresada")
 Else  {

ForwardChain([NOASSERT],NULL,Global:Rcoherencia); 
If KnownValue?(UActual:concuerdaR) And UActual:concuerdaR #= SI 
Then{ HideImage(Tnocoherente);
      HideImage(BrevisarRx);
      ShowImage(Tcoherente);}  
Else { HideImage(Tcoherente);
      ShowImage(Tnocoherente);
      ShowImage(BrevisarRx)
}; 
HideWindow(Pradiografia3);
ShowWindow(PconfirmaD);
MaximizeWindow(PconfirmaD); }
};

} );

     
     
       
       /*************************************
        ****  FUNCTION: ContinuarRadiografia2b_old
        *************************************/
MakeFunction( ContinuarRadiografia2b_old, [],
{
If (((CoronaDA:tieneCarie #= SI Or (CoronaDA:tieneRestauracion #= SI And RestauracionA:material #= PLASTICO)) And 
Not(Member?(ImagenA:topoCP, 
SOMBRAS_RADIOLUCIDAS))) Or
 (CoronaDA:tieneRestauracion #= SI And RestauracionA:material #= METALICO And Not( Member?(ImagenA:topoCP, SOMBRAS_RADIOPACAS) )))
Then
PostMessage("Existe inconsistencia entre lo descripto en la corona y lo sealado en la placa radiogrfica") 
Else
{HideWindow(Pradiografia2) ;
ShowWindow(Pradiografia2b); 
MaximizeWindow(Pradiografia2b);
}} );

/*********************************************************/
/**         ALL CLASSES ARE SAVED BELOW             **/
/*********************************************************/
       
       /*************************************
        ****  CLASS: Imagen
        *************************************/
MakeClass( Imagen, Root );

/************** METHOD: valorTipo   **************/
MakeMethod( Imagen, valorTipo, [],
   If ImagenA:tipo #= ANALOGICA 
Then {HideImage(CBtratImagen);
      HideImage(RBsoft);}   
Else 
       {ShowImage(CBtratImagen);
      ShowImage(RBsoft);} );

/************** METHOD: seleccionCon   **************/
MakeMethod( Imagen, seleccionCon, [],
 {
    If(Member?(ImagenA:tipoCon,UNICO) And ImagenA:cantCon #=UNO) Then ShowImage(RBconUnico)
    Else {
    If ((Not(Member?(ImagenA:tipoCon,UNICO)) And ImagenA:cantCon #=UNO) Or (Member?(ImagenA:tipoCon,UNICO) And Not(ImagenA:cantCon #=UNO)) )
        Then {  RemoveFromList(ImagenA:tipoCon,UNICO);
                ResetImage(CBtipoC) ; 
                PostMessage("La informacin ingresada sobre los Conductos es incorrecta")};  
    If(Member?(ImagenA:tipoCon,V)And Not(ImagenA:cantCon #=UNO))  Then ShowImage(RBconV); 
    If(Member?(ImagenA:tipoCon,P_L)And Not(ImagenA:cantCon #=UNO) ) Then ShowImage(RBconP_L);   
    If(Member?(ImagenA:tipoCon,D)And Not(ImagenA:cantCon #=UNO) ) Then ShowImage(RBconD);   
    If(Member?(ImagenA:tipoCon,M) And Not(ImagenA:cantCon #=UNO)) Then ShowImage(RBconM);   
    If(Member?(ImagenA:tipoCon,M_V)And Not(ImagenA:cantCon #=UNO) ) Then ShowImage(RBconM_V);   
    If(Member?(ImagenA:tipoCon,MP_L) And Not(ImagenA:cantCon #=UNO)) Then ShowImage(RBconMP_L);   
    If(Member?(ImagenA:tipoCon,DV) And Not(ImagenA:cantCon #=UNO)) Then ShowImage(RBconDV)}
} );

/************** METHOD: ligEngro   **************/
MakeMethod( Imagen, ligEngro, [],
If Self:ligamento #= ENGROSADO
Then {HideImage(Bnormal);
ShowImage(Bligamento); }
Else{ HideImage(Bligamento);
ShowImage(Bnormal)} );

/************** METHOD: cambioTopoC   **************/
MakeMethod( Imagen, cambioTopoC, [slot valor ],
{
ClearList(Global:ultTopoC); 
AppendToList(Global:ultTopoC, valor) ;
If LengthList(Global:ultTopoC) > LengthList(Self:slot)
Then EnumList(Global:ultTopoC, num, If Not (Member?(Self:slot, num))
                                     Then Global:final = num )} );

/************** METHOD: chequeoTopoC   **************/
MakeMethod( Imagen, chequeoTopoC, [],
   If(Member?(ImagenA:topoCP,JOVEN) Or Member?(ImagenA:topoCP,NORMAL))And
 (Member?(ImagenA:topoCP,CALCIFICADA) Or Member?(ImagenA:topoCP,NODULOS))
 Then PostMessage("Revise la informacin sobre topologa de cmara pulpar ingresada") );

/************** METHOD: elijeR   **************/
MakeMethod( Imagen, elijeR, [],
{If ImagenA:ejemplos #= CAMARA_NORMAL
Then {
       BMejemplo1:FileName = Cnormal.bmp;
       BMejemplo2:FileName = Cnormal2.bmp;
       ShowImage(BMejemplo1);
       ShowImage(BMejemplo2)};
If ImagenA:ejemplos #= CAMARA_CALCIFICADA
Then {
       BMejemplo1:FileName = Ccalci.bmp;
       ShowImage(BMejemplo1);
       BMejemplo2:FileName = calcira1.bmp;
       ShowImage(BMejemplo2)};
If ImagenA:ejemplos #= CANTIDAD_CONDUCTOS
Then {

       BMejemplo1:FileName = CantCon.bmp;
       BMejemplo2:FileName = CantCon2.bmp;
       ShowImage(BMejemplo1);
       ShowImage(BMejemplo2)};
If ImagenA:ejemplos #= NODULOS
Then {
       HideImage(BMejemplo2);
       BMejemplo1:FileName = calciraf.bmp;
       ShowImage(BMejemplo1)};
       
If ImagenA:ejemplos #= CAMARA_JOVEN
Then {
       HideImage(BMejemplo2);
       BMejemplo1:FileName = apiceI.bmp;
       ShowImage(BMejemplo1)};
       
If ImagenA:ejemplos #= SOMBRAS_RADIOPACAS
Then {
       HideImage(BMejemplo2);
       BMejemplo1:FileName = sradiopa.bmp;
       ShowImage(BMejemplo1)};
} );

/************** METHOD: selHueso   **************/
MakeMethod( Imagen, selHueso, [],
{If Self:hueso #= RADIOLUCIDEZ_CIRCUNSCRIPTA
Then {
      BMhueso:FileName = huesoRC.bmp;
      ShowImage(BMhueso); };

If Self:hueso #= RADIOLUCIDEZ_DIFUSA
Then {
      BMhueso:FileName = gui2211.bmp;
      ShowImage(BMhueso);}; 
If Self:hueso #= NORMAL
Then {
      BMhueso:FileName = ligNorma.bmp;
      ShowImage(BMhueso); }

} );

/************** METHOD: selReab   **************/
MakeMethod( Imagen, selReab, [],
{If Self:reabsorcion #= APICAL Then {BMreabsorcion:FileName = huesoRC.bmp;
ShowImage(BMreabsorcion); };
If                                                 
 Self:reabsorcion #= LATERAL Then {BMreabsorcion:FileName = reab.bmp;
ShowImage(BMreabsorcion); };
If Self:reabsorcion #= NO
Then {BMreabsorcion:FileName = noreab.bmp;
ShowImage(BMreabsorcion); };

If Self:reabsorcion #= NO_SE_OBSERVA
Then {BMreabsorcion:FileName = ferrero.bmp;
ShowImage(BMreabsorcion); }
} );

/************** METHOD: reabCon   **************/
MakeMethod( Imagen, reabCon, [slot ],
If ((Self:slot #= REABSORCION And 
Not(Member?( Self:topoCP,SOMBRAS_RADIOLUCIDAS))) Or 

 (Member?( Self:topoCP,CALCIFICADA) And
    Not (Self:slot #= CALCIFICADO)) Or

(Member?( Self:topoCP,NORMAL) And
    Not (Self:slot #= NORMAL)) Or

(Member?( Self:topoCP,JOVEN) And
    Not (Self:slot #= NORMAL Or 
         Self:slot #= APICE_INMADURO) )
)

Then PostMessage("No es coherente la topografa de la cmara pulpar con la seleccin en el conducto") );

/************** METHOD: selCortical   **************/
MakeMethod( Imagen, selCortical, [],
{If Self:cortical #= DISCONTINUA
Then {
      BMcortical:FileName = corticaD.bmp;
      ShowImage(BMcortical); }
Else  
{If Self:cortical #= CONTINUA
Then {
      BMcortical:FileName = calcraf2.bmp;
      ShowImage(BMcortical); }}

} );

/************** METHOD: elijeCond   **************/
MakeMethod( Imagen, elijeCond, [],
{If ImagenA:ejemconductos #= CONDUCTOS_CALCIFICADOS
Then {
      Bejcond1:FileName = condC1.bmp;
       Bejcond2:FileName = condC2.bmp;
       ShowImage(Bejcond1);
       ShowImage(Bejcond2)};


If ImagenA:ejemconductos #= CONDUCTO_NORMAL
Then {
       HideImage(Bejcond2);
       Bejcond1:FileName = condN.bmp;
       ShowImage(Bejcond1)};
       
If ImagenA:ejemconductos #= APICE_INMADURO
Then {
       HideImage(Bejcond2);
       Bejcond1:FileName = apiceI.bmp;
       ShowImage(Bejcond1)};
       
If ImagenA:ejemconductos #= REABSORCION
Then {
       HideImage(Bejcond2);
      Bejcond1:FileName = reab.bmp;
       ShowImage(Bejcond1)};
} );
MakeSlot( Imagen:tipo );
MakeSlot( Imagen:software );
MakeSlot( Imagen:tratImagen );
SetSlotOption( Imagen:tratImagen, MULTIPLE );
ClearList( Imagen:tratImagen );
MakeSlot( Imagen:topoCP );
SetSlotOption( Imagen:topoCP, MULTIPLE );
ClearList( Imagen:topoCP );
SetSlotOption( Imagen:topoCP, AFTER_CHANGE, chequeoTopoC );
MakeSlot( Imagen:cantCon );
MakeSlot( Imagen:tipoCon );
SetSlotOption( Imagen:tipoCon, MULTIPLE );
ClearList( Imagen:tipoCon );
SetSlotOption( Imagen:tipoCon, AFTER_CHANGE, seleccionCon );
MakeSlot( Imagen:conUnico );
SetSlotOption( Imagen:conUnico, AFTER_CHANGE, reabCon );
SetSlotOption( Imagen:conUnico, IMAGE, RBconUnico );
MakeSlot( Imagen:conV );
SetSlotOption( Imagen:conV, AFTER_CHANGE, reabCon );
SetSlotOption( Imagen:conV, IMAGE, RBconV );
MakeSlot( Imagen:conP_L );
SetSlotOption( Imagen:conP_L, AFTER_CHANGE, reabCon );
MakeSlot( Imagen:conD );
SetSlotOption( Imagen:conD, AFTER_CHANGE, reabCon );
MakeSlot( Imagen:conM );
SetSlotOption( Imagen:conM, AFTER_CHANGE, reabCon );
MakeSlot( Imagen:conM_V );
SetSlotOption( Imagen:conM_V, AFTER_CHANGE, reabCon );
MakeSlot( Imagen:conMP_L );
SetSlotOption( Imagen:conMP_L, AFTER_CHANGE, reabCon );
MakeSlot( Imagen:conDV );
SetSlotOption( Imagen:conDV, AFTER_CHANGE, reabCon );
MakeSlot( Imagen:ligamento );
SetSlotOption( Imagen:ligamento, AFTER_CHANGE, ligEngro );
MakeSlot( Imagen:hueso );
SetSlotOption( Imagen:hueso, AFTER_CHANGE, selHueso );
MakeSlot( Imagen:cortical );
SetSlotOption( Imagen:cortical, AFTER_CHANGE, selCortical );
MakeSlot( Imagen:reabsorcion );
SetSlotOption( Imagen:reabsorcion, AFTER_CHANGE, selReab );
MakeSlot( Imagen:tipoCaptura );
MakeSlot( Imagen:ejemplos );
SetSlotOption( Imagen:ejemplos, AFTER_CHANGE, elijeR );
MakeSlot( Imagen:ejemconductos );
SetSlotOption( Imagen:ejemconductos, AFTER_CHANGE, elijeCond );
       
      
/*********************************************************/
/**         ALL RULES ARE SAVED BELOW             **/
/*********************************************************/      

       /*************************************
        ****  RULE: RX_PulpitisI
        *************************************/
MakeRule( RX_PulpitisI, [],
    PActual:diagnostico #= PULPITIS_INFILTRATIVA_INICIAL And ImagenA:ligamento
        #= NORMAL And ImagenA:hueso #= NORMAL And ( ImagenA:reabsorcion
                                                        #= NO
                                                        Or ImagenA:reabsorcion
                                                        #= NO_SE_OBSERVA )
        And ImagenA:cortical #= CONTINUA,
    {
    UActual:concuerdaR = SI;
    } );

       /*************************************
        ****  RULE: RX_PulpitisAbcedosa
        *************************************/
MakeRule( RX_PulpitisAbcedosa, [],
    PActual:diagnostico #= PULPITIS_ABCEDOSA And ImagenA:hueso
        #= NORMAL And ( ImagenA:reabsorcion #= NO Or ImagenA:reabsorcion
                            #= NO_SE_OBSERVA ),
    {
    UActual:concuerdaR = SI;
    } );

       /*************************************
        ****  RULE: RX_PeriodontitisLeve
        *************************************/
MakeRule( RX_PeriodontitisLeve, [],
    PActual:diagnostico #= PERIODONTITIS_APICAL_AGUDA_LEVE And
        ImagenA:ligamento #= ENGROSADO And ImagenA:hueso #= NORMAL
        And ( ImagenA:reabsorcion #= NO Or ImagenA:reabsorcion
                  #= NO_SE_OBSERVA ),
    {
    UActual:concuerdaR = SI;
    } );

       /*************************************
        ****  RULE: RX_PeriodontitisModerada
        *************************************/
MakeRule( RX_PeriodontitisModerada, [],
    PActual:diagnostico #= PERIODONTITIS_APICAL_AGUDA_MODERADA
        And ImagenA:ligamento #= ENGROSADO And ( ImagenA:hueso
                                                     #= NORMAL
                                                     Or ImagenA:hueso
                                                     #= RADIOLUCIDEZ_DIFUSA )
        And ( ImagenA:reabsorcion #= NO Or ImagenA:reabsorcion
                  #= NO_SE_OBSERVA ) And ImagenA:cortical #= DISCONTINUA,
    {
    UActual:concuerdaR = SI;
    } );

       /*************************************
        ****  RULE: RX_Abcesos
        *************************************/
MakeRule( RX_Abcesos, [],
    ( PActual:diagnostico #= ABCESO_DENTOALVEOLAR_AGUDO Or PActual:diagnostico
          #= ABCESO_FENIX ) And ImagenA:ligamento #= ENGROSADO
        And ( ImagenA:reabsorcion #= APICAL Or ImagenA:reabsorcion
                  #= LATERAL ) And ImagenA:cortical #= DISCONTINUA,
    {
    UActual:concuerdaR = SI;
    } );



/
