Describir: Reasoning about clinical guidelines based on algebraic data types and constraint logic programming.