-- use this path to read the grammar from the same directory
--# -path=.:../../lib/resource-0.6/abstract:../prelude:../../lib/resource-0.6/english
concrete HealthEng of Health = open PredicationEng, 
StructuralEng, 
--ResourceEng, 
ResourceExtEng, Prelude, Predef, SyntaxEng, ExtraEng, ParadigmsEng in {

flags 
  startcat=Phr ; lexer=text ; parser=chart ; unlexer=text ;

lincat 
  Patient = NP ;
  -- CN is not enough, because of the different form of the "head" body part 
  -- expression in "I have a headache" and "I have injured my head":
  BodyPart = BodyCNCategory ;
  Symptom = NP ;
  SymptomDegree = AP ;
  Prop = S ;
  Illness = CN ; 
  Condition = VP ;
  Specialization = CN ;
  Medicine  = NP ;

lin 
  ShePatient = SheNP ;
  TheyPatient = TheyNP ;
  IPatientHe = INP ;
  IPatientShe = INP ;
  HePatient = HeNP ;
  WePatient = WeNP ;

  And x y = ConjS AndConj (TwoS x y) ; 

--  Influenza = cnNonhuman "influenza" ; 
--  Malaria = cnNonhuman "malaria" ; 
--  Diarrhea = cnNonhuman "diarrhea" ; 
--  SkinAllergy = AppFun (mkFun (nNonhuman "skin") []) (MassNP (cnNonhuman "allergy")) ;  
--  Heartburn = cnNonhuman "heartburn" ;  
--  Rheumatism = cnNonhuman "rheumatism" ;  
--  Cystitis = cnNonhuman "cystitis" ;  
--  Asthma = cnNonhuman "asthma" ; 
--  Arthritis = cnNonhuman "arthritis" ; 
--  Diabetes = cnNonhuman "diabetes" ; 
--  Tonsillitis = cnNonhuman "tonsillitis" ; 
--  Constipation = cnNonhuman "constipation" ; 
  
  Dentist  = cnHuman "dentist" ; 
  Gynecologist = cnHuman "gynecologist" ;
  Urologist = cnHuman "urologist" ; 
  Pediatrician = cnHuman "pediatrician" ;
  Physician = cnHuman "physician" ;
  Dermatologist = cnHuman "dermatologist" ;
  Cardiologist = cnHuman "cardiologist" ;
  Neuropathologist = cnHuman "neuropathologist" ;
  Ophthalmologist = cnHuman "ophthalmologist" ;
  Surgeon = cnHuman "surgeon" ;

  SleepingPeels = IndefManyNP (ModAdj (apReg "sleeping") (cnNonhuman "peel"));
  Vitamins = IndefManyNP (cnNonhuman "vitamin") ;
  EyeDrops = IndefManyNP (cnNonhuman "eye-drop") ;
  Antibiotics = IndefManyNP (cnNonhuman "antibiotic") ;
  Sedative = IndefOneNP (cnNonhuman "sedative") ;
  Viagra = MassNP (cnNonhuman "viagra") ;
  Laxative = IndefOneNP (cnNonhuman "laxative") ;
  Insulin = MassNP (cnNonhuman "insulin");
  Antidepressant = IndefOneNP (cnNonhuman "antidepressant") ;
  PainKiller = IndefOneNP (cnNonhuman "painkiller") ;

  Leg = { s = \\_,n,_ => case n of {Sg =>"leg" ; Pl=> "legs" }; 
         painInType = True } ;
  Head = { s = table{ True => table {Sg => table {_  => "head" }; 
           Pl => table {_  => "heads" }};
           False => table { _ => table {_=> "headache"}}} ;
           painInType = False } ;
  Stomac = { s = table{ True => table {Sg => table {_  => "stomach" }; 
           Pl => table {_  => "stomachs" }};
           False => table { _ => table {_=> "stomach-ache"}}} ;
           painInType = False } ; 	
--  Tooth = { s = table{ True => table {Sg => table {_  => "tooth" }; 
--           Pl => table {_  => "teeth" }};
--           False => table { _ => table {_=> "toothache"}}} ;
--           painInType = False } ; 	
  Throat = { s = table{ True => table {Sg => table {_  => "throat" }; 
           Pl => table {_  => "throats" }};
           False => table { _ => table {_=> ["sore throat"]}}} ;
           painInType = False } ; 		
  Ear = { s = \\_,n,_ => case n of {Sg =>"ear" ; Pl=> "ears" };           painInType = True } ; 	
  Chest = { s = \\_,n,_ => case n of {Sg =>"chest" ; Pl=> "chests" };           painInType = True } ; 	
  Foot = { s = \\_,n,_ => case n of {Sg =>"foot" ; Pl=> "feet" };           painInType = True } ; 	
  Arm = { s = \\_,n,_ => case n of {Sg =>"arm" ; Pl=> "arms" };           painInType = True } ; 	
  Back = { s = \\_,n,_ => case n of {Sg =>"back" ; Pl=> "backs" };           painInType = True } ; 	
  Shoulder = { s = \\_,n,_ => case n of {Sg =>"shoulder" ; Pl=> "shoulders" };           painInType = True } ; 	
--  Knee = { s = \\_,n,_ => case n of {Sg =>"knee" ; Pl=> "knees" };           painInType = True } ; 	

  BeInCondition = PredVP ; 
  Pregnant = PosVG ( PredAP( AdjP1 (regAdjective ["pregnant"] ** {lock_Adj1 = <>}))) ;
  CatchCold = PosVG (PredTV (tvHave** {lock_TV = <>}) (DetNP (aDet** {lock_Det = <>}) (cnNoHum (nounReg "cold")** {lock_CN = <>})));

  Fever = DetNP (aDet** {lock_Det = <>}) (cnNoHum (nounReg "fever")** {lock_CN = <>}) ;

--  HaveIllness patient illness = predV2 tvHave patient (DetNP (nullDet** {lock_Det = <>}) illness) ; 
  HaveAsthma patient = predV2 tvHave patient (DetNP (nullDet** {lock_Det = <>}) (cnNonhuman "asthma")) ; 
  Complain = predV2 tvHave ;

  NeedDoctor patient doctor = predV2 (mkTransVerbDir (regVerbP3 "need")**{lock_TV = <>}) 
       patient (DetNP (aDet ** {lock_Det = <>}) doctor); 
  NeedMedicine = predV2 (mkTransVerbDir (regVerbP3 "need")**{lock_TV = <>}) ; 
  TakeMedicine = predV2 (mkTransVerbDir (regVerbP3 "take")**{lock_TV = <>}) ;

  Injured = injuredBody (mkTransVerb verbP3Have "injured"**{lock_TV = <>}) ;
  Broken = injuredBody (mkTransVerb verbP3Have "broken"**{lock_TV = <>}) ;

  PainIn = painInPatientsBody (cnNoHum (nounReg "pain")**{lock_CN = <>}) ;

--  PainInMod = painInPatientsBodyMode (cnNoHum (nounReg "pain")**{lock_CN = <>});
--  SymptomMod degree symptom = DetNP (aDet** {lock_Det = <>}) 
--     (ModAdj degree (symptom ** {lock_CN = <>})) ;  
--  High = AdjP1 ((regAdjective "high") ** {lock_Adj1 = <>});
--  Low = AdjP1 ((regAdjective "low") ** {lock_Adj1 = <>});
--  Terrible = AdjP1 ((regAdjective "terrible")** {lock_Adj1 = <>});
};




