source: trunk/grails-app/conf/dbnp/configuration/ExampleTemplates.groovy @ 1588

Last change on this file since 1588 was 1588, checked in by s.h.sikkema@…, 10 years ago

Fixed tests (except webtests); cleaned up Example{Studies,Templates}.groovy; decapitalized injected services; made 'transactional' properties static

  • Property svn:keywords set to Rev Author Date
File size: 52.1 KB
Line 
1/**
2 * @Author kees
3 * @Since Jun 25, 2010
4 *
5 * Revision information:
6 * $Rev: 1588 $
7 * $Author: s.h.sikkema@gmail.com $
8 * $Date: 2011-03-04 11:30:52 +0000 (vr, 04 mrt 2011) $
9 */
10package dbnp.configuration
11
12
13import dbnp.studycapturing.*
14import org.dbnp.gdt.*
15import org.codehaus.groovy.grails.commons.GrailsApplication
16
17class ExampleTemplates {
18
19        /**
20         * Add the ontologies that are necessary for the templates below manually
21         * This function can be called to avoid the HTTP requests to BioPortal each time
22         * (e.g. in development or automated test environments)
23         */
24        public static void initTemplateOntologies() {
25                "inserting initial ontologies".grom()
26
27                // If running in development or test mode, add ontologies manually to speed up development and allow running offline
28                if (grails.util.GrailsUtil.environment == GrailsApplication.ENV_DEVELOPMENT || grails.util.GrailsUtil.environment == GrailsApplication.ENV_TEST) {
29
30                        // add Species ontology which is used for a.o. the Subject domain field 'species'
31                        def speciesOntology = new Ontology(
32                                name: 'NCBI organismal classification',
33                                description: 'A taxonomic classification of living organisms and associated artifacts for their controlled description within the context of databases.',
34                                url: 'http://www.ncbi.nlm.nih.gov/Taxonomy/taxonomyhome.html/',
35                                versionNumber: '1.2',
36                                ncboId: '1132',
37                                ncboVersionedId: '38802'
38                        ).save(failOnError:true)
39
40                        // add Sample>material ontology
41                        def brendaOntology = new Ontology(
42                                name: 'BRENDA tissue / enzyme source',
43                                description: 'A structured controlled vocabulary for the source of an enzyme. It comprises terms for tissues, cell lines, cell types and cell cultures from uni- and multicellular organisms.',
44                                url: 'http://www.brenda-enzymes.info',
45                                versionNumber: '1.3',
46                                ncboId: '1005',
47                                ncboVersionedId: '40643'
48                        ).save(failOnError:true)
49
50                        // add NCI ontology which is used in Mouse genotype template field
51                        def nciOntology = new Ontology(
52                                name: 'NCI Thesaurus',
53                                description: 'A vocabulary for clinical care, translational and basic research, and public information and administrative activities.',
54                                url: 'http://ncicb.nci.nih.gov/core/EVS',
55                                versionNumber: '10.03',
56                                ncboId: '1032',
57                                ncboVersionedId: '42838'
58                        ).save(failOnError:true)
59
60                        // add CHEBI ontology which is used for describing chemicals in e.g. events
61                        def chebiOntology = new Ontology(
62                                name: 'Chemical entities of biological interest',
63                                description: 'A structured classification of chemical compounds of biological relevance.',
64                                url: 'http://www.ebi.ac.uk/chebi',
65                                versionNumber: '1.73',
66                                ncboId: '1007',
67                                ncboVersionedId: '44746'
68                        ).save(failOnError:true)
69
70                }
71                // otherwise, this may be a production demo instance, so initialize the ontologies dynamically from BioPortal
72                else {
73
74                        def speciesOntology = Ontology.getOrCreateOntologyByNcboId(1132)
75                        def brendaOntology = Ontology.getOrCreateOntologyByNcboId(1005)
76                        def nciOntology = Ontology.getOrCreateOntologyByNcboId(1032)
77                        def chebiOntology = Ontology.getOrCreateOntologyByNcboId(1007)
78                }
79        }
80
81
82        /**
83         * Add example templates, this function would normally be called on an empty database
84         */
85        public static void initTemplates() {
86                "inserting initial templates".grom()
87
88                def genderField = new TemplateField(
89                        name: 'Gender',type: TemplateFieldType.STRINGLIST, entity: Subject,
90                        listEntries: [new TemplateFieldListItem(name:'Male'),new TemplateFieldListItem(name: 'Female'),new TemplateFieldListItem(name: 'Unknown')])
91                .save(failOnError:true)
92
93                def ageField = new TemplateField(
94                        name: 'Age',type: TemplateFieldType.LONG,entity: Subject,unit: 'years',comment: 'Either include age at the start of the study or date of birth (if known)')
95                .save(failOnError:true)
96
97                def genotypeField = new TemplateField(
98                        name: 'Genotype', type: TemplateFieldType.ONTOLOGYTERM,entity: Subject,
99                        comment: 'If present, indicate the genetic variance of the subject (e.g., mutagenized populations,knock-out/in,transgene etc)')
100        .save(failOnError:true)
101
102                def genotypeTypeField = new TemplateField(
103                        name: 'Genotype type',type: TemplateFieldType.STRINGLIST,entity: Subject,
104                        listEntries: [new TemplateFieldListItem(name:'wildtype'),
105                                new TemplateFieldListItem(name:'transgenic'),
106                                new TemplateFieldListItem(name:'knock-out'),
107                                new TemplateFieldListItem(name:'knock-in')],
108                        comment: 'If a genotype was specified, please indicate here the type of the genotype')
109        .save(failOnError:true)
110
111                def varietyField = new TemplateField(
112                        name: 'Variety', type: TemplateFieldType.STRING,entity: Subject,
113                        comment: 'taxonomic category consisting of members of a species that differ from others of the same species in minor but heritable characteristics')
114        .save(failOnError:true)
115
116                def ecotypeField = new TemplateField(
117                        name: 'Ecotype', type: TemplateFieldType.STRING,entity: Subject,
118                         comment: 'a type or subspecies of life that is especially well adapted to a certain environment'
119                ).save(failOnError:true)
120
121                // Nutritional study template
122                def studyTemplate = new Template(
123                        name: 'Academic study',
124                        entity: dbnp.studycapturing.Study
125                )
126                .addToFields(new TemplateField(name: 'Objectives',type: TemplateFieldType.TEXT,entity: Study,comment:'Fill out the aim or questions of the study'))
127                .addToFields(new TemplateField(name: 'Consortium',type: TemplateFieldType.STRING,entity: Study,comment:'If the study was performed within a consortium (e.g. NMC, NuGO), you can indicate this here'))
128                .addToFields(new TemplateField(name: 'Cohort name',type: TemplateFieldType.STRING,entity: Study,comment:'If a cohort was used the name or code of the cohort can be define here (define a cohort template)'))
129                .addToFields(new TemplateField(name: 'Lab id',type: TemplateFieldType.STRING,entity: Study,comment:'In which lab was the study performed; indicate the roomnumber.'))
130                .addToFields(new TemplateField(name: 'Institute',type: TemplateFieldType.STRING,entity: Study,comment:'In which institute was the study performed; indicate the full address information (to be replaced by persons-affiliations?)'))
131                .addToFields(new TemplateField(name: 'Study protocol',type: TemplateFieldType.FILE,entity: Study,comment:'Optionally attach a file in which the protocol in the study is described'))
132        .save(failOnError:true)
133
134                // Mouse template
135                def mouseTemplate = new Template(
136                        name: 'Mouse', entity: dbnp.studycapturing.Subject)
137                .addToFields(new TemplateField(
138                        name: 'Strain', type: TemplateFieldType.ONTOLOGYTERM, ontologies: [Ontology.getOrCreateOntologyByNcboId(1032)], entity: Subject, comment: "This is an ontology term, if the right strain is not in the list please add it with 'add more'"))
139                .addToFields(genotypeField)
140                .addToFields(genotypeTypeField)
141                .addToFields(genderField)
142                .addToFields(new TemplateField(
143                        name: 'Age', type: TemplateFieldType.LONG, entity: Subject, unit: 'weeks', comment: 'Age at start of study'))
144                .addToFields(new TemplateField(
145                        name: 'Age type',type: TemplateFieldType.STRINGLIST,entity: Subject,
146                        listEntries: [new TemplateFieldListItem(name:'postnatal'),new TemplateFieldListItem(name:'embryonal')]))
147                .addToFields(new TemplateField(
148                        name: 'Cage',type: TemplateFieldType.STRING,entity: Subject,comment:'Indicate the cage used for housing (type and/or size)'))
149                .addToFields(new TemplateField(
150                        name: '#Mice in cage',type: TemplateFieldType.LONG,entity: Subject,comment:'If known, indicate the number of mice per cage'))
151                .addToFields(new TemplateField(
152                        name: 'Litter size',type: TemplateFieldType.LONG,entity: Subject,comment:'If known, indicate the litter size of the litter from which the subject originates'))
153                .addToFields(new TemplateField(
154                        name: 'Weight', type: TemplateFieldType.DOUBLE, unit: 'gram',entity: Subject,comment:'If known indicate the weight of the subject in grams at the start of the study'))
155        .save(failOnError:true)
156
157                // Human template
158                def humanTemplate = new Template(
159                        name: 'Human', entity: dbnp.studycapturing.Subject)
160                .addToFields(genderField)
161                .addToFields(ageField)
162                .addToFields(new TemplateField(
163                        name: 'DOB',type: TemplateFieldType.DATE,entity: Subject,comment:'Date of birth'))
164                .addToFields(new TemplateField(
165                        name: 'Height',type: TemplateFieldType.DOUBLE, entity: Subject, unit: 'm'))
166                .addToFields(new TemplateField(
167                        name: 'Weight',type: TemplateFieldType.DOUBLE, entity: Subject, unit: 'kg'))
168                .addToFields(new TemplateField(
169                        name: 'BMI',type: TemplateFieldType.DOUBLE, entity: Subject, unit: 'kg/m2',comment:'Body-mass-index'))
170                .addToFields(new TemplateField(
171                        name: 'Race',type: TemplateFieldType.STRING,entity: Subject, comment:'If known and of interest the ethnic group can be indicated'))
172                .addToFields(new TemplateField(
173                        name: 'Waist circumference',type: TemplateFieldType.DOUBLE, unit: 'cm',entity: Subject, comment:'The waist circumference is measured just above the hip bone. Indicate the measure at the start of the study.'))
174                .addToFields(new TemplateField(
175                        name: 'Hip circumference',type: TemplateFieldType.DOUBLE, unit: 'cm',entity: Subject, comment:'The hip circumference is measured at the level of the two bony prominences front of the hips. Indicate the measure at the start of the study.'))
176                .addToFields(new TemplateField(
177                        name: 'Systolic blood pressure',type: TemplateFieldType.DOUBLE, unit: 'mmHg',entity: Subject, comment:'Indicate the levels at the start of the study in mmHG'))
178                .addToFields(new TemplateField(
179                        name: 'Diastolic blood pressure',type: TemplateFieldType.DOUBLE, unit: 'mmHg',entity: Subject, comment:'Indicate the levels at the start of the study in mmHG'))
180                .addToFields(new TemplateField(
181                        name: 'Heart rate',type: TemplateFieldType.DOUBLE, unit: 'beats/min',entity: Subject, comment:'Indicate the heart rate at the start of in study in beats per minute'))
182                .addToFields(new TemplateField(
183                        name: 'Run-in-food',type: TemplateFieldType.TEXT,entity: Subject, comment:'If defined, give a short description of the food used before the measurements'))
184                .save(failOnError:true)
185
186                def sampleRemarksField = new TemplateField(
187                        name: 'Remarks',
188                        type: TemplateFieldType.TEXT,
189                    entity: Sample
190                ).save(failOnError:true)
191
192                def sampleVialTextField = new TemplateField(
193                        name: 'Text on vial',
194                        type: TemplateFieldType.STRING,
195                    entity: Sample
196                ).save(failOnError:true)
197
198                // Human tissue sample template
199                def humanSampleTemplate = new Template(
200                        name: 'Human tissue sample',
201                        entity: dbnp.studycapturing.Sample
202                )
203                .addToFields(sampleRemarksField)
204                .addToFields(sampleVialTextField)
205                .addToFields(
206                        new TemplateField(
207                            name: 'Sample measured weight',
208                            unit: 'mg',
209                            type: TemplateFieldType.DOUBLE,
210                        entity: Sample
211                        )
212        ).save(failOnError:true)
213
214                // Human blood sample template
215                def humanBloodSampleTemplate = new Template(
216                    name: 'Human blood sample',
217                        entity: dbnp.studycapturing.Sample
218                )
219                .addToFields(sampleRemarksField)
220                .addToFields(sampleVialTextField)
221                .addToFields(
222                        new TemplateField(
223                            name: 'Sample measured volume',
224                            unit: 'ml',
225                            type: TemplateFieldType.DOUBLE,
226                                entity: Sample
227                        )
228        ).save(failOnError:true)
229
230
231                /*
232                 * Add NMC - DCL Sample Mapping Template
233                 * by Michael van Vliet
234                 *
235                 * For the Pilot running in Leiden (NOV2010)
236                 */
237                def sampleDCLTextField = new TemplateField(
238                        name: 'DCL Sample Reference',
239                        type: TemplateFieldType.STRING,
240                        entity: Sample
241        ).save(failOnError:true)
242
243                // Human tissue sample template
244                def dclSampleTemplate = new Template(
245                        name: 'DCL Sample information',
246                        entity: dbnp.studycapturing.Sample
247                )
248                .addToFields(sampleDCLTextField)
249        .save(failOnError:true)
250                // EO DCL Sample Mapping Template**********************************
251
252
253                /*
254                def GrowthTreatmentTemplate = new Template(
255                        name: 'Growth treatment',
256                        entity: dbnp.studycapturing.Event
257                )
258                .addToFields(sampleDescriptionField)
259                .addToFields(new TemplateField(name: 'position X',type: TemplateFieldType.STRING))
260                .addToFields(new TemplateField(name: 'position Y',type: TemplateFieldType.STRING))
261                .addToFields(new TemplateField(name: 'Block',type: TemplateFieldType.STRING))
262                .addToFields(new TemplateField(name: 'Temparature Day',type: TemplateFieldType.STRING))
263                .addToFields(new TemplateField(name: 'Temparature Night',type: TemplateFieldType.STRING))
264                .addToFields(new TemplateField(name: 'Light Intensity',type: TemplateFieldType.STRING))
265                .addToFields(new TemplateField(name: 'Harvest Delay',type: TemplateFieldType.STRING))
266                .save(failOnError:true)
267                 */
268
269                //Plant template
270                def greenHouseTemplate = new Template(
271                        name: 'Plant-green house ',
272                        entity: dbnp.studycapturing.Subject
273                )
274                .addToFields(varietyField)
275                .addToFields(ecotypeField)
276                .addToFields(genotypeField)
277                /*
278                .addToFields(genotypeTypeField)
279                .addToFields(
280                        new TemplateField(
281                                name: 'Growth location', type: TemplateFieldType.STRINGLIST,
282                                listEntries: [
283                                        new TemplateFieldListItem(name:'Greenhouse'),
284                                        new TemplateFieldListItem(name: 'Field')
285                                ]
286                        )
287                )
288                .addToFields(
289                        new TemplateField(
290                                name: 'Room', type: TemplateFieldType.STRING,
291                                comment: 'Chamber number in case of Greenhouse'
292                        )
293                )
294                */
295                .addToFields(
296                        new TemplateField(
297                                name: 'Chamber no.',
298                                type: TemplateFieldType.STRING,
299                                entity: Subject,
300                                comment: 'Chamber number in the Greenhouse'
301                        )
302                )
303                .addToFields(
304                        new TemplateField(
305                                name: 'Growth type',
306                                entity: Subject,
307                                type: TemplateFieldType.STRINGLIST,
308                                listEntries: [
309                                        new TemplateFieldListItem(name:'Standard'),
310                                new TemplateFieldListItem(name: 'Experimental'),
311                                new TemplateFieldListItem(name: 'Unknown')
312                                ]
313                        )
314                )
315                .addToFields(new TemplateField(
316                        name: 'Growth protocol', entity: Subject, type: TemplateFieldType.TEXT))
317                .addToFields(new TemplateField(
318                        name: 'Position X', entity: Subject, type: TemplateFieldType.DOUBLE))
319                .addToFields(new TemplateField(
320                        name: 'Position Y', entity: Subject, type: TemplateFieldType.DOUBLE))
321                .addToFields(new TemplateField(
322                        name: 'Block', entity: Subject, type: TemplateFieldType.STRING))
323                .addToFields(new TemplateField(
324                        name: 'Temperature at day', entity: Subject, type: TemplateFieldType.DOUBLE))
325                .addToFields(new TemplateField(
326                        name: 'Temperature at night', entity: Subject, type: TemplateFieldType.DOUBLE))
327                .addToFields(new TemplateField(
328                        name: 'Photo period', entity: Subject, type: TemplateFieldType.STRING))
329                .addToFields(new TemplateField(
330                        name: 'Light intensity', entity: Subject, type: TemplateFieldType.STRING))
331                .addToFields(new TemplateField(
332                        name: 'Start date', entity: Subject, type: TemplateFieldType.DATE))
333                .addToFields(new TemplateField(
334                        name: 'Harvest date', entity: Subject, type: TemplateFieldType.DATE))
335                .addToFields(new TemplateField(
336                        name: 'Harvest delay', entity: Subject, type: TemplateFieldType.TEXT))
337                .addToFields(new TemplateField(
338                        name: 'Additional info', entity: Subject, type: TemplateFieldType.TEXT))
339        .save(failOnError:true)
340
341                def FieldTemplate = new Template(
342                        name: 'Plant-open field',
343                        entity: dbnp.studycapturing.Subject
344                )
345                .addToFields(varietyField)
346                .addToFields(ecotypeField)
347                .addToFields(genotypeField)
348                .addToFields(new TemplateField(
349                        name: 'Start date', entity: Subject, type: TemplateFieldType.DATE))
350                .addToFields(new TemplateField(
351                        name: 'Harvest date', entity: Subject, type: TemplateFieldType.DATE))
352                .addToFields(new TemplateField(
353                        name: 'Growth type', entity: Subject, type: TemplateFieldType.STRINGLIST,
354                        listEntries: [new TemplateFieldListItem(name:'Standard'),new TemplateFieldListItem(name: 'Experimental')]))
355                .addToFields(new TemplateField(
356                        name: 'Growth protocol', entity: Subject, type: TemplateFieldType.TEXT))
357                .addToFields(new TemplateField(
358                        name: 'Harvest delay', entity: Subject, type: TemplateFieldType.TEXT))
359        .save(failOnError:true)
360
361                //Plant template
362                def chamberTemplate = new Template(
363                        name: 'Plant-chamber',
364                        entity: dbnp.studycapturing.Subject
365                )
366                .addToFields(varietyField)
367                .addToFields(ecotypeField)
368                .addToFields(genotypeField)
369                /*
370                .addToFields(genotypeTypeField)
371                .addToFields(
372                        new TemplateField(
373                                name: 'Growth location',
374                                type: TemplateFieldType.STRINGLIST,
375                                listEntries: [
376                                        new TemplateFieldListItem(name:'Greenhouse'),
377                                        new TemplateFieldListItem(name: 'Field')
378                                ]
379                        )
380                )
381                */
382                .addToFields(new TemplateField(
383                        name: 'Room', type: TemplateFieldType.STRING, entity: Subject,
384                        comment: 'room number'))
385                .addToFields(new TemplateField(
386                        name: 'Chamber no.', type: TemplateFieldType.STRING, entity: Subject,
387                        comment: 'Chamber number'))
388                .addToFields(new TemplateField(
389                        name: 'Block', type: TemplateFieldType.STRING, entity: Subject))
390                .addToFields(new TemplateField(
391                        name: 'Position X', type: TemplateFieldType.DOUBLE, entity: Subject))
392                .addToFields(new TemplateField(
393                        name: 'Position Y', type: TemplateFieldType.DOUBLE, entity: Subject))
394                .addToFields(new TemplateField(
395                        name: 'Temperature at day', type: TemplateFieldType.DOUBLE, entity: Subject))
396                .addToFields(new TemplateField(
397                        name: 'Temperature at night', type: TemplateFieldType.DOUBLE, entity: Subject))
398                .addToFields(new TemplateField(
399                        name: 'Photo period', type: TemplateFieldType.STRING, entity: Subject))
400                .addToFields(new TemplateField(
401                        name: 'Light intensity', type: TemplateFieldType.STRING, entity: Subject))
402                .addToFields(new TemplateField(
403                        name: 'Start date', type: TemplateFieldType.DATE, entity: Subject))
404                .addToFields(new TemplateField(
405                        name: 'Harvest date', type: TemplateFieldType.DATE, entity: Subject))
406                .addToFields(new TemplateField(
407                        name: 'Growth type', type: TemplateFieldType.STRINGLIST, entity: Subject,
408                        listEntries: [new TemplateFieldListItem(name:'Standard'),new TemplateFieldListItem(name: 'Experimental')]))
409                .addToFields(new TemplateField(
410                        name: 'Growth protocol', type: TemplateFieldType.TEXT, entity: Subject))
411                .addToFields(new TemplateField(
412                        name: 'Harvest delay', type: TemplateFieldType.TEXT, entity: Subject))
413                .save(failOnError:true)
414
415                def plantSampleTemplate = new Template(
416                        name: 'Plant sample',
417                        entity: dbnp.studycapturing.Sample
418                )
419                .addToFields(sampleRemarksField)
420                .addToFields(sampleVialTextField)
421        .save(failOnError:true)
422
423                def materialPrepTemplate = new Template(
424                        name: 'Plant-material preparation',
425                    description: 'material preparation',
426                    entity: dbnp.studycapturing.Event
427                )
428                .addToFields(new TemplateField(
429                         name: 'Tissue',
430                        type: TemplateFieldType.STRING,
431                        entity: Event,
432                    comment: 'organ/ fraction of culture/ plant part')
433                )
434                .addToFields(
435                        new TemplateField(
436                                 name: 'Grinding',
437                                type: TemplateFieldType.STRINGLIST,
438                                entity: Event,
439                            listEntries: [
440                                        new TemplateFieldListItem(name:'yes'),
441                                new TemplateFieldListItem(name: 'no'),
442                                new TemplateFieldListItem(name: 'unknown')
443                                ]
444                        )
445                )
446                .addToFields(
447                        new TemplateField(
448                                name: 'Storage location',
449                                type: TemplateFieldType.STRING,
450                                entity: Event
451                        )
452                )
453                .addToFields(
454                        new TemplateField(
455                                name: 'protocol reference',
456                                type: TemplateFieldType.STRING,
457                                entity: Event
458                        )
459                ).save(failOnError:true)
460
461                def protocolField = new TemplateField(
462                        name: 'Protocol',
463                        type: TemplateFieldType.FILE,
464                        entity: Event,
465                        comment: 'You can upload a protocol here which describes the procedure which was used when carrying out the event'
466                ).save(failOnError:true)
467
468
469                // diet treatment template
470                def dietTreatmentTemplate = new Template(
471                        name: 'Diet treatment',
472                        entity: dbnp.studycapturing.Event
473                )
474                .addToFields(
475                        new TemplateField(
476                                name: 'Diet',
477                                type: TemplateFieldType.STRINGLIST,
478                                entity: Event,
479                                listEntries: [
480                                        new TemplateFieldListItem(name:'low fat'),
481                                        new TemplateFieldListItem(name: 'high fat')
482                                ]
483                        )
484                )
485                .addToFields(protocolField)
486        .save(failOnError:true)
487
488                // boost treatment template
489                def boostTreatmentTemplate = new Template(
490                        name: 'Compound challenge',
491                        entity: dbnp.studycapturing.Event
492                )
493                .addToFields(
494                        new TemplateField(
495                                name: 'Compound',
496                                type: TemplateFieldType.ONTOLOGYTERM,
497                                entity: Event,
498                                ontologies: [Ontology.getOrCreateOntologyByNcboId(1007)]
499                        )
500                )
501                .addToFields(
502                        new TemplateField(
503                                name: 'Control',
504                                type: TemplateFieldType.BOOLEAN,
505                                entity: Event
506                        )
507                )
508                .addToFields(protocolField)
509        .save(failOnError:true)
510
511                // fasting treatment template
512                def fastingTreatment = new Template(
513                        name: 'Fasting treatment',
514                        description: 'Fasting for a specific amount of time',
515                        entity: dbnp.studycapturing.Event
516                )
517                .addToFields(
518                        new TemplateField(
519                                name: 'Fasting period',
520                                type: TemplateFieldType.RELTIME,
521                                entity: Event
522                        )
523                ).save(failOnError:true)
524
525                // SamplingEvent templates
526                def samplingProtocolField = new TemplateField(
527                        name: 'Sample Protocol',
528                        entity: SamplingEvent,
529                        type: TemplateFieldType.FILE,
530                        comment: 'You can upload a protocol here which describes the procedure which was used when carrying out the sampling event'
531                ).save(failOnError:true)
532
533                // liver sampling event template
534                def liverSamplingEventTemplate = new Template(
535                        name: 'Liver extraction',
536                        description: 'Liver sampling for transcriptomics arrays',
537                        entity: dbnp.studycapturing.SamplingEvent
538                )
539                .addToFields(samplingProtocolField)
540                .addToFields(
541                        new TemplateField(
542                                name: 'Sample weight',
543                                unit: 'mg',
544                                entity: SamplingEvent,
545                                type: TemplateFieldType.DOUBLE
546                        )
547                ).save(failOnError:true)
548
549                // blood sampling
550                def bloodSamplingEventTemplate = new Template(
551                        name: 'Blood extraction',
552                        description: 'Blood extraction targeted at lipid assays',
553                        entity: dbnp.studycapturing.SamplingEvent
554                )
555                .addToFields(samplingProtocolField)
556                .addToFields(
557                        new TemplateField(
558                                name: 'Sample volume',
559                                entity: SamplingEvent,
560                                unit: 'ml',
561                                type: TemplateFieldType.DOUBLE
562                        )
563                ).save(failOnError:true)
564
565                // plant sample extraction event template
566                def plantSamplingExtractEventTemplate = new Template(
567                        name: 'Plant sample extraction',
568                        description: 'sample extraction',
569                        entity: dbnp.studycapturing.SamplingEvent,
570                    sampleTemplates: [plantSampleTemplate]
571                )
572                .addToFields(samplingProtocolField)
573                .addToFields(
574                        new TemplateField(
575                                name: 'Sample weight',
576                                unit: 'ul',
577                                entity: SamplingEvent,
578                                type: TemplateFieldType.DOUBLE
579                        )
580                )
581                .addToFields(
582                        new TemplateField(
583                                name: 'Sample when measured',
584                                type: TemplateFieldType.STRINGLIST,
585                                entity: SamplingEvent,
586                             listEntries: [
587                                         new TemplateFieldListItem(name:'Dried'),
588                             new TemplateFieldListItem(name: 'Fresh'),
589                             new TemplateFieldListItem(name: 'Unknown')
590                                 ]
591                        )
592                ).save(failOnError:true)
593
594                // plant sampling event template
595                def plantSamplingEventTemplate = new Template(
596                        name: 'Plant-sample',
597                        description: 'plant sample ',
598                        entity: dbnp.studycapturing.SamplingEvent,
599                    sampleTemplates: [plantSampleTemplate]
600                )
601                //.addToFields(samplingProtocolField)
602                .addToFields(
603                        new TemplateField(
604                                name: 'material',
605                            comment: 'physical charecteristic. e.g, grounded powder of tomato seed or liquid',
606                                entity: SamplingEvent,
607                                type: TemplateFieldType.STRING
608                        )
609                )
610                .addToFields(
611                        new TemplateField(
612                                name: 'Description',
613                                type: TemplateFieldType.STRING,
614                                entity: SamplingEvent
615                        )
616                )
617                .addToFields(
618                        new TemplateField(
619                                name: 'extracted material',
620                                comment: 'substance to be extracted. e.g., lipids, volatiles, primary metabolites etc',
621                                type: TemplateFieldType.STRING,
622                                entity: SamplingEvent
623                        )
624                )
625                .addToFields(
626                        new TemplateField(
627                                name: 'Text on vial',
628                                entity: SamplingEvent,
629                                type: TemplateFieldType.STRING
630                        )
631                ).save(failOnError:true)
632
633
634                // assay templates
635                def assayDescriptionField = new TemplateField(
636                                name: 'Description',
637                            comment: 'add general assay information here',
638                                entity: Assay,
639                                type: TemplateFieldType.STRING
640                ).save(failOnError:true)
641
642                def ccAssayTemplate = new Template(
643                        name: 'Clinical chemistry assay',
644                        description: 'Clinical chemistry assay stored in a SAM module',
645                        entity: dbnp.studycapturing.Assay
646                )
647                .addToFields(assayDescriptionField)
648                .save(failOnError:true)
649
650                def metAssayTemplate = new Template(
651                        name: 'Metabolomics assay',
652                        description: 'Metabolomics assay stored in a metabolomics module',
653                        entity: dbnp.studycapturing.Assay
654                )
655                .addToFields(assayDescriptionField)
656                .addToFields(
657                        new TemplateField(
658                                name: 'Spectrometry technique',
659                            comment: 'Select the used metabolomics technique',
660                                entity: Assay,
661                                type: TemplateFieldType.STRINGLIST,
662                            listEntries: [
663                                        new TemplateFieldListItem(name: 'GC/MS'),
664                                new TemplateFieldListItem(name: 'LC/MS'),
665                                new TemplateFieldListItem(name: 'NMR'),
666                                new TemplateFieldListItem(name: 'HPLC')
667                            ])
668                ).save(failOnError:true)
669        }
670
671}
672
673///**
674// * @Author kees
675// * @Since Jun 25, 2010
676// *
677// * Revision information:
678// * $Rev: 1588 $
679// * $Author: s.h.sikkema@gmail.com $
680// * $Date: 2011-03-04 11:30:52 +0000 (vr, 04 mrt 2011) $
681// */
682//package dbnp.configuration
683//
684//
685//import dbnp.studycapturing.*
686//import org.dbnp.gdt.*
687//import org.codehaus.groovy.grails.commons.GrailsApplication
688//
689//class ExampleTemplates {
690//
691//      /**
692//       * Add the ontologies that are necessary for the templates below manually
693//       * This function can be called to avoid the HTTP requests to BioPortal each time
694//       * (e.g. in development or automated test environments)
695//       */
696//      public static void initTemplateOntologies() {
697//              "inserting initial ontologies".grom()
698//
699//              // If running in development or test mode, add ontologies manually to speed up development and allow running offline
700//              if (grails.util.GrailsUtil.environment == GrailsApplication.ENV_DEVELOPMENT || grails.util.GrailsUtil.environment == GrailsApplication.ENV_TEST) {
701//
702//                      // add Species ontology which is used for a.o. the Subject domain field 'species'
703//                      def speciesOntology = new Ontology(
704//                              name: 'NCBI organismal classification',
705//                              description: 'A taxonomic classification of living organisms and associated artifacts for their controlled description within the context of databases.',
706//                              url: 'http://www.ncbi.nlm.nih.gov/Taxonomy/taxonomyhome.html/',
707//                              versionNumber: '1.2',
708//                              ncboId: '1132',
709//                              ncboVersionedId: '38802'
710//                      ).with { if (!validate()) { errors.each { println it} } else save()}
711//
712//                      // add Sample>material ontology
713//                      def brendaOntology = new Ontology(
714//                              name: 'BRENDA tissue / enzyme source',
715//                              description: 'A structured controlled vocabulary for the source of an enzyme. It comprises terms for tissues, cell lines, cell types and cell cultures from uni- and multicellular organisms.',
716//                              url: 'http://www.brenda-enzymes.info',
717//                              versionNumber: '1.3',
718//                              ncboId: '1005',
719//                              ncboVersionedId: '40643'
720//                      ).with { if (!validate()) { errors.each { println it} } else save()}
721//
722//                      // add NCI ontology which is used in Mouse genotype template field
723//                      def nciOntology = new Ontology(
724//                              name: 'NCI Thesaurus',
725//                              description: 'A vocabulary for clinical care, translational and basic research, and public information and administrative activities.',
726//                              url: 'http://ncicb.nci.nih.gov/core/EVS',
727//                              versionNumber: '10.03',
728//                              ncboId: '1032',
729//                              ncboVersionedId: '42838'
730//                      ).with { if (!validate()) { errors.each { println it} } else save()}
731//
732//                      // add CHEBI ontology which is used for describing chemicals in e.g. events
733//                      def chebiOntology = new Ontology(
734//                              name: 'Chemical entities of biological interest',
735//                              description: 'A structured classification of chemical compounds of biological relevance.',
736//                              url: 'http://www.ebi.ac.uk/chebi',
737//                              versionNumber: '1.73',
738//                              ncboId: '1007',
739//                              ncboVersionedId: '44746'
740//                      ).with { if (!validate()) { errors.each { println it} } else save()}
741//
742//              }
743//              // otherwise, this may be a production demo instance, so initialize the ontologies dynamically from BioPortal
744//              else {
745//
746//                      def speciesOntology = Ontology.getOrCreateOntologyByNcboId(1132)
747//                      def brendaOntology = Ontology.getOrCreateOntologyByNcboId(1005)
748//                      def nciOntology = Ontology.getOrCreateOntologyByNcboId(1032)
749//                      def chebiOntology = Ontology.getOrCreateOntologyByNcboId(1007)
750//              }
751//      }
752//
753//
754//      /**
755//       * Add example templates, this function would normally be called on an empty database
756//       */
757//      public static void initTemplates() {
758//              "inserting initial templates".grom()
759//
760//              def genderField = new TemplateField(
761//                      name: 'Gender',type: TemplateFieldType.STRINGLIST, entity: Subject,
762//                      listEntries: [new TemplateFieldListItem(name:'Male'),new TemplateFieldListItem(name: 'Female'),new TemplateFieldListItem(name: 'Unknown')])
763//              .with { if (!validate()) { errors.each { println it} } else save()}
764//
765//              def ageField = new TemplateField(
766//                      name: 'Age',type: TemplateFieldType.LONG,entity: Subject,unit: 'years',comment: 'Either include age at the start of the study or date of birth (if known)')
767//              .with { if (!validate()) { errors.each { println it} } else save()}
768//
769//              def genotypeField = new TemplateField(
770//                      name: 'Genotype', type: TemplateFieldType.ONTOLOGYTERM,entity: Subject,
771//                      comment: 'If present, indicate the genetic variance of the subject (e.g., mutagenized populations,knock-out/in,transgene etc)')
772//              .with { if (!validate()) { errors.each { println it} } else save()}
773//
774//               def genotypeTypeField = new TemplateField(
775//                      name: 'Genotype type',type: TemplateFieldType.STRINGLIST,entity: Subject,
776//                      listEntries: [new TemplateFieldListItem(name:'wildtype'),
777//                              new TemplateFieldListItem(name:'transgenic'),
778//                              new TemplateFieldListItem(name:'knock-out'),
779//                              new TemplateFieldListItem(name:'knock-in')],
780//                      comment: 'If a genotype was specified, please indicate here the type of the genotype')
781//              .with { if (!validate()) { errors.each { println it} } else save()}
782//
783//              def varietyField = new TemplateField(
784//                      name: 'Variety', type: TemplateFieldType.STRING,entity: Subject,
785//                      comment: 'taxonomic category consisting of members of a species that differ from others of the same species in minor but heritable characteristics')
786//              .with { if (!validate()) { errors.each { println it} } else save()}
787//
788//              def ecotypeField = new TemplateField(
789//                      name: 'Ecotype', type: TemplateFieldType.STRING,entity: Subject,
790//                       comment: 'a type or subspecies of life that is especially well adapted to a certain environment'
791//              )
792//               .with { if (!validate()) { errors.each { println it} } else save()}
793//
794//              // Nutritional study template
795//              def studyTemplate = new Template(
796//                      name: 'Academic study',
797//                      entity: dbnp.studycapturing.Study
798//              )
799//              .addToFields(new TemplateField(name: 'Objectives',type: TemplateFieldType.TEXT,entity: Study,comment:'Fill out the aim or questions of the study'))
800//              .addToFields(new TemplateField(name: 'Consortium',type: TemplateFieldType.STRING,entity: Study,comment:'If the study was performed within a consortium (e.g. NMC, NuGO), you can indicate this here'))
801//              .addToFields(new TemplateField(name: 'Cohort name',type: TemplateFieldType.STRING,entity: Study,comment:'If a cohort was used the name or code of the cohort can be define here (define a cohort template)'))
802//              .addToFields(new TemplateField(name: 'Lab id',type: TemplateFieldType.STRING,entity: Study,comment:'In which lab was the study performed; indicate the roomnumber.'))
803//              .addToFields(new TemplateField(name: 'Institute',type: TemplateFieldType.STRING,entity: Study,comment:'In which institute was the study performed; indicate the full address information (to be replaced by persons-affiliations?)'))
804//              .addToFields(new TemplateField(name: 'Study protocol',type: TemplateFieldType.FILE,entity: Study,comment:'Optionally attach a file in which the protocol in the study is described'))
805//              .with { if (!validate()) { errors.each { println it} } else save()}
806//
807//              // Mouse template
808//              def mouseTemplate = new Template(
809//                      name: 'Mouse', entity: dbnp.studycapturing.Subject)
810//              .addToFields(new TemplateField(
811//                      name: 'Strain', type: TemplateFieldType.ONTOLOGYTERM, ontologies: [Ontology.getOrCreateOntologyByNcboId(1032)], entity: Subject, comment: "This is an ontology term, if the right strain is not in the list please add it with 'add more'"))
812//              .addToFields(genotypeField)
813//              .addToFields(genotypeTypeField)
814//              .addToFields(genderField)
815//              .addToFields(new TemplateField(
816//                      name: 'Age', type: TemplateFieldType.LONG, entity: Subject, unit: 'weeks', comment: 'Age at start of study'))
817//              .addToFields(new TemplateField(
818//                      name: 'Age type',type: TemplateFieldType.STRINGLIST,entity: Subject,
819//                      listEntries: [new TemplateFieldListItem(name:'postnatal'),new TemplateFieldListItem(name:'embryonal')]))
820//              .addToFields(new TemplateField(
821//                      name: 'Cage',type: TemplateFieldType.STRING,entity: Subject,comment:'Indicate the cage used for housing (type and/or size)'))
822//              .addToFields(new TemplateField(
823//                      name: '#Mice in cage',type: TemplateFieldType.LONG,entity: Subject,comment:'If known, indicate the number of mice per cage'))
824//              .addToFields(new TemplateField(
825//                      name: 'Litter size',type: TemplateFieldType.LONG,entity: Subject,comment:'If known, indicate the litter size of the litter from which the subject originates'))
826//              .addToFields(new TemplateField(
827//                      name: 'Weight', type: TemplateFieldType.DOUBLE, unit: 'gram',entity: Subject,comment:'If known indicate the weight of the subject in grams at the start of the study'))
828//              .with { if (!validate()) { errors.each { println it} } else save()}
829//
830//              // Human template
831//              def humanTemplate = new Template(
832//                      name: 'Human', entity: dbnp.studycapturing.Subject)
833//              .addToFields(genderField)
834//              .addToFields(ageField)
835//              .addToFields(new TemplateField(
836//                      name: 'DOB',type: TemplateFieldType.DATE,entity: Subject,comment:'Date of birth'))
837//              .addToFields(new TemplateField(
838//                      name: 'Height',type: TemplateFieldType.DOUBLE, entity: Subject, unit: 'm'))
839//              .addToFields(new TemplateField(
840//                      name: 'Weight',type: TemplateFieldType.DOUBLE, entity: Subject, unit: 'kg'))
841//              .addToFields(new TemplateField(
842//                      name: 'BMI',type: TemplateFieldType.DOUBLE, entity: Subject, unit: 'kg/m2',comment:'Body-mass-index'))
843//              .addToFields(new TemplateField(
844//                      name: 'Race',type: TemplateFieldType.STRING,entity: Subject, comment:'If known and of interest the ethnic group can be indicated'))
845//              .addToFields(new TemplateField(
846//                      name: 'Waist circumference',type: TemplateFieldType.DOUBLE, unit: 'cm',entity: Subject, comment:'The waist circumference is measured just above the hip bone. Indicate the measure at the start of the study.'))
847//              .addToFields(new TemplateField(
848//                      name: 'Hip circumference',type: TemplateFieldType.DOUBLE, unit: 'cm',entity: Subject, comment:'The hip circumference is measured at the level of the two bony prominences front of the hips. Indicate the measure at the start of the study.'))
849//              .addToFields(new TemplateField(
850//                      name: 'Systolic blood pressure',type: TemplateFieldType.DOUBLE, unit: 'mmHg',entity: Subject, comment:'Indicate the levels at the start of the study in mmHG'))
851//              .addToFields(new TemplateField(
852//                      name: 'Diastolic blood pressure',type: TemplateFieldType.DOUBLE, unit: 'mmHg',entity: Subject, comment:'Indicate the levels at the start of the study in mmHG'))
853//              .addToFields(new TemplateField(
854//                      name: 'Heart rate',type: TemplateFieldType.DOUBLE, unit: 'beats/min',entity: Subject, comment:'Indicate the heart rate at the start of in study in beats per minute'))
855//              .addToFields(new TemplateField(
856//                      name: 'Run-in-food',type: TemplateFieldType.TEXT,entity: Subject, comment:'If defined, give a short description of the food used before the measurements'))
857//              .with { if (!validate()) { errors.each { println it} } else save()}
858//
859//              def sampleRemarksField = new TemplateField(
860//                      name: 'Remarks',
861//                      type: TemplateFieldType.TEXT,
862//                  entity: Sample
863//              )
864//              .with { if (!validate()) { errors.each { println it} } else save()}
865//
866//              def sampleVialTextField = new TemplateField(
867//                      name: 'Text on vial',
868//                      type: TemplateFieldType.STRING,
869//                  entity: Sample
870//              )
871//              .with { if (!validate()) { errors.each { println it} } else save()}
872//
873//              // Human tissue sample template
874//              def humanSampleTemplate = new Template(
875//                      name: 'Human tissue sample',
876//                      entity: dbnp.studycapturing.Sample
877//              )
878//              .addToFields(sampleRemarksField)
879//              .addToFields(sampleVialTextField)
880//              .addToFields(
881//                      new TemplateField(
882//                          name: 'Sample measured weight',
883//                          unit: 'mg',
884//                          type: TemplateFieldType.DOUBLE,
885//                      entity: Sample
886//                      )
887//              )
888//              .with { if (!validate()) { errors.each { println it} } else save()}
889//
890//              // Human blood sample template
891//              def humanBloodSampleTemplate = new Template(
892//                  name: 'Human blood sample',
893//                      entity: dbnp.studycapturing.Sample
894//              )
895//              .addToFields(sampleRemarksField)
896//              .addToFields(sampleVialTextField)
897//              .addToFields(
898//                      new TemplateField(
899//                          name: 'Sample measured volume',
900//                          unit: 'ml',
901//                          type: TemplateFieldType.DOUBLE,
902//                              entity: Sample
903//                      )
904//              )
905//              .with { if (!validate()) { errors.each { println it} } else save()}
906//
907//
908//              /*
909//               * Add NMC - DCL Sample Mapping Template
910//               * by Michael van Vliet
911//               *
912//               * For the Pilot running in Leiden (NOV2010)
913//               */
914//              def sampleDCLTextField = new TemplateField(
915//                      name: 'DCL Sample Reference',
916//                      type: TemplateFieldType.STRING,
917//                      entity: Sample
918//              )
919//              .with { if (!validate()) { errors.each { println it} } else save()}
920//
921//              // Human tissue sample template
922//              def dclSampleTemplate = new Template(
923//                      name: 'DCL Sample information',
924//                      entity: dbnp.studycapturing.Sample
925//              )
926//              .addToFields(sampleDCLTextField)
927//              .with { if (!validate()) { errors.each { println it} } else save()}
928//              // EO DCL Sample Mapping Template**********************************
929//
930//
931//              /*
932//              def GrowthTreatmentTemplate = new Template(
933//                      name: 'Growth treatment',
934//                      entity: dbnp.studycapturing.Event
935//              )
936//              .addToFields(sampleDescriptionField)
937//              .addToFields(new TemplateField(name: 'position X',type: TemplateFieldType.STRING))
938//              .addToFields(new TemplateField(name: 'position Y',type: TemplateFieldType.STRING))
939//              .addToFields(new TemplateField(name: 'Block',type: TemplateFieldType.STRING))
940//              .addToFields(new TemplateField(name: 'Temparature Day',type: TemplateFieldType.STRING))
941//              .addToFields(new TemplateField(name: 'Temparature Night',type: TemplateFieldType.STRING))
942//              .addToFields(new TemplateField(name: 'Light Intensity',type: TemplateFieldType.STRING))
943//              .addToFields(new TemplateField(name: 'Harvest Delay',type: TemplateFieldType.STRING))
944//              .with { if (!validate()) { errors.each { println it} } else save()}
945//               */
946//
947//              //Plant template
948//              def greenHouseTemplate = new Template(
949//                      name: 'Plant-green house ',
950//                      entity: dbnp.studycapturing.Subject
951//              )
952//              .addToFields(varietyField)
953//              .addToFields(ecotypeField)
954//               .addToFields(genotypeField)
955//              /*
956//              .addToFields(genotypeTypeField)
957//              .addToFields(
958//                      new TemplateField(
959//                              name: 'Growth location', type: TemplateFieldType.STRINGLIST,
960//                              listEntries: [
961//                                      new TemplateFieldListItem(name:'Greenhouse'),
962//                                      new TemplateFieldListItem(name: 'Field')
963//                              ]
964//                      )
965//              )
966//              .addToFields(
967//                      new TemplateField(
968//                              name: 'Room', type: TemplateFieldType.STRING,
969//                              comment: 'Chamber number in case of Greenhouse'
970//                      )
971//              )
972//              */
973//              .addToFields(
974//                      new TemplateField(
975//                              name: 'Chamber no.',
976//                              type: TemplateFieldType.STRING,
977//                              entity: Subject,
978//                              comment: 'Chamber number in the Greenhouse'
979//                      )
980//              )
981//              .addToFields(
982//                      new TemplateField(
983//                              name: 'Growth type',
984//                              entity: Subject,
985//                              type: TemplateFieldType.STRINGLIST,
986//                              listEntries: [
987//                                      new TemplateFieldListItem(name:'Standard'),
988//                              new TemplateFieldListItem(name: 'Experimental'),
989//                              new TemplateFieldListItem(name: 'Unknown')
990//                              ]
991//                      )
992//              )
993//              .addToFields(new TemplateField(
994//                      name: 'Growth protocol', entity: Subject, type: TemplateFieldType.TEXT))
995//              .addToFields(new TemplateField(
996//                      name: 'Position X', entity: Subject, type: TemplateFieldType.DOUBLE))
997//              .addToFields(new TemplateField(
998//                      name: 'Position Y', entity: Subject, type: TemplateFieldType.DOUBLE))
999//              .addToFields(new TemplateField(
1000//                      name: 'Block', entity: Subject, type: TemplateFieldType.STRING))
1001//              .addToFields(new TemplateField(
1002//                      name: 'Temperature at day', entity: Subject, type: TemplateFieldType.DOUBLE))
1003//              .addToFields(new TemplateField(
1004//                      name: 'Temperature at night', entity: Subject, type: TemplateFieldType.DOUBLE))
1005//              .addToFields(new TemplateField(
1006//                      name: 'Photo period', entity: Subject, type: TemplateFieldType.STRING))
1007//              .addToFields(new TemplateField(
1008//                      name: 'Light intensity', entity: Subject, type: TemplateFieldType.STRING))
1009//              .addToFields(new TemplateField(
1010//                      name: 'Start date', entity: Subject, type: TemplateFieldType.DATE))
1011//              .addToFields(new TemplateField(
1012//                      name: 'Harvest date', entity: Subject, type: TemplateFieldType.DATE))
1013//              .addToFields(new TemplateField(
1014//                      name: 'Harvest delay', entity: Subject, type: TemplateFieldType.TEXT))
1015//              .addToFields(new TemplateField(
1016//                      name: 'Additional info', entity: Subject, type: TemplateFieldType.TEXT))
1017//              .with { if (!validate()) { errors.each { println it} } else save()}
1018//
1019//              def FieldTemplate = new Template(
1020//                      name: 'Plant-open field',
1021//                      entity: dbnp.studycapturing.Subject
1022//              )
1023//              .addToFields(varietyField)
1024//              .addToFields(ecotypeField)
1025//              .addToFields(genotypeField)
1026//              .addToFields(new TemplateField(
1027//                      name: 'Start date', entity: Subject, type: TemplateFieldType.DATE))
1028//              .addToFields(new TemplateField(
1029//                      name: 'Harvest date', entity: Subject, type: TemplateFieldType.DATE))
1030//              .addToFields(new TemplateField(
1031//                      name: 'Growth type', entity: Subject, type: TemplateFieldType.STRINGLIST,
1032//                      listEntries: [new TemplateFieldListItem(name:'Standard'),new TemplateFieldListItem(name: 'Experimental')]))
1033//              .addToFields(new TemplateField(
1034//                      name: 'Growth protocol', entity: Subject, type: TemplateFieldType.TEXT))
1035//              .addToFields(new TemplateField(
1036//                      name: 'Harvest delay', entity: Subject, type: TemplateFieldType.TEXT))
1037//              .with { if (!validate()) { errors.each { println it} } else save()}
1038//
1039//              //Plant template
1040//              def chamberTemplate = new Template(
1041//                      name: 'Plant-chamber',
1042//                      entity: dbnp.studycapturing.Subject
1043//              )
1044//              .addToFields(varietyField)
1045//              .addToFields(ecotypeField)
1046//              .addToFields(genotypeField)
1047//              /*
1048//              .addToFields(genotypeTypeField)
1049//              .addToFields(
1050//                      new TemplateField(
1051//                              name: 'Growth location',
1052//                              type: TemplateFieldType.STRINGLIST,
1053//                              listEntries: [
1054//                                      new TemplateFieldListItem(name:'Greenhouse'),
1055//                                      new TemplateFieldListItem(name: 'Field')
1056//                              ]
1057//                      )
1058//              )
1059//              */
1060//              .addToFields(new TemplateField(
1061//                      name: 'Room', type: TemplateFieldType.STRING, entity: Subject,
1062//                      comment: 'room number'))
1063//              .addToFields(new TemplateField(
1064//                      name: 'Chamber no.', type: TemplateFieldType.STRING, entity: Subject,
1065//                      comment: 'Chamber number'))
1066//              .addToFields(new TemplateField(
1067//                      name: 'Block', type: TemplateFieldType.STRING, entity: Subject))
1068//              .addToFields(new TemplateField(
1069//                      name: 'Position X', type: TemplateFieldType.DOUBLE, entity: Subject))
1070//              .addToFields(new TemplateField(
1071//                      name: 'Position Y', type: TemplateFieldType.DOUBLE, entity: Subject))
1072//              .addToFields(new TemplateField(
1073//                      name: 'Temperature at day', type: TemplateFieldType.DOUBLE, entity: Subject))
1074//              .addToFields(new TemplateField(
1075//                      name: 'Temperature at night', type: TemplateFieldType.DOUBLE, entity: Subject))
1076//              .addToFields(new TemplateField(
1077//                      name: 'Photo period', type: TemplateFieldType.STRING, entity: Subject))
1078//              .addToFields(new TemplateField(
1079//                      name: 'Light intensity', type: TemplateFieldType.STRING, entity: Subject))
1080//              .addToFields(new TemplateField(
1081//                      name: 'Start date', type: TemplateFieldType.DATE, entity: Subject))
1082//              .addToFields(new TemplateField(
1083//                      name: 'Harvest date', type: TemplateFieldType.DATE, entity: Subject))
1084//              .addToFields(new TemplateField(
1085//                      name: 'Growth type', type: TemplateFieldType.STRINGLIST, entity: Subject,
1086//                      listEntries: [new TemplateFieldListItem(name:'Standard'),new TemplateFieldListItem(name: 'Experimental')]))
1087//              .addToFields(new TemplateField(
1088//                      name: 'Growth protocol', type: TemplateFieldType.TEXT, entity: Subject))
1089//              .addToFields(new TemplateField(
1090//                      name: 'Harvest delay', type: TemplateFieldType.TEXT, entity: Subject))
1091//              .with { if (!validate()) { errors.each { println it} } else save()}
1092//
1093//              def plantSampleTemplate = new Template(
1094//                      name: 'Plant sample',
1095//                      entity: dbnp.studycapturing.Sample
1096//              )
1097//              .addToFields(sampleRemarksField)
1098//              .addToFields(sampleVialTextField)
1099//              .with { if (!validate()) { errors.each { println it} } else save()}
1100//
1101//              def materialPrepTemplate = new Template(
1102//                      name: 'Plant-material preparation',
1103//                  description: 'material preparation',
1104//                  entity: dbnp.studycapturing.Event
1105//              )
1106//              .addToFields(new TemplateField(
1107//                       name: 'Tissue',
1108//                      type: TemplateFieldType.STRING,
1109//                      entity: Event,
1110//                  comment: 'organ/ fraction of culture/ plant part')
1111//              )
1112//              .addToFields(
1113//                      new TemplateField(
1114//                               name: 'Grinding',
1115//                              type: TemplateFieldType.STRINGLIST,
1116//                              entity: Event,
1117//                          listEntries: [
1118//                                      new TemplateFieldListItem(name:'yes'),
1119//                              new TemplateFieldListItem(name: 'no'),
1120//                              new TemplateFieldListItem(name: 'unknown')
1121//                              ]
1122//                      )
1123//              )
1124//              .addToFields(
1125//                      new TemplateField(
1126//                              name: 'Storage location',
1127//                              type: TemplateFieldType.STRING,
1128//                              entity: Event
1129//                      )
1130//              )
1131//              .addToFields(
1132//                      new TemplateField(
1133//                              name: 'protocol reference',
1134//                              type: TemplateFieldType.STRING,
1135//                              entity: Event
1136//                      )
1137//              )
1138//              .with { if (!validate()) { errors.each { println it} } else save()}
1139//
1140//              def protocolField = new TemplateField(
1141//                      name: 'Protocol',
1142//                      type: TemplateFieldType.FILE,
1143//                      entity: Event,
1144//                      comment: 'You can upload a protocol here which describes the procedure which was used when carrying out the event'
1145//              )
1146//              .with { if (!validate()) { errors.each { println it} } else save()}
1147//
1148//              // diet treatment template
1149//              def dietTreatmentTemplate = new Template(
1150//                      name: 'Diet treatment',
1151//                      entity: dbnp.studycapturing.Event
1152//              )
1153//              .addToFields(
1154//                      new TemplateField(
1155//                              name: 'Diet',
1156//                              type: TemplateFieldType.STRINGLIST,
1157//                              entity: Event,
1158//                              listEntries: [
1159//                                      new TemplateFieldListItem(name:'low fat'),
1160//                                      new TemplateFieldListItem(name: 'high fat')
1161//                              ]
1162//                      )
1163//              )
1164//              .addToFields(protocolField)
1165//              .with { if (!validate()) { errors.each { println it} } else save(flush:true)}
1166//              dietTreatmentTemplate.refresh()
1167//
1168//              // boost treatment template
1169//              def boostTreatmentTemplate = new Template(
1170//                      name: 'Compound challenge',
1171//                      entity: dbnp.studycapturing.Event
1172//              )
1173//              .addToFields(
1174//                      new TemplateField(
1175//                              name: 'Compound',
1176//                              type: TemplateFieldType.ONTOLOGYTERM,
1177//                              entity: Event,
1178//                              ontologies: [Ontology.getOrCreateOntologyByNcboId(1007)]
1179//                      )
1180//              )
1181//              .addToFields(
1182//                      new TemplateField(
1183//                              name: 'Control',
1184//                              type: TemplateFieldType.BOOLEAN,
1185//                              entity: Event
1186//                      )
1187//              )
1188//              .addToFields(protocolField)
1189//              .with { if (!validate()) { errors.each { println it} } else save(flush:true)}
1190//              boostTreatmentTemplate.refresh()
1191//
1192//              // fasting treatment template
1193//              def fastingTreatment = new Template(
1194//                      name: 'Fasting treatment',
1195//                      description: 'Fasting for a specific amount of time',
1196//                      entity: dbnp.studycapturing.Event
1197//              )
1198//              .addToFields(
1199//                      new TemplateField(
1200//                              name: 'Fasting period',
1201//                              type: TemplateFieldType.RELTIME,
1202//                              entity: Event
1203//                      )
1204//              )
1205//              .with { if (!validate()) { errors.each { println it} } else save()}
1206//
1207//              // SamplingEvent templates
1208//              def samplingProtocolField = new TemplateField(
1209//                      name: 'Sample Protocol',
1210//                      entity: SamplingEvent,
1211//                      type: TemplateFieldType.FILE,
1212//                      comment: 'You can upload a protocol here which describes the procedure which was used when carrying out the sampling event'
1213//              )
1214//              .with { if (!validate()) { errors.each { println it} } else save()}
1215//
1216//              // liver sampling event template
1217//              def liverSamplingEventTemplate = new Template(
1218//                      name: 'Liver extraction',
1219//                      description: 'Liver sampling for transcriptomics arrays',
1220//                      entity: dbnp.studycapturing.SamplingEvent
1221//              )
1222//              .addToFields(samplingProtocolField)
1223//              .addToFields(
1224//                      new TemplateField(
1225//                              name: 'Sample weight',
1226//                              unit: 'mg',
1227//                              entity: SamplingEvent,
1228//                              type: TemplateFieldType.DOUBLE
1229//                      )
1230//              )
1231//              .with { if (!validate()) { errors.each { println it} } else save(flush:true)}
1232//              liverSamplingEventTemplate.refresh()
1233//
1234//              // blood sampling
1235//              def bloodSamplingEventTemplate = new Template(
1236//                      name: 'Blood extraction',
1237//                      description: 'Blood extraction targeted at lipid assays',
1238//                      entity: dbnp.studycapturing.SamplingEvent
1239//              )
1240//              .addToFields(samplingProtocolField)
1241//              .addToFields(
1242//                      new TemplateField(
1243//                              name: 'Sample volume',
1244//                              entity: SamplingEvent,
1245//                              unit: 'ml',
1246//                              type: TemplateFieldType.DOUBLE
1247//                      )
1248//              )
1249//              .with { if (!validate()) { errors.each { println it} } else save(flush:true)}
1250//              bloodSamplingEventTemplate.refresh()
1251//
1252//              // plant sample extraction event template
1253//              def plantSamplingExtractEventTemplate = new Template(
1254//                      name: 'Plant sample extraction',
1255//                      description: 'sample extraction',
1256//                      entity: dbnp.studycapturing.SamplingEvent,
1257//                  sampleTemplates: [plantSampleTemplate]
1258//              )
1259//              .addToFields(samplingProtocolField)
1260//              .addToFields(
1261//                      new TemplateField(
1262//                              name: 'Sample weight',
1263//                              unit: 'ul',
1264//                              entity: SamplingEvent,
1265//                              type: TemplateFieldType.DOUBLE
1266//                      )
1267//              )
1268//              .addToFields(
1269//                      new TemplateField(
1270//                              name: 'Sample when measured',
1271//                              type: TemplateFieldType.STRINGLIST,
1272//                              entity: SamplingEvent,
1273//                           listEntries: [
1274//                                       new TemplateFieldListItem(name:'Dried'),
1275//                           new TemplateFieldListItem(name: 'Fresh'),
1276//                           new TemplateFieldListItem(name: 'Unknown')
1277//                               ]
1278//                      )
1279//              )
1280//              .with { if (!validate()) { errors.each { println it} } else save()}
1281//
1282//              // plant sampling event template
1283//              def plantSamplingEventTemplate = new Template(
1284//                      name: 'Plant-sample',
1285//                      description: 'plant sample ',
1286//                      entity: dbnp.studycapturing.SamplingEvent,
1287//                  sampleTemplates: [plantSampleTemplate]
1288//              )
1289//              //.addToFields(samplingProtocolField)
1290//              .addToFields(
1291//                      new TemplateField(
1292//                              name: 'material',
1293//                          comment: 'physical charecteristic. e.g, grounded powder of tomato seed or liquid',
1294//                              entity: SamplingEvent,
1295//                              type: TemplateFieldType.STRING
1296//                      )
1297//              )
1298//              .addToFields(
1299//                      new TemplateField(
1300//                              name: 'Description',
1301//                              type: TemplateFieldType.STRING,
1302//                              entity: SamplingEvent
1303//                      )
1304//              )
1305//              .addToFields(
1306//                      new TemplateField(
1307//                              name: 'extracted material',
1308//                              comment: 'substance to be extracted. e.g., lipids, volatiles, primary metabolites etc',
1309//                              type: TemplateFieldType.STRING,
1310//                              entity: SamplingEvent
1311//                      )
1312//              )
1313//              .addToFields(
1314//                      new TemplateField(
1315//                              name: 'Text on vial',
1316//                              entity: SamplingEvent,
1317//                              type: TemplateFieldType.STRING
1318//                      )
1319//              )
1320//              .with { if (!validate()) { errors.each { println it} } else save()}
1321//
1322//
1323//              // assay templates
1324//              def assayDescriptionField = new TemplateField(
1325//                              name: 'Description',
1326//                          comment: 'add general assay information here',
1327//                              entity: Assay,
1328//                              type: TemplateFieldType.STRING
1329//              );
1330//              assayDescriptionField.with { if (!validate()) { errors.each { println it} } else save()}
1331//
1332//              def ccAssayTemplate = new Template(
1333//                      name: 'Clinical chemistry assay',
1334//                      description: 'Clinical chemistry assay stored in a SAM module',
1335//                      entity: dbnp.studycapturing.Assay
1336//              )
1337//              .addToFields(assayDescriptionField)
1338//              .with { if (!validate()) { errors.each { println it} } else save()}
1339//
1340//              def metAssayTemplate = new Template(
1341//                      name: 'Metabolomics assay',
1342//                      description: 'Metabolomics assay stored in a metabolomics module',
1343//                      entity: dbnp.studycapturing.Assay
1344//              )
1345//              .addToFields(assayDescriptionField)
1346//              .addToFields(
1347//                      new TemplateField(
1348//                              name: 'Spectrometry technique',
1349//                          comment: 'Select the used metabolomics technique',
1350//                              entity: Assay,
1351//                              type: TemplateFieldType.STRINGLIST,
1352//                          listEntries: [
1353//                                      new TemplateFieldListItem(name: 'GC/MS'),
1354//                              new TemplateFieldListItem(name: 'LC/MS'),
1355//                              new TemplateFieldListItem(name: 'NMR'),
1356//                              new TemplateFieldListItem(name: 'HPLC')
1357//                          ])
1358//              )
1359//              .with { if (!validate()) { errors.each { println it} } else save(flush:true)}
1360//              metAssayTemplate.refresh()
1361//      }
1362//
1363//}
Note: See TracBrowser for help on using the repository browser.