<commit_before>import demographic.Person
import ehr.clinical_documents.DataIndex

class BootStrap {

   def init = { servletContext ->
      
      def persons = [
         new Person(
            firstName: 'Pablo',
            lastName: 'Pazos',
            dob: new Date(81, 9, 24),
            sex: 'M',
            idCode: '4116238-0',
            idType: 'CI',
            role: 'pat'
         ),
         new Person(
            firstName: 'Barbara',
            lastName: 'Cardozo',
            dob: new Date(87, 2, 19),
            sex: 'F',
            idCode: '1234567-0',
            idType: 'CI',
            role: 'pat'
         ),
         new Person(
            firstName: 'Carlos',
            lastName: 'Cardozo',
            dob: new Date(80, 2, 20),
            sex: 'M',
            idCode: '3453455-0',
            idType: 'CI',
            role: 'pat'
         )
         ,
         new Person(
            firstName: 'Mario',
            lastName: 'Gomez',
            dob: new Date(64, 8, 19),
            sex: 'M',
            idCode: '5677565-0',
            idType: 'CI',
            role: 'pat'
         )
         ,
         new Person(
            firstName: 'Carla',
            lastName: 'Martinez',
            dob: new Date(92, 1, 5),
            sex: 'F',
            idCode: '84848884-0',
            idType: 'CI',
            role: 'pat'
         )
      ]
      
      persons.each { p ->
         
         if (!p.save())
         {
            println p.errors
         }
      }
      
      
      // ================================================
      // Indices de datos que definen los indices 
      // que pueden ser creados sobre instancias
      // de compositions XML que se commitean. 
      //
      // En base a estas definiciones se van a generar
      // indices de instancias de tipos de datos simples
      // sobre los cuales se van a poder consultar, incluso
      // mediante consultas con condicioens complejas.
      // ================================================
      
      // TODO: las definiciones de indices de datos (nivel 2)
      //       deben derivarse automaticamente de los arquetipos
      //       en la base de conocimiento.
      //       por ahora sn solo se usan arquetipos planos, luego
      //       se usan las referencias a los arquetipos originales
      //       que se usaron para aplanar.
      def dataIndexes = [
         
         // TODO: ver si necesito llegar hasta los tipos basicos o si alcanza con los tipos de openehr<commit_msg>ehr creation on bootstrap<commit_after>import demographic.Person
import common.generic.PatientProxy
import ehr.Ehr
import ehr.clinical_documents.DataIndex

class BootStrap {

   def init = { servletContext ->
      
      def persons = [
         new Person(
            firstName: 'Pablo',
            lastName: 'Pazos',
            dob: new Date(81, 9, 24),
            sex: 'M',
            idCode: '4116238-0',
            idType: 'CI',
            role: 'pat'
         ),
         new Person(
            firstName: 'Barbara',
            lastName: 'Cardozo',
            dob: new Date(87, 2, 19),
            sex: 'F',
            idCode: '1234567-0',
            idType: 'CI',
            role: 'pat'
         ),
         new Person(
            firstName: 'Carlos',
            lastName: 'Cardozo',
            dob: new Date(80, 2, 20),
            sex: 'M',
            idCode: '3453455-0',
            idType: 'CI',
            role: 'pat'
         )
         ,
         new Person(
            firstName: 'Mario',
            lastName: 'Gomez',
            dob: new Date(64, 8, 19),
            sex: 'M',
            idCode: '5677565-0',
            idType: 'CI',
            role: 'pat'
         )
         ,
         new Person(
            firstName: 'Carla',
            lastName: 'Martinez',
            dob: new Date(92, 1, 5),
            sex: 'F',
            idCode: '84848884-0',
            idType: 'CI',
            role: 'pat'
         )
      ]
      
      persons.each { p ->
         
         if (!p.save())
         {
            println p.errors
         }
      }
	  
	  
	  // Crea EHRs para los pacientes de prueba
	  // Idem EhrController.createEhr
	  def ehr
	  persons.each { p ->
	  
	     if (p.role == 'pat')
		 {
			ehr = new Ehr(
			   subject: new PatientProxy(
			      value: p.uid
			   )
		    )
         
            if (!ehr.save()) println ehr.errors
		 }
	  }
      
      
      // ================================================
      // Indices de datos que definen los indices 
      // que pueden ser creados sobre instancias
      // de compositions XML que se commitean. 
      //
      // En base a estas definiciones se van a generar
      // indices de instancias de tipos de datos simples
      // sobre los cuales se van a poder consultar, incluso
      // mediante consultas con condicioens complejas.
      // ================================================
      
      // TODO: las definiciones de indices de datos (nivel 2)
      //       deben derivarse automaticamente de los arquetipos
      //       en la base de conocimiento.
      //       por ahora sn solo se usan arquetipos planos, luego
      //       se usan las referencias a los arquetipos originales
      //       que se usaron para aplanar.
      def dataIndexes = [
         
         // TODO: ver si necesito llegar hasta los tipos basicos o si alcanza con los tipos de openehr
{'fraction_non_alphanumeric': 0.12923923006416133, 'fraction_numerical': 0.024197983501374885, 'mean_word_length': 1.3060016906170753, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 8, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1188512', 'n_tokens_mistral': 1721, 'n_tokens_neox': 1576, 'n_words': 480}