diff --git a/.gitignore b/.gitignore
index 57a123473780458b523e29b006d60602a8e201f0..d464d83fb2a4e3d75adefc48d5743617fde71506 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,5 @@ node_modules/
 config.js
 logs/
 *.swp
+nohup.out
+package-lock.json
diff --git a/routes/agent.js b/routes/agent.js
index 54fb809b1d5f687af0ead2076435b150e448be16..c3a8f3eda9104661c7a541282d643cb03fc0c11c 100644
--- a/routes/agent.js
+++ b/routes/agent.js
@@ -61,292 +61,10 @@ var routes =  {
 };
 
 
-var config = {
-    global: {
-        fromBody: false,
-        param: "type"
-    },
-    filters: {},
-    collect_types: {
-        "course_treatment": {
-            "courses":{
-                required: true,
-                isArray: true,
-                filters: [],
-                inner:{
-                    "CourseSer" : {
-                                required: true,
-                                isArray: false,
-                                filters: []
-                            },
-                    "PatientSer" : {
-                                required: true,
-                                isArray: false,
-                                filters: []
-                            },
-                    "CourseId" : {
-                                required: true,
-                                isArray: false,
-                                filters: []
-                            },
-                    "StartDateTime" : {
-                                required: true,
-                                isArray: false,
-                                filters: []
-                            },
-                    "ClinicalStatus" : {
-                                required: true,
-                                isArray: false,
-                                filters: []
-                            },
-                    "CompletedByUserName" : {
-                                required: true,
-                                isArray: false,
-                                filters: []
-                            },
-                    "CompletedDateTime" : {
-                                required: true,
-                                isArray: false,
-                                filters: []
-                            },
-                    "Comment" : {
-                                required: true,
-                                isArray: false,
-                                filters: []
-                            },
-                    "ClinicalProtocolDir" : {
-                                required: true,
-                                isArray: false,
-                                filters: []
-                            },
-                    "HstryUserName" : {
-                                required: true,
-                                isArray: false,
-                                filters: []
-                            },
-                    "HstryTimeStamp" : {
-                                required: true,
-                                isArray: false,
-                                filters: []
-                            },
-                    "HstryDateTime" : {
-                                required: true,
-                                isArray: false,
-                                filters: []
-                            },
-                    "TransactionId" : {
-                                required: true,
-                                isArray: false,
-                                filters: []
-                            },
-                    "HstryTaskName" : {
-                                required: true,
-                                isArray: false,
-                                filters: []
-                            },
-                    "sessions":{
-                        required: false,
-                        isArray: true,
-                        filters: [],
-                        inner:{
-                            "sessionSer": {
-                                required: true,
-                                isArray: false,
-                                filters: []
-                            },
-                            "SessionNum":  {
-                                required: true,
-                                isArray: false,
-                                filters: []
-                            },
-                            "Comment":  {
-                                required: true,
-                                isArray: false,
-                                filters: []
-                            },
-                            "HstryUserName":  {
-                                required: true,
-                                isArray: false,
-                                filters: []
-                            },
-                            "HstryTimeStamp":  {
-                                required: true,
-                                isArray: false,
-                                filters: []
-                            },
-                            "HstryDateTime":  {
-                                required: true,
-                                isArray: false,
-                                filters: []
-                            },
-                            "HstryTaskName":  {
-                                required: true,
-                                isArray: false,
-                                filters: []
-                            },
-                            "CourseSer":  {
-                                required: true,
-                                isArray: false,
-                                filters: []
-                            },
-                            "SessionProcedurePart":{//FIXME: Is it required?
-                                required: true,
-                                isArray: false,
-                                filters: [],
-                                inner:{
-                                    "RadiationSer" :  {
-                                        required: true,
-                                        isArray: false,
-                                        filters: []
-                                    },
-                                    "ImageType" :  {
-                                        required: true,
-                                        isArray: false,
-                                        filters: []
-                                    },
-                                    "SequenceNumber" :  {
-                                        required: true,
-                                        isArray: false,
-                                        filters: []
-                                    },
-                                    "SessionProcedurePartSer" :  {
-                                        required: true,
-                                        isArray: false,
-                                        filters: []
-                                    },
-                                    "AcqAdjustment" :  {
-                                        required: true,
-                                        isArray: false,
-                                        filters: []
-                                    },
-                                    "AutoSave" :  {
-                                        required: true,
-                                        isArray: false,
-                                        filters: []
-                                    },
-                                    "DoseAccumulation" :  {
-                                        required: true,
-                                        isArray: false,
-                                        filters: []
-                                    },
-                                    "Continuous" :  {
-                                        required: true,
-                                        isArray: false,
-                                        filters: []
-                                    },
-                                    "BeamOff" :  {
-                                        required: true,
-                                        isArray: false,
-                                        filters: []
-                                    },
-                                    "DeviationImage" :  {
-                                        required: true,
-                                        isArray: false,
-                                        filters: []
-                                    },
-                                    "DevEnergy" :  {
-                                        required: true,
-                                        isArray: false,
-                                        filters: []
-                                    },
-                                    "DevDoseRate" :  {
-                                        required: true,
-                                        isArray: false,
-                                        filters: []
-                                    },
-                                    "DevGeometry" :  {
-                                        required: true,
-                                        isArray: false,
-                                        filters: []
-                                    },
-                                    "JawState" :  {
-                                        required: true,
-                                        isArray: false,
-                                        filters: []
-                                    },
-                                    "DevCollX1" :  {
-                                        required: true,
-                                        isArray: false,
-                                        filters: []
-                                    },
-                                    "DevCollX2" :  {
-                                        required: true,
-                                        isArray: false,
-                                        filters: []
-                                    },
-                                    "DevCollY1" :  {
-                                        required: true,
-                                        isArray: false,
-                                        filters: []
-                                    },
-                                    "DevCollY2" :  {
-                                        required: true,
-                                        isArray: false,
-                                        filters: []
-                                    },
-                                    "MUSubtraction" :  {
-                                        required: true,
-                                        isArray: false,
-                                        filters: []
-                                    },
-                                    "AcquisitionMode" :  {
-                                        required: true,
-                                        isArray: false,
-                                        filters: []
-                                    },
-                                    "HstryUserName" :  {
-                                        required: true,
-                                        isArray: false,
-                                        filters: []
-                                    },
-                                    "HstryTimeStamp" :  {
-                                        required: true,
-                                        isArray: false,
-                                        filters: []
-                                    },
-                                    "HstryDateTime" :  {
-                                        required: true,
-                                        isArray: false,
-                                        filters: []
-                                    },
-                                    "HstryTaskName" :  {
-                                        required: true,
-                                        isArray: false,
-                                        filters: []
-                                    },
-                                    "SessionProcedureSer" :  {
-                                        required: true,
-                                        isArray: false,
-                                        filters: []
-                                    },
-                                    "ImageModality" :  {
-                                        required: true,
-                                        isArray: false,
-                                        filters: []
-                                    },
-                                    "RTPlanSer" :  {
-                                        required: true,
-                                        isArray: false,
-                                        filters: []
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }
-
-    }
-};
-
-
-
 
 module.exports = function(agentVersion) {
     
     return {
-        config_validation : config, 
         collect: function(req, res) {
             var route = routes[req.params.type];
             if(!route) {
diff --git a/server.js b/server.js
index f235db64f70f2198d0ab64b775ab5aa3c7e44fdf..124971819570c6a88401221f8b4d714ab59b7694 100644
--- a/server.js
+++ b/server.js
@@ -152,6 +152,8 @@ else {
     var ping = require('./routes/ping.js');
     var agent = require('./routes/agent.js')(config.agentVersion);
 
+    //Data validation
+    var ct_validator = require('./validation/course_treatment.js');
 
     //
     // Setup express app
@@ -185,7 +187,7 @@ else {
     app.get('/api/ping', ping.get);
 
 
-    var collect_mw  = collect(agent.config_validation);
+    var collect_mw  = collect(ct_validator());
     app.post('/api/agent/collect/:type(course_treatment)', collect_mw, function(req, res) {return res.status(200).json({value:"ok"});});
     app.get('/api/agent/version', agent.version);
 
diff --git a/validation/course_treatment.js b/validation/course_treatment.js
new file mode 100644
index 0000000000000000000000000000000000000000..2ede82da8c12677c068fe63156cc145888a6e526
--- /dev/null
+++ b/validation/course_treatment.js
@@ -0,0 +1,309 @@
+/*
+ * Copyright (C) 2012-2017 Centro de Computacao Cientifica e Software Livre
+ * Departamento de Informatica - Universidade Federal do Parana - C3SL/UFPR
+ *
+ * This file is part of simmc
+ *
+ * simmc is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+ * USA.
+ */
+
+
+var config = {
+    global: {
+        fromBody: false,
+        param: "type"
+    },
+    filters: {},
+    collect_types: {
+        "course_treatment": {
+            "courses":{
+                required: true,
+                isArray: true,
+                filters: [],
+                inner:{
+                    "CourseSer" : {
+                                required: true,
+                                isArray: false,
+                                filters: []
+                            },
+                    "PatientSer" : {
+                                required: true,
+                                isArray: false,
+                                filters: []
+                            },
+                    "CourseId" : {
+                                required: true,
+                                isArray: false,
+                                filters: []
+                            },
+                    "StartDateTime" : {
+                                required: true,
+                                isArray: false,
+                                filters: []
+                            },
+                    "ClinicalStatus" : {
+                                required: true,
+                                isArray: false,
+                                filters: []
+                            },
+                    "CompletedByUserName" : {
+                                required: true,
+                                isArray: false,
+                                filters: []
+                            },
+                    "CompletedDateTime" : {
+                                required: true,
+                                isArray: false,
+                                filters: []
+                            },
+                    "Comment" : {
+                                required: true,
+                                isArray: false,
+                                filters: []
+                            },
+                    "ClinicalProtocolDir" : {
+                                required: true,
+                                isArray: false,
+                                filters: []
+                            },
+                    "HstryUserName" : {
+                                required: true,
+                                isArray: false,
+                                filters: []
+                            },
+                    "HstryTimeStamp" : {
+                                required: true,
+                                isArray: false,
+                                filters: []
+                            },
+                    "HstryDateTime" : {
+                                required: true,
+                                isArray: false,
+                                filters: []
+                            },
+                    "TransactionId" : {
+                                required: true,
+                                isArray: false,
+                                filters: []
+                            },
+                    "HstryTaskName" : {
+                                required: true,
+                                isArray: false,
+                                filters: []
+                            },
+                    "sessions":{
+                        required: false,
+                        isArray: true,
+                        filters: [],
+                        inner:{
+                            "sessionSer": {
+                                required: true,
+                                isArray: false,
+                                filters: []
+                            },
+                            "SessionNum":  {
+                                required: true,
+                                isArray: false,
+                                filters: []
+                            },
+                            "Comment":  {
+                                required: true,
+                                isArray: false,
+                                filters: []
+                            },
+                            "HstryUserName":  {
+                                required: true,
+                                isArray: false,
+                                filters: []
+                            },
+                            "HstryTimeStamp":  {
+                                required: true,
+                                isArray: false,
+                                filters: []
+                            },
+                            "HstryDateTime":  {
+                                required: true,
+                                isArray: false,
+                                filters: []
+                            },
+                            "HstryTaskName":  {
+                                required: true,
+                                isArray: false,
+                                filters: []
+                            },
+                            "CourseSer":  {
+                                required: true,
+                                isArray: false,
+                                filters: []
+                            },
+                            "SessionProcedurePart":{//FIXME: Is it required?
+                                required: true,
+                                isArray: false,
+                                filters: [],
+                                inner:{
+                                    "RadiationSer" :  {
+                                        required: true,
+                                        isArray: false,
+                                        filters: []
+                                    },
+                                    "ImageType" :  {
+                                        required: true,
+                                        isArray: false,
+                                        filters: []
+                                    },
+                                    "SequenceNumber" :  {
+                                        required: true,
+                                        isArray: false,
+                                        filters: []
+                                    },
+                                    "SessionProcedurePartSer" :  {
+                                        required: true,
+                                        isArray: false,
+                                        filters: []
+                                    },
+                                    "AcqAdjustment" :  {
+                                        required: true,
+                                        isArray: false,
+                                        filters: []
+                                    },
+                                    "AutoSave" :  {
+                                        required: true,
+                                        isArray: false,
+                                        filters: []
+                                    },
+                                    "DoseAccumulation" :  {
+                                        required: true,
+                                        isArray: false,
+                                        filters: []
+                                    },
+                                    "Continuous" :  {
+                                        required: true,
+                                        isArray: false,
+                                        filters: []
+                                    },
+                                    "BeamOff" :  {
+                                        required: true,
+                                        isArray: false,
+                                        filters: []
+                                    },
+                                    "DeviationImage" :  {
+                                        required: true,
+                                        isArray: false,
+                                        filters: []
+                                    },
+                                    "DevEnergy" :  {
+                                        required: true,
+                                        isArray: false,
+                                        filters: []
+                                    },
+                                    "DevDoseRate" :  {
+                                        required: true,
+                                        isArray: false,
+                                        filters: []
+                                    },
+                                    "DevGeometry" :  {
+                                        required: true,
+                                        isArray: false,
+                                        filters: []
+                                    },
+                                    "JawState" :  {
+                                        required: true,
+                                        isArray: false,
+                                        filters: []
+                                    },
+                                    "DevCollX1" :  {
+                                        required: true,
+                                        isArray: false,
+                                        filters: []
+                                    },
+                                    "DevCollX2" :  {
+                                        required: true,
+                                        isArray: false,
+                                        filters: []
+                                    },
+                                    "DevCollY1" :  {
+                                        required: true,
+                                        isArray: false,
+                                        filters: []
+                                    },
+                                    "DevCollY2" :  {
+                                        required: true,
+                                        isArray: false,
+                                        filters: []
+                                    },
+                                    "MUSubtraction" :  {
+                                        required: true,
+                                        isArray: false,
+                                        filters: []
+                                    },
+                                    "AcquisitionMode" :  {
+                                        required: true,
+                                        isArray: false,
+                                        filters: []
+                                    },
+                                    "HstryUserName" :  {
+                                        required: true,
+                                        isArray: false,
+                                        filters: []
+                                    },
+                                    "HstryTimeStamp" :  {
+                                        required: true,
+                                        isArray: false,
+                                        filters: []
+                                    },
+                                    "HstryDateTime" :  {
+                                        required: true,
+                                        isArray: false,
+                                        filters: []
+                                    },
+                                    "HstryTaskName" :  {
+                                        required: true,
+                                        isArray: false,
+                                        filters: []
+                                    },
+                                    "SessionProcedureSer" :  {
+                                        required: true,
+                                        isArray: false,
+                                        filters: []
+                                    },
+                                    "ImageModality" :  {
+                                        required: true,
+                                        isArray: false,
+                                        filters: []
+                                    },
+                                    "RTPlanSer" :  {
+                                        required: true,
+                                        isArray: false,
+                                        filters: []
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+
+    }
+};
+
+
+
+
+module.exports = function() {
+    
+    return config;
+};