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

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

Added two flushes so that gscf starts correctly on an empty PostgresQL database

  • Property svn:keywords set to Rev Author Date
File size: 24.5 KB
Line 
1/**
2 * @Author kees
3 * @Since Jun 25, 2010
4 *
5 * Revision information:
6 * $Rev: 1604 $
7 * $Author: s.h.sikkema@gmail.com $
8 * $Date: 2011-03-08 17:01:16 +0000 (di, 08 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, flush: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, flush:true)
669        }
670
671}
Note: See TracBrowser for help on using the repository browser.