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

Last change on this file since 1635 was 1635, checked in by work@…, 9 years ago
  • added checks to Grom calls if Grom is available so we can uninstall the plugin on packaging time... resolves issue #359
  • Property svn:keywords set to Rev Author Date
File size: 24.7 KB
Line 
1/**
2 * @Author kees
3 * @Since Jun 25, 2010
4 *
5 * Revision information:
6 * $Rev: 1635 $
7 * $Author: work@osx.eu $
8 * $Date: 2011-03-15 13:06:25 +0000 (di, 15 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                // Grom a development message
26                if (String.metaClass.getMetaMethod("grom")) "inserting initial ontologies".grom()
27
28                // If running in development or test mode, add ontologies manually to speed up development and allow running offline
29                if (grails.util.GrailsUtil.environment == GrailsApplication.ENV_DEVELOPMENT || grails.util.GrailsUtil.environment == GrailsApplication.ENV_TEST) {
30
31                        // add Species ontology which is used for a.o. the Subject domain field 'species'
32                        def speciesOntology = new Ontology(
33                                name: 'NCBI organismal classification',
34                                description: 'A taxonomic classification of living organisms and associated artifacts for their controlled description within the context of databases.',
35                                url: 'http://www.ncbi.nlm.nih.gov/Taxonomy/taxonomyhome.html/',
36                                versionNumber: '1.2',
37                                ncboId: '1132',
38                                ncboVersionedId: '38802'
39                        ).save(failOnError:true)
40
41                        // add Sample>material ontology
42                        def brendaOntology = new Ontology(
43                                name: 'BRENDA tissue / enzyme source',
44                                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.',
45                                url: 'http://www.brenda-enzymes.info',
46                                versionNumber: '1.3',
47                                ncboId: '1005',
48                                ncboVersionedId: '40643'
49                        ).save(failOnError:true)
50
51                        // add NCI ontology which is used in Mouse genotype template field
52                        def nciOntology = new Ontology(
53                                name: 'NCI Thesaurus',
54                                description: 'A vocabulary for clinical care, translational and basic research, and public information and administrative activities.',
55                                url: 'http://ncicb.nci.nih.gov/core/EVS',
56                                versionNumber: '10.03',
57                                ncboId: '1032',
58                                ncboVersionedId: '42838'
59                        ).save(failOnError:true)
60
61                        // add CHEBI ontology which is used for describing chemicals in e.g. events
62                        def chebiOntology = new Ontology(
63                                name: 'Chemical entities of biological interest',
64                                description: 'A structured classification of chemical compounds of biological relevance.',
65                                url: 'http://www.ebi.ac.uk/chebi',
66                                versionNumber: '1.73',
67                                ncboId: '1007',
68                                ncboVersionedId: '44746'
69                        ).save(failOnError:true, flush:true)
70
71                }
72                // otherwise, this may be a production demo instance, so initialize the ontologies dynamically from BioPortal
73                else {
74
75                        def speciesOntology = Ontology.getOrCreateOntologyByNcboId(1132)
76                        def brendaOntology = Ontology.getOrCreateOntologyByNcboId(1005)
77                        def nciOntology = Ontology.getOrCreateOntologyByNcboId(1032)
78                        def chebiOntology = Ontology.getOrCreateOntologyByNcboId(1007)
79                }
80        }
81
82
83        /**
84         * Add example templates, this function would normally be called on an empty database
85         */
86        public static void initTemplates() {
87                // Grom a development message
88                if (String.metaClass.getMetaMethod("grom")) "inserting initial templates".grom()
89
90                def genderField = new TemplateField(
91                        name: 'Gender',type: TemplateFieldType.STRINGLIST, entity: Subject,
92                        listEntries: [new TemplateFieldListItem(name:'Male'),new TemplateFieldListItem(name: 'Female'),new TemplateFieldListItem(name: 'Unknown')])
93                .save(failOnError:true)
94
95                def ageField = new TemplateField(
96                        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)')
97                .save(failOnError:true)
98
99                def genotypeField = new TemplateField(
100                        name: 'Genotype', type: TemplateFieldType.ONTOLOGYTERM,entity: Subject,
101                        comment: 'If present, indicate the genetic variance of the subject (e.g., mutagenized populations,knock-out/in,transgene etc)')
102        .save(failOnError:true)
103
104                def genotypeTypeField = new TemplateField(
105                        name: 'Genotype type',type: TemplateFieldType.STRINGLIST,entity: Subject,
106                        listEntries: [new TemplateFieldListItem(name:'wildtype'),
107                                new TemplateFieldListItem(name:'transgenic'),
108                                new TemplateFieldListItem(name:'knock-out'),
109                                new TemplateFieldListItem(name:'knock-in')],
110                        comment: 'If a genotype was specified, please indicate here the type of the genotype')
111        .save(failOnError:true)
112
113                def varietyField = new TemplateField(
114                        name: 'Variety', type: TemplateFieldType.STRING,entity: Subject,
115                        comment: 'taxonomic category consisting of members of a species that differ from others of the same species in minor but heritable characteristics')
116        .save(failOnError:true)
117
118                def ecotypeField = new TemplateField(
119                        name: 'Ecotype', type: TemplateFieldType.STRING,entity: Subject,
120                         comment: 'a type or subspecies of life that is especially well adapted to a certain environment'
121                ).save(failOnError:true)
122
123                // Nutritional study template
124                def studyTemplate = new Template(
125                        name: 'Academic study',
126                        entity: dbnp.studycapturing.Study
127                )
128                .addToFields(new TemplateField(name: 'Objectives',type: TemplateFieldType.TEXT,entity: Study,comment:'Fill out the aim or questions of the study'))
129                .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'))
130                .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)'))
131                .addToFields(new TemplateField(name: 'Lab id',type: TemplateFieldType.STRING,entity: Study,comment:'In which lab was the study performed; indicate the roomnumber.'))
132                .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?)'))
133                .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'))
134        .save(failOnError:true)
135
136                // Mouse template
137                def mouseTemplate = new Template(
138                        name: 'Mouse', entity: dbnp.studycapturing.Subject)
139                .addToFields(new TemplateField(
140                        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'"))
141                .addToFields(genotypeField)
142                .addToFields(genotypeTypeField)
143                .addToFields(genderField)
144                .addToFields(new TemplateField(
145                        name: 'Age', type: TemplateFieldType.LONG, entity: Subject, unit: 'weeks', comment: 'Age at start of study'))
146                .addToFields(new TemplateField(
147                        name: 'Age type',type: TemplateFieldType.STRINGLIST,entity: Subject,
148                        listEntries: [new TemplateFieldListItem(name:'postnatal'),new TemplateFieldListItem(name:'embryonal')]))
149                .addToFields(new TemplateField(
150                        name: 'Cage',type: TemplateFieldType.STRING,entity: Subject,comment:'Indicate the cage used for housing (type and/or size)'))
151                .addToFields(new TemplateField(
152                        name: '#Mice in cage',type: TemplateFieldType.LONG,entity: Subject,comment:'If known, indicate the number of mice per cage'))
153                .addToFields(new TemplateField(
154                        name: 'Litter size',type: TemplateFieldType.LONG,entity: Subject,comment:'If known, indicate the litter size of the litter from which the subject originates'))
155                .addToFields(new TemplateField(
156                        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'))
157        .save(failOnError:true)
158
159                // Human template
160                def humanTemplate = new Template(
161                        name: 'Human', entity: dbnp.studycapturing.Subject)
162                .addToFields(genderField)
163                .addToFields(ageField)
164                .addToFields(new TemplateField(
165                        name: 'DOB',type: TemplateFieldType.DATE,entity: Subject,comment:'Date of birth'))
166                .addToFields(new TemplateField(
167                        name: 'Height',type: TemplateFieldType.DOUBLE, entity: Subject, unit: 'm'))
168                .addToFields(new TemplateField(
169                        name: 'Weight',type: TemplateFieldType.DOUBLE, entity: Subject, unit: 'kg'))
170                .addToFields(new TemplateField(
171                        name: 'BMI',type: TemplateFieldType.DOUBLE, entity: Subject, unit: 'kg/m2',comment:'Body-mass-index'))
172                .addToFields(new TemplateField(
173                        name: 'Race',type: TemplateFieldType.STRING,entity: Subject, comment:'If known and of interest the ethnic group can be indicated'))
174                .addToFields(new TemplateField(
175                        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.'))
176                .addToFields(new TemplateField(
177                        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.'))
178                .addToFields(new TemplateField(
179                        name: 'Systolic 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: 'Diastolic blood pressure',type: TemplateFieldType.DOUBLE, unit: 'mmHg',entity: Subject, comment:'Indicate the levels at the start of the study in mmHG'))
182                .addToFields(new TemplateField(
183                        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'))
184                .addToFields(new TemplateField(
185                        name: 'Run-in-food',type: TemplateFieldType.TEXT,entity: Subject, comment:'If defined, give a short description of the food used before the measurements'))
186                .save(failOnError:true)
187
188                def sampleRemarksField = new TemplateField(
189                        name: 'Remarks',
190                        type: TemplateFieldType.TEXT,
191                    entity: Sample
192                ).save(failOnError:true)
193
194                def sampleVialTextField = new TemplateField(
195                        name: 'Text on vial',
196                        type: TemplateFieldType.STRING,
197                    entity: Sample
198                ).save(failOnError:true)
199
200                // Human tissue sample template
201                def humanSampleTemplate = new Template(
202                        name: 'Human tissue sample',
203                        entity: dbnp.studycapturing.Sample
204                )
205                .addToFields(sampleRemarksField)
206                .addToFields(sampleVialTextField)
207                .addToFields(
208                        new TemplateField(
209                            name: 'Sample measured weight',
210                            unit: 'mg',
211                            type: TemplateFieldType.DOUBLE,
212                        entity: Sample
213                        )
214        ).save(failOnError:true)
215
216                // Human blood sample template
217                def humanBloodSampleTemplate = new Template(
218                    name: 'Human blood sample',
219                        entity: dbnp.studycapturing.Sample
220                )
221                .addToFields(sampleRemarksField)
222                .addToFields(sampleVialTextField)
223                .addToFields(
224                        new TemplateField(
225                            name: 'Sample measured volume',
226                            unit: 'ml',
227                            type: TemplateFieldType.DOUBLE,
228                                entity: Sample
229                        )
230        ).save(failOnError:true)
231
232
233                /*
234                 * Add NMC - DCL Sample Mapping Template
235                 * by Michael van Vliet
236                 *
237                 * For the Pilot running in Leiden (NOV2010)
238                 */
239                def sampleDCLTextField = new TemplateField(
240                        name: 'DCL Sample Reference',
241                        type: TemplateFieldType.STRING,
242                        entity: Sample
243        ).save(failOnError:true)
244
245                // Human tissue sample template
246                def dclSampleTemplate = new Template(
247                        name: 'DCL Sample information',
248                        entity: dbnp.studycapturing.Sample
249                )
250                .addToFields(sampleDCLTextField)
251        .save(failOnError:true)
252                // EO DCL Sample Mapping Template**********************************
253
254
255                /*
256                def GrowthTreatmentTemplate = new Template(
257                        name: 'Growth treatment',
258                        entity: dbnp.studycapturing.Event
259                )
260                .addToFields(sampleDescriptionField)
261                .addToFields(new TemplateField(name: 'position X',type: TemplateFieldType.STRING))
262                .addToFields(new TemplateField(name: 'position Y',type: TemplateFieldType.STRING))
263                .addToFields(new TemplateField(name: 'Block',type: TemplateFieldType.STRING))
264                .addToFields(new TemplateField(name: 'Temparature Day',type: TemplateFieldType.STRING))
265                .addToFields(new TemplateField(name: 'Temparature Night',type: TemplateFieldType.STRING))
266                .addToFields(new TemplateField(name: 'Light Intensity',type: TemplateFieldType.STRING))
267                .addToFields(new TemplateField(name: 'Harvest Delay',type: TemplateFieldType.STRING))
268                .save(failOnError:true)
269                 */
270
271                //Plant template
272                def greenHouseTemplate = new Template(
273                        name: 'Plant-green house ',
274                        entity: dbnp.studycapturing.Subject
275                )
276                .addToFields(varietyField)
277                .addToFields(ecotypeField)
278                .addToFields(genotypeField)
279                /*
280                .addToFields(genotypeTypeField)
281                .addToFields(
282                        new TemplateField(
283                                name: 'Growth location', type: TemplateFieldType.STRINGLIST,
284                                listEntries: [
285                                        new TemplateFieldListItem(name:'Greenhouse'),
286                                        new TemplateFieldListItem(name: 'Field')
287                                ]
288                        )
289                )
290                .addToFields(
291                        new TemplateField(
292                                name: 'Room', type: TemplateFieldType.STRING,
293                                comment: 'Chamber number in case of Greenhouse'
294                        )
295                )
296                */
297                .addToFields(
298                        new TemplateField(
299                                name: 'Chamber no.',
300                                type: TemplateFieldType.STRING,
301                                entity: Subject,
302                                comment: 'Chamber number in the Greenhouse'
303                        )
304                )
305                .addToFields(
306                        new TemplateField(
307                                name: 'Growth type',
308                                entity: Subject,
309                                type: TemplateFieldType.STRINGLIST,
310                                listEntries: [
311                                        new TemplateFieldListItem(name:'Standard'),
312                                new TemplateFieldListItem(name: 'Experimental'),
313                                new TemplateFieldListItem(name: 'Unknown')
314                                ]
315                        )
316                )
317                .addToFields(new TemplateField(
318                        name: 'Growth protocol', entity: Subject, type: TemplateFieldType.TEXT))
319                .addToFields(new TemplateField(
320                        name: 'Position X', entity: Subject, type: TemplateFieldType.DOUBLE))
321                .addToFields(new TemplateField(
322                        name: 'Position Y', entity: Subject, type: TemplateFieldType.DOUBLE))
323                .addToFields(new TemplateField(
324                        name: 'Block', entity: Subject, type: TemplateFieldType.STRING))
325                .addToFields(new TemplateField(
326                        name: 'Temperature at day', entity: Subject, type: TemplateFieldType.DOUBLE))
327                .addToFields(new TemplateField(
328                        name: 'Temperature at night', entity: Subject, type: TemplateFieldType.DOUBLE))
329                .addToFields(new TemplateField(
330                        name: 'Photo period', entity: Subject, type: TemplateFieldType.STRING))
331                .addToFields(new TemplateField(
332                        name: 'Light intensity', entity: Subject, type: TemplateFieldType.STRING))
333                .addToFields(new TemplateField(
334                        name: 'Start date', entity: Subject, type: TemplateFieldType.DATE))
335                .addToFields(new TemplateField(
336                        name: 'Harvest date', entity: Subject, type: TemplateFieldType.DATE))
337                .addToFields(new TemplateField(
338                        name: 'Harvest delay', entity: Subject, type: TemplateFieldType.TEXT))
339                .addToFields(new TemplateField(
340                        name: 'Additional info', entity: Subject, type: TemplateFieldType.TEXT))
341        .save(failOnError:true)
342
343                def FieldTemplate = new Template(
344                        name: 'Plant-open field',
345                        entity: dbnp.studycapturing.Subject
346                )
347                .addToFields(varietyField)
348                .addToFields(ecotypeField)
349                .addToFields(genotypeField)
350                .addToFields(new TemplateField(
351                        name: 'Start date', entity: Subject, type: TemplateFieldType.DATE))
352                .addToFields(new TemplateField(
353                        name: 'Harvest date', entity: Subject, type: TemplateFieldType.DATE))
354                .addToFields(new TemplateField(
355                        name: 'Growth type', entity: Subject, type: TemplateFieldType.STRINGLIST,
356                        listEntries: [new TemplateFieldListItem(name:'Standard'),new TemplateFieldListItem(name: 'Experimental')]))
357                .addToFields(new TemplateField(
358                        name: 'Growth protocol', entity: Subject, type: TemplateFieldType.TEXT))
359                .addToFields(new TemplateField(
360                        name: 'Harvest delay', entity: Subject, type: TemplateFieldType.TEXT))
361        .save(failOnError:true)
362
363                //Plant template
364                def chamberTemplate = new Template(
365                        name: 'Plant-chamber',
366                        entity: dbnp.studycapturing.Subject
367                )
368                .addToFields(varietyField)
369                .addToFields(ecotypeField)
370                .addToFields(genotypeField)
371                /*
372                .addToFields(genotypeTypeField)
373                .addToFields(
374                        new TemplateField(
375                                name: 'Growth location',
376                                type: TemplateFieldType.STRINGLIST,
377                                listEntries: [
378                                        new TemplateFieldListItem(name:'Greenhouse'),
379                                        new TemplateFieldListItem(name: 'Field')
380                                ]
381                        )
382                )
383                */
384                .addToFields(new TemplateField(
385                        name: 'Room', type: TemplateFieldType.STRING, entity: Subject,
386                        comment: 'room number'))
387                .addToFields(new TemplateField(
388                        name: 'Chamber no.', type: TemplateFieldType.STRING, entity: Subject,
389                        comment: 'Chamber number'))
390                .addToFields(new TemplateField(
391                        name: 'Block', type: TemplateFieldType.STRING, entity: Subject))
392                .addToFields(new TemplateField(
393                        name: 'Position X', type: TemplateFieldType.DOUBLE, entity: Subject))
394                .addToFields(new TemplateField(
395                        name: 'Position Y', type: TemplateFieldType.DOUBLE, entity: Subject))
396                .addToFields(new TemplateField(
397                        name: 'Temperature at day', type: TemplateFieldType.DOUBLE, entity: Subject))
398                .addToFields(new TemplateField(
399                        name: 'Temperature at night', type: TemplateFieldType.DOUBLE, entity: Subject))
400                .addToFields(new TemplateField(
401                        name: 'Photo period', type: TemplateFieldType.STRING, entity: Subject))
402                .addToFields(new TemplateField(
403                        name: 'Light intensity', type: TemplateFieldType.STRING, entity: Subject))
404                .addToFields(new TemplateField(
405                        name: 'Start date', type: TemplateFieldType.DATE, entity: Subject))
406                .addToFields(new TemplateField(
407                        name: 'Harvest date', type: TemplateFieldType.DATE, entity: Subject))
408                .addToFields(new TemplateField(
409                        name: 'Growth type', type: TemplateFieldType.STRINGLIST, entity: Subject,
410                        listEntries: [new TemplateFieldListItem(name:'Standard'),new TemplateFieldListItem(name: 'Experimental')]))
411                .addToFields(new TemplateField(
412                        name: 'Growth protocol', type: TemplateFieldType.TEXT, entity: Subject))
413                .addToFields(new TemplateField(
414                        name: 'Harvest delay', type: TemplateFieldType.TEXT, entity: Subject))
415                .save(failOnError:true)
416
417                def plantSampleTemplate = new Template(
418                        name: 'Plant sample',
419                        entity: dbnp.studycapturing.Sample
420                )
421                .addToFields(sampleRemarksField)
422                .addToFields(sampleVialTextField)
423        .save(failOnError:true)
424
425                def materialPrepTemplate = new Template(
426                        name: 'Plant-material preparation',
427                    description: 'material preparation',
428                    entity: dbnp.studycapturing.Event
429                )
430                .addToFields(new TemplateField(
431                         name: 'Tissue',
432                        type: TemplateFieldType.STRING,
433                        entity: Event,
434                    comment: 'organ/ fraction of culture/ plant part')
435                )
436                .addToFields(
437                        new TemplateField(
438                                 name: 'Grinding',
439                                type: TemplateFieldType.STRINGLIST,
440                                entity: Event,
441                            listEntries: [
442                                        new TemplateFieldListItem(name:'yes'),
443                                new TemplateFieldListItem(name: 'no'),
444                                new TemplateFieldListItem(name: 'unknown')
445                                ]
446                        )
447                )
448                .addToFields(
449                        new TemplateField(
450                                name: 'Storage location',
451                                type: TemplateFieldType.STRING,
452                                entity: Event
453                        )
454                )
455                .addToFields(
456                        new TemplateField(
457                                name: 'protocol reference',
458                                type: TemplateFieldType.STRING,
459                                entity: Event
460                        )
461                ).save(failOnError:true)
462
463                def protocolField = new TemplateField(
464                        name: 'Protocol',
465                        type: TemplateFieldType.FILE,
466                        entity: Event,
467                        comment: 'You can upload a protocol here which describes the procedure which was used when carrying out the event'
468                ).save(failOnError:true)
469
470
471                // diet treatment template
472                def dietTreatmentTemplate = new Template(
473                        name: 'Diet treatment',
474                        entity: dbnp.studycapturing.Event
475                )
476                .addToFields(
477                        new TemplateField(
478                                name: 'Diet',
479                                type: TemplateFieldType.STRINGLIST,
480                                entity: Event,
481                                listEntries: [
482                                        new TemplateFieldListItem(name:'low fat'),
483                                        new TemplateFieldListItem(name: 'high fat')
484                                ]
485                        )
486                )
487                .addToFields(protocolField)
488        .save(failOnError:true)
489
490                // boost treatment template
491                def boostTreatmentTemplate = new Template(
492                        name: 'Compound challenge',
493                        entity: dbnp.studycapturing.Event
494                )
495                .addToFields(
496                        new TemplateField(
497                                name: 'Compound',
498                                type: TemplateFieldType.ONTOLOGYTERM,
499                                entity: Event,
500                                ontologies: [Ontology.getOrCreateOntologyByNcboId(1007)]
501                        )
502                )
503                .addToFields(
504                        new TemplateField(
505                                name: 'Control',
506                                type: TemplateFieldType.BOOLEAN,
507                                entity: Event
508                        )
509                )
510                .addToFields(protocolField)
511        .save(failOnError:true)
512
513                // fasting treatment template
514                def fastingTreatment = new Template(
515                        name: 'Fasting treatment',
516                        description: 'Fasting for a specific amount of time',
517                        entity: dbnp.studycapturing.Event
518                )
519                .addToFields(
520                        new TemplateField(
521                                name: 'Fasting period',
522                                type: TemplateFieldType.RELTIME,
523                                entity: Event
524                        )
525                ).save(failOnError:true)
526
527                // SamplingEvent templates
528                def samplingProtocolField = new TemplateField(
529                        name: 'Sample Protocol',
530                        entity: SamplingEvent,
531                        type: TemplateFieldType.FILE,
532                        comment: 'You can upload a protocol here which describes the procedure which was used when carrying out the sampling event'
533                ).save(failOnError:true)
534
535                // liver sampling event template
536                def liverSamplingEventTemplate = new Template(
537                        name: 'Liver extraction',
538                        description: 'Liver sampling for transcriptomics arrays',
539                        entity: dbnp.studycapturing.SamplingEvent
540                )
541                .addToFields(samplingProtocolField)
542                .addToFields(
543                        new TemplateField(
544                                name: 'Sample weight',
545                                unit: 'mg',
546                                entity: SamplingEvent,
547                                type: TemplateFieldType.DOUBLE
548                        )
549                ).save(failOnError:true)
550
551                // blood sampling
552                def bloodSamplingEventTemplate = new Template(
553                        name: 'Blood extraction',
554                        description: 'Blood extraction targeted at lipid assays',
555                        entity: dbnp.studycapturing.SamplingEvent
556                )
557                .addToFields(samplingProtocolField)
558                .addToFields(
559                        new TemplateField(
560                                name: 'Sample volume',
561                                entity: SamplingEvent,
562                                unit: 'ml',
563                                type: TemplateFieldType.DOUBLE
564                        )
565                ).save(failOnError:true)
566
567                // plant sample extraction event template
568                def plantSamplingExtractEventTemplate = new Template(
569                        name: 'Plant sample extraction',
570                        description: 'sample extraction',
571                        entity: dbnp.studycapturing.SamplingEvent,
572                    sampleTemplates: [plantSampleTemplate]
573                )
574                .addToFields(samplingProtocolField)
575                .addToFields(
576                        new TemplateField(
577                                name: 'Sample weight',
578                                unit: 'ul',
579                                entity: SamplingEvent,
580                                type: TemplateFieldType.DOUBLE
581                        )
582                )
583                .addToFields(
584                        new TemplateField(
585                                name: 'Sample when measured',
586                                type: TemplateFieldType.STRINGLIST,
587                                entity: SamplingEvent,
588                             listEntries: [
589                                         new TemplateFieldListItem(name:'Dried'),
590                             new TemplateFieldListItem(name: 'Fresh'),
591                             new TemplateFieldListItem(name: 'Unknown')
592                                 ]
593                        )
594                ).save(failOnError:true)
595
596                // plant sampling event template
597                def plantSamplingEventTemplate = new Template(
598                        name: 'Plant-sample',
599                        description: 'plant sample ',
600                        entity: dbnp.studycapturing.SamplingEvent,
601                    sampleTemplates: [plantSampleTemplate]
602                )
603                //.addToFields(samplingProtocolField)
604                .addToFields(
605                        new TemplateField(
606                                name: 'material',
607                            comment: 'physical charecteristic. e.g, grounded powder of tomato seed or liquid',
608                                entity: SamplingEvent,
609                                type: TemplateFieldType.STRING
610                        )
611                )
612                .addToFields(
613                        new TemplateField(
614                                name: 'Description',
615                                type: TemplateFieldType.STRING,
616                                entity: SamplingEvent
617                        )
618                )
619                .addToFields(
620                        new TemplateField(
621                                name: 'extracted material',
622                                comment: 'substance to be extracted. e.g., lipids, volatiles, primary metabolites etc',
623                                type: TemplateFieldType.STRING,
624                                entity: SamplingEvent
625                        )
626                )
627                .addToFields(
628                        new TemplateField(
629                                name: 'Text on vial',
630                                entity: SamplingEvent,
631                                type: TemplateFieldType.STRING
632                        )
633                ).save(failOnError:true)
634
635
636                // assay templates
637                def assayDescriptionField = new TemplateField(
638                                name: 'Description',
639                            comment: 'add general assay information here',
640                                entity: Assay,
641                                type: TemplateFieldType.STRING
642                ).save(failOnError:true)
643
644                def ccAssayTemplate = new Template(
645                        name: 'Clinical chemistry assay',
646                        description: 'Clinical chemistry assay stored in a SAM module',
647                        entity: dbnp.studycapturing.Assay
648                )
649                .addToFields(assayDescriptionField)
650                .save(failOnError:true)
651
652                def metAssayTemplate = new Template(
653                        name: 'Metabolomics assay',
654                        description: 'Metabolomics assay stored in a metabolomics module',
655                        entity: dbnp.studycapturing.Assay
656                )
657                .addToFields(assayDescriptionField)
658                .addToFields(
659                        new TemplateField(
660                                name: 'Spectrometry technique',
661                            comment: 'Select the used metabolomics technique',
662                                entity: Assay,
663                                type: TemplateFieldType.STRINGLIST,
664                            listEntries: [
665                                        new TemplateFieldListItem(name: 'GC/MS'),
666                                new TemplateFieldListItem(name: 'LC/MS'),
667                                new TemplateFieldListItem(name: 'NMR'),
668                                new TemplateFieldListItem(name: 'HPLC')
669                            ])
670                ).save(failOnError:true, flush:true)
671        }
672
673}
Note: See TracBrowser for help on using the repository browser.