Skip to content

Instantly share code, notes, and snippets.

@cronopio
Created April 5, 2011 22:32
Show Gist options
  • Save cronopio/904718 to your computer and use it in GitHub Desktop.
Save cronopio/904718 to your computer and use it in GitHub Desktop.
Script de migracion mas cercanos a quedar en tools para la migracion

##Orden de Ejecucion de scripts

Despues de tener volcada la base de datos de MySQL en archivos CSV uno por cada tabla, con los parametros adecuados y dentro de un directorio que debera ser por el momento probando-csv (en importar.sh:3 puede cambiarlo). Se corren los siguientes scripts.

  • importar.sh Usa mongoimport para restaurar los CSV en una database de mongoDB. La variable d indica el nombre del directorio.
  • completo.js Transforma los datos al nuevo modelo y los sanea.
  • quitarNull.js Elimina todos los NULLs de los valores de referencia
  • agregarCeros.js Agrega los ceros a la izquierda que tanto les gusta en el IRA
  • correccionesFinales.js Hacer la nueva version igualita a la vieja. :-(
db.pruebas.find().forEach(function(prueba){
var ret = String(prueba.cod_prueba);
if (prueba.cod_prueba < 10){
prueba.cod_prueba = '000'+ret;
} else
if (prueba.cod_prueba < 100){
prueba.cod_prueba = '00'+ret;
} else
if (prueba.cod_prueba < 1000){
prueba.cod_prueba = '0'+ret;
} else
if (prueba.cod_prueba > 999){
prueba.cod_prueba = ret.toString();
}
db.pruebas.save(prueba);
});
// Funcion copiada vilmente desde http://phpjs.org/functions/get_html_translation_table:416
function get_html_translation_table (table, quote_style) {
// http://kevin.vanzonneveld.net
// + original by: Philip Peterson
// + revised by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + bugfixed by: noname
// + bugfixed by: Alex
// + bugfixed by: Marco
// + bugfixed by: madipta
// + improved by: KELAN
// + improved by: Brett Zamir (http://brett-zamir.me)
// + bugfixed by: Brett Zamir (http://brett-zamir.me)
// + input by: Frank Forte
// + bugfixed by: T.Wild
// + input by: Ratheous
// % note: It has been decided that we're not going to add global
// % note: dependencies to php.js, meaning the constants are not
// % note: real constants, but strings instead. Integers are also supported if someone
// % note: chooses to create the constants themselves.
// * example 1: get_html_translation_table('HTML_SPECIALCHARS');
// * returns 1: {'"': '&quot;', '&': '&amp;', '<': '&lt;', '>': '&gt;'}
var entities = {},
hash_map = {},
decimal = 0,
symbol = '';
var constMappingTable = {},
constMappingQuoteStyle = {};
var useTable = {},
useQuoteStyle = {};
// Translate arguments
constMappingTable[0] = 'HTML_SPECIALCHARS';
constMappingTable[1] = 'HTML_ENTITIES';
constMappingQuoteStyle[0] = 'ENT_NOQUOTES';
constMappingQuoteStyle[2] = 'ENT_COMPAT';
constMappingQuoteStyle[3] = 'ENT_QUOTES';
useTable = !isNaN(table) ? constMappingTable[table] : table ? table.toUpperCase() : 'HTML_SPECIALCHARS';
useQuoteStyle = !isNaN(quote_style) ? constMappingQuoteStyle[quote_style] : quote_style ? quote_style.toUpperCase() : 'ENT_COMPAT';
if (useTable !== 'HTML_SPECIALCHARS' && useTable !== 'HTML_ENTITIES') {
throw new Error("Table: " + useTable + ' not supported');
// return false;
}
entities['38'] = '&amp;';
if (useTable === 'HTML_ENTITIES') {
entities['160'] = '&nbsp;';
entities['161'] = '&iexcl;';
entities['162'] = '&cent;';
entities['163'] = '&pound;';
entities['164'] = '&curren;';
entities['165'] = '&yen;';
entities['166'] = '&brvbar;';
entities['167'] = '&sect;';
entities['168'] = '&uml;';
entities['169'] = '&copy;';
entities['170'] = '&ordf;';
entities['171'] = '&laquo;';
entities['172'] = '&not;';
entities['173'] = '&shy;';
entities['174'] = '&reg;';
entities['175'] = '&macr;';
entities['176'] = '&deg;';
entities['177'] = '&plusmn;';
entities['178'] = '&sup2;';
entities['179'] = '&sup3;';
entities['180'] = '&acute;';
entities['181'] = '&micro;';
entities['182'] = '&para;';
entities['183'] = '&middot;';
entities['184'] = '&cedil;';
entities['185'] = '&sup1;';
entities['186'] = '&ordm;';
entities['187'] = '&raquo;';
entities['188'] = '&frac14;';
entities['189'] = '&frac12;';
entities['190'] = '&frac34;';
entities['191'] = '&iquest;';
entities['192'] = '&Agrave;';
entities['193'] = '&Aacute;';
entities['194'] = '&Acirc;';
entities['195'] = '&Atilde;';
entities['196'] = '&Auml;';
entities['197'] = '&Aring;';
entities['198'] = '&AElig;';
entities['199'] = '&Ccedil;';
entities['200'] = '&Egrave;';
entities['201'] = '&Eacute;';
entities['202'] = '&Ecirc;';
entities['203'] = '&Euml;';
entities['204'] = '&Igrave;';
entities['205'] = '&Iacute;';
entities['206'] = '&Icirc;';
entities['207'] = '&Iuml;';
entities['208'] = '&ETH;';
entities['209'] = '&Ntilde;';
entities['210'] = '&Ograve;';
entities['211'] = '&Oacute;';
entities['212'] = '&Ocirc;';
entities['213'] = '&Otilde;';
entities['214'] = '&Ouml;';
entities['215'] = '&times;';
entities['216'] = '&Oslash;';
entities['217'] = '&Ugrave;';
entities['218'] = '&Uacute;';
entities['219'] = '&Ucirc;';
entities['220'] = '&Uuml;';
entities['221'] = '&Yacute;';
entities['222'] = '&THORN;';
entities['223'] = '&szlig;';
entities['224'] = '&agrave;';
entities['225'] = '&aacute;';
entities['226'] = '&acirc;';
entities['227'] = '&atilde;';
entities['228'] = '&auml;';
entities['229'] = '&aring;';
entities['230'] = '&aelig;';
entities['231'] = '&ccedil;';
entities['232'] = '&egrave;';
entities['233'] = '&eacute;';
entities['234'] = '&ecirc;';
entities['235'] = '&euml;';
entities['236'] = '&igrave;';
entities['237'] = '&iacute;';
entities['238'] = '&icirc;';
entities['239'] = '&iuml;';
entities['240'] = '&eth;';
entities['241'] = '&ntilde;';
entities['242'] = '&ograve;';
entities['243'] = '&oacute;';
entities['244'] = '&ocirc;';
entities['245'] = '&otilde;';
entities['246'] = '&ouml;';
entities['247'] = '&divide;';
entities['248'] = '&oslash;';
entities['249'] = '&ugrave;';
entities['250'] = '&uacute;';
entities['251'] = '&ucirc;';
entities['252'] = '&uuml;';
entities['253'] = '&yacute;';
entities['254'] = '&thorn;';
entities['255'] = '&yuml;';
}
if (useQuoteStyle !== 'ENT_NOQUOTES') {
entities['34'] = '&quot;';
}
if (useQuoteStyle === 'ENT_QUOTES') {
entities['39'] = '&#39;';
}
entities['60'] = '&lt;';
entities['62'] = '&gt;';
// Agrego los entities que faltan de IRA
entities['8804'] = '&le;';
entities['8805'] = '&ge;';
entities['946'] = '&beta;';
// ascii decimals to real symbols
for (decimal in entities) {
symbol = String.fromCharCode(decimal);
hash_map[symbol] = entities[decimal];
}
return hash_map;
}
// Funcion copiada vilmente desde http://phpjs.org/functions/html_entity_decode:424
function html_entity_decode (string, quote_style) {
// http://kevin.vanzonneveld.net
// + original by: john (http://www.jd-tech.net)
// + input by: ger
// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + revised by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + bugfixed by: Onno Marsman
// + improved by: marc andreu
// + revised by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + input by: Ratheous
// + bugfixed by: Brett Zamir (http://brett-zamir.me)
// + input by: Nick Kolosov (http://sammy.ru)
// + bugfixed by: Fox
// - depends on: get_html_translation_table
// * example 1: html_entity_decode('Kevin &amp; van Zonneveld');
// * returns 1: 'Kevin & van Zonneveld'
// * example 2: html_entity_decode('&amp;lt;');
// * returns 2: '&lt;'
var hash_map = {},
symbol = '',
tmp_str = '',
entity = '';
tmp_str = string.toString();
if (false === (hash_map = this.get_html_translation_table('HTML_ENTITIES', quote_style))) {
return false;
}
// fix &amp; problem
// http://phpjs.org/functions/get_html_translation_table:416#comment_97660
delete(hash_map['&']);
hash_map['&'] = '&amp;';
for (symbol in hash_map) {
entity = hash_map[symbol];
tmp_str = tmp_str.split(entity).join(symbol);
}
tmp_str = tmp_str.split('&#039;').join("'");
return tmp_str;
}
function param_sencillo(param, col, db2){
// Funcion para procesar un parametro sencillo
// @param: param Object Recibe un JSON con un cod_param de la tabla parametros
// @param: col String Nombre de la collecion donde guardar este parametro
// @param: db2 Object Enlace a la nueva Base de Datos.
// return: ret Array Matriz de objetos con el nuevoId de la nueva BD
var ret = [];
db.vlr_param.find({cod_param1:param.cod_param}).forEach(function(param_valor){
var registro = {};
registro.cod1 = param_valor.cod_param1;
registro.vlr1 = param_valor.cod_vlrparam1;
registro.nombre = html_entity_decode(param_valor.descrip_vlrparam);
var reg = {nombre:registro.nombre};
db2[col].save(reg);
registro.nuevoId = reg._id.toString();
registro.col = col;
ret.push(registro);
db2.registro_migracion.save(registro);
})
return ret;
}
function param_compuesto(idPadre, param, col, db2){
// Funcion para procesar un parametro compuesto
// @param: idPadre String id del parametro padre segun la organizacion vieja
// @param: param Object Recibe un JSON con un cod_param de la tabla parametros
// @param: col String Nombre de la collecion donde guardar este parametro
// @param: db2 Object Enlace a la nueva Base de Datos.
// return: ret Array Matriz de objetos con el nuevoId de la nueva BD
var ret = [];
db.vlr_param.find({cod_param1:idPadre,cod_param2:param.cod_param1, cod_vlrparam2:param.cod_vlrparam1})
.forEach(function(valor){
var registro = {};
registro.cod1 = valor.cod_param1;
registro.vlr1 = valor.cod_vlrparam1;
registro.cod2 = valor.cod_param2;
registro.vlr2 = valor.cod_vlrparam2;
registro.nombre = html_entity_decode(valor.descrip_vlrparam);
var reg = {nombre:registro.nombre};
db2[col].save(reg);
registro.nuevoId = reg._id.toString();
registro.col = col;
ret.push(registro);
db2.registro_migracion.save(registro);
})
return ret;
}
function migrar_anexos(dir, col, db2){
// Funcion que se encarga de migrar los adjuntos y retornar un array con las asociaciones nuevas
// @param: dir String Path donde se van a guardar los PDFs
// @param: col String Nombre de la collecion donde guardar este parametro
// @param: db2 Object Enlace a la nueva Base de Datos.
// return: ret Array Matriz de objetos con el nuevoId de la nueva BD
var ret = [];
db.vlr_adjuntos.find().forEach(function(anexo){
var registro = {};
registro.cod_param = anexo.cod_param;
registro.cod_adjunto = anexo.cod_adjunto;
registro.nombre = html_entity_decode(anexo.descrip_adjunto);
var reg = { nombre:anexo.url_archivo,
descripcion:registro.nombre,
archivo_path:dir+'/'+anexo.url_archivo,
mime:'application/pdf'
}
db2[col].save(reg);
registro.nuevoId = reg._id.toString();
registro.col = col;
ret.push(registro);
db2.registro_migracion.save(registro);
});
return ret;
}
// Enlace de conexion con la nueva DB
// Cambie aqui el nombre de la DB de destino
var ndb = db.getMongo().getDB('ira-sipds-migrada');
print('-------- MIGRANDO PARAMETROS --------');
db.parametros.find().forEach(function(param){
if (param.cod_paramt != 'NULL'){
db.parametros.find({cod_param:param.cod_paramt}).forEach(function(real){
db.vlr_param.find({cod_param1:real.cod_param}).forEach(function(parametro){
if (parametro.cod_param1 == 21 && parametro.cod_vlrparam1 == 1){
// Migramos las condiciones del Paciente
print(' -- Condiciones del Paciente --');
var cond_pac = param_compuesto(param.cod_param, parametro, 'condicionpacs', ndb);
print(' Fueron creadas '+cond_pac.length+' condiciones');
}
if (parametro.cod_param1 == 21 && parametro.cod_vlrparam1 == 2){
// MIgramos las condiciones generales de la prueba
print(' -- Condiciones Generales de la prueba --');
var cond_gen = param_compuesto(param.cod_param, parametro, 'condicions', ndb);
print(' Fueron creadas '+cond_gen.length+' condiciones');
}
if (parametro.cod_param1 == 22 && parametro.cod_vlrparam1 == 1){
// Migramos las condiciones de recoleccion
print(' -- Condiciones de Recoleccion --');
var cond_reco = param_compuesto(param.cod_param, parametro, 'condicionrecos', ndb);
print(' Fueron creadas '+cond_reco.length+' condiciones');
}
if (parametro.cod_param1 == 22 && parametro.cod_vlrparam1 == 2){
// MIgramos las condiciones de envio
print(' -- Condiciones de Envio --');
var cond_envio = param_compuesto(param.cod_param, parametro, 'condicionenvios', ndb);
print(' Fueron creadas '+cond_envio.length+' condiciones');
}
if ((parametro.cod_param1 == '23' && parametro.cod_vlrparam1 == '001') ||
(parametro.cod_param1 == 23 && parametro.cod_vlrparam1 == 1)){
// Migramos las redes de apoyo nacional
print(' -- Redes Apoyo Nacional --');
var red_nal = param_compuesto(param.cod_param, parametro, 'rednals', ndb);
print(' Fueron cradas '+red_nal.length+' redes nacionales');
}
if ((parametro.cod_param1 == '23' && parametro.cod_vlrparam1 == '002') ||
(parametro.cod_param1 == 23 && parametro.cod_vlrparam1 == 2)){
// Migramos las redes de apoyo internacional
print(' -- Redes Apoyo Internacional --');
var red_inter = param_compuesto(param.cod_param, parametro, 'redinters', ndb);
print(' Fueron cradas '+red_inter.length+' redes internacionales');
}
if ((parametro.cod_param1 == '24' && parametro.cod_vlrparam1 == '001') ||
(parametro.cod_param1 == 24 && parametro.cod_vlrparam1 == 1)){
// Migramos las unidades de cantidad
print(' -- Unidades de Cantidad --');
var uni_cant = param_compuesto(param.cod_param, parametro, 'unidadcants', ndb);
print(' Fueron creadas '+uni_cant.length+' unidades');
}
if ((parametro.cod_param1 == '24' && parametro.cod_vlrparam1 == '002') ||
(parametro.cod_param1 == 24 && parametro.cod_vlrparam1 == 2)){
// Migramos las unidades de tiempo
print(' -- Unidades de Tiempo --');
var uni_tiempo = param_compuesto(param.cod_param, parametro, 'unidadtiempos', ndb);
print(' Fueron creadas '+uni_tiempo.length+' unidades');
}
})
})
} else {
switch(param.cod_param){
case '12':
case 12:
print(' -- Metodos --');
var metodos = param_sencillo(param, 'metodos', ndb);
print(' Fueron creados '+metodos.length+' metodos');
break;
case '13':
case 13:
print(' -- Aditivos --');
var aditivos = param_sencillo(param, 'aditivos', ndb);
print(' Fueron creados '+aditivos.length+' aditivos');
break;
case '15':
case '08':
case 8:
case 15:
print(' -- Dias de Procesamiento --');
var dias_proc = param_sencillo(param, 'diasprocs', ndb);
print(' Fueron creados '+dias_proc.length+' dias de procesamiento');
break;
case '17':
case 17:
print(' -- Secciones --');
var secciones = param_sencillo(param, 'seccions', ndb);
print(' Fueron creadas '+secciones.length+' secciones');
break;
case '18':
case 18:
print(' -- Signos --');
var signos = param_sencillo(param, 'signos', ndb);
print(' Fueron creados '+signos.length+' signos');
break;
case '19':
case 19:
print(' -- Valores de Referencia --');
var val_ref = param_sencillo(param, 'valoresreferencias', ndb);
print(' Fueron creados '+val_ref.length+' valores de referencia');
break;
case '20':
case 20:
print(' -- Archivos Anexos --');
var anexos = migrar_anexos('/home/iralabs/archivos_anexos', 'anexos', ndb);
print(' Fueron creados '+anexos.length+' anexos');
break;
case '25':
case 25:
print(' -- Muestras --');
var muestras = param_sencillo(param, 'muestras', ndb);
print(' Fueron creadas '+muestras.length+' muestras');
break;
case '4':
case 4:
print(' -- Unidades Cantidad Cuantitativa --');
var undCantCuali = param_sencillo(param, 'unidadcants', ndb);
print(' Fueron creadas '+undCantCuali.length+' unidades cuantitativas');
break;
default:
print('CODIGO DE PARAMETRO DESCONOCIDO!!!');
printjson(param);
break;
}
}
});
// Migro los sinonimos
print('---- MIGRANDO SINONIMOS ----');
db.sinonimos.find({definitiva:'Si'}).forEach(function(sin){
var s = {nombre:html_entity_decode(sin.descrip_sinon)};
ndb.sinonimos.save(s);
sin.nuevoId = s._id.toString();
ndb.registro_sinonimos.save(sin);
//printjson({reg:s, orig:sin});
});
var cantSinonimos = ndb.sinonimos.find().count();
print(' MIgrados '+cantSinonimos+' Sinonimos');
print('------ MIGRACION DE PRUEBAS ------');
db.pruebas.find({definitiva:'Si'}).forEach(function(prueba){
var nuevaPrueba = {};
//printjson(prueba);
// Empiezo a definir las propiedades de las pruebas
nuevaPrueba.cod_prueba = prueba.cod_pru;
nuevaPrueba.nombre = ((prueba.descrip_pru) ? html_entity_decode(prueba.descrip_pru) : '');
nuevaPrueba.disponible = false;
if (prueba.disponible == 'Si') nuevaPrueba.disponible = 'true';
nuevaPrueba.perfil = false;
if (prueba.perfil == 'Si') nuevaPrueba.perfil = 'true';
nuevaPrueba.estabilidad_comun = false;
if (prueba.estabcomun == 'Si') nuevaPrueba.estabilidad_comun = 'true';
nuevaPrueba.referencia_comun = false;
if (prueba.vrcomun == 'Si') nuevaPrueba.referencia_comun = 'true';
nuevaPrueba.utilidad_clinica = ((prueba.utilidadc) ? html_entity_decode(prueba.utilidadc) : '');
nuevaPrueba.condiciones_paciente = [];
nuevaPrueba.condiciones_generales = [];
nuevaPrueba.lugar_procesamiento = '';
nuevaPrueba.lugar_procesamiento_valor = '';
nuevaPrueba.metodos = [];
nuevaPrueba.muestras = [];
nuevaPrueba.seccion = [];
// Agrego la seccion de la prueba
//print(' Seccion:'+prueba.cod_param_seccion+' y '+prueba.cod_vlrparam_seccion);
ndb.registro_migracion.find({cod1:prueba.cod_param_seccion,vlr1:prueba.cod_vlrparam_seccion,col:'seccions'}).forEach(function(sec){
nuevaPrueba.seccion.push(sec.nuevoId);
});
// Agrego el sinonimo a la prueba
var sinonimos = [];
ndb.registro_sinonimos.find({cod_pru:prueba.cod_pru}).forEach(function(s){
ndb.sinonimos.find({_id:ObjectId(s.nuevoId)}).forEach(function(sin){
sinonimos.push(sin.nombre);
});
});
nuevaPrueba.sinonimo = sinonimos.join(', ');
// Busco los parametros guardados en pru_param
db.pru_param.find({cod_pru:prueba.cod_pru, definitiva:'Si'}).forEach(function(param){
db.vlr_param.find({cod_param1:param.cod_param, cod_vlrparam1:param.cod_vlrparam}).forEach(function(otroparam){
if (otroparam.cod_param2 != 'NULL') {
//print('Consultando segundo param: ');
//printjson(otroparam);
ndb.registro_migracion.find({cod1:otroparam.cod_param1,
vlr1:otroparam.cod_vlrparam1,
cod2:otroparam.cod_param2,
vlr2:otroparam.cod_vlrparam2
}).forEach(function(result){
//print('REsultado: ');
//printjson(result);
switch(result.cod2){
case '21':
case 21:
if (result.vlr2 == '001' || result.vlr2 == 1){
// Agrego una condicion del paciente a la prueba
nuevaPrueba.condiciones_paciente.push(result.nuevoId);
} else if (result.vlr2 == '002' || result.vlr2 == 2){
// Agrego una condicion general de la prueba
nuevaPrueba.condiciones_generales.push(result.nuevoId);
} else {
print('OJO HAY UNA PRUEBA CON UN PARAMETRO DESCONOCIDO - 21');
}
break;
case '23':
case 23:
if (result.vlr2 == '001' || result.vlr2 == 1){
// Agrego una red de apoyo nacional
nuevaPrueba.lugar_procesamiento = 'red_nacional';
nuevaPrueba.lugar_procesamiento_valor = result.nuevoId;
} else if (result.vlr2 == '002' || result.vlr2 == 2){
// Agrego una red de apoyo internacional
nuevaPrueba.lugar_procesamiento = 'red_internacional';
nuevaPrueba.lugar_procesamiento_valor = result.nuevoId;
} else {
print('OJO HAY UNA PRUEBA CON UN PARAMETRO DESCONOCIDO - 23');
}
break;
default:
print('ENCONMTRO OTRA COSA, revise arriba de este msg');
break;
}
})
} else {
//print('Consultando primer param:');
//printjson(otroparam);
ndb.registro_migracion.find({cod1:otroparam.cod_param1,vlr1:otroparam.cod_vlrparam1}).forEach(function(resultado){
switch (resultado.cod1) {
case 8:
// Agrego el tiempo de informe
nuevaPrueba.tiempo_informe_otros = resultado.nuevoId;
break;
case 12:
// Agrego los metodos
nuevaPrueba.metodos.push(resultado.nuevoId);
break;
default:
print('OJO QUE NO COINCIDIO EL PARAMETRO CON METODOS');
print('Resultado: ');
printjson(resultado);
break;
}
});
}
})
});
// Reviso las muestras que tenga asociada la prueba
var muestras = {};
print(' Inicio las Muestras');
db.cond_muestra.find({cod_pru:prueba.cod_pru, definitiva:'Si'}).forEach(function(muestra){
//print('Muestra: ');
//printjson(muestra);
var muestra_det = {};
if (muestra){
// Nombre de la muestra
if (muestra.cod_param_tmues){
ndb.registro_migracion.find({cod1:muestra.cod_param_tmues, vlr1:muestra.cod_vlrparam_tmues}).forEach(function(r){
nuevaPrueba.muestras.push(r.nuevoId);
});
}
// Temperatura Ambiente
if (muestra.cod_param_utamb){
ndb.registro_migracion.find({cod1:muestra.cod_param_utamb,vlr1:muestra.cod_vlrparam_utamb}).forEach(function(r){
muestra_det.temp_ambiente = muestra.qtamb;
muestra_det.temp_ambiente_unidad = r.nuevoId;
});
}
// Temperatura Refrigerada
if(muestra.cod_param_utrefrig){
ndb.registro_migracion.find({cod1:muestra.cod_param_utrefrig, vlr1:muestra.cod_vlrparam_utrefrig}).forEach(function(r){
muestra_det.temp_refrigerada = muestra.qtrefrig;
muestra_det.temp_refrigerada_unidad = r.nuevoId;
})
}
// Temperatura Congelada
if (muestra.cod_param_utcong){
ndb.registro_migracion.find({cod1:muestra.cod_param_utcong, vlr1:muestra.cod_vlrparam_utcong}).forEach(function(r){
muestra_det.temp_congelada = muestra.qtcong;
muestra_det.temp_congelada_unidad = r.nuevoId;
})
}
// Cantidad cuantitativa
if (muestra.cod_param_ucant_condm){
ndb.registro_migracion.find({cod1:muestra.cod_param_ucant_condm, vlr1:muestra.cod_vlrparam_ucant_condm}).forEach(function(r){
muestra_det.cant_cuantitativa = muestra.qcant_condm;
muestra_det.cant_cuantitativa_unidad = r.nuevoId;
})
}
// Cantidad cualitativa
if (muestra.cod_param_qcual){
ndb.registro_migracion.find({cod1:muestra.cod_param_qcual, vlr1:muestra.cod_vlrparam_qcual}).forEach(function(r){
if (muestra.qcant_condm != 'NULL') {
muestra_det.cant_cualitativa = muestra.qcant_condm;
}
muestra_det.cant_cualitativa_unidad = r.nuevoId;
})
}
// Aditivos
muestra_det.aditivo_valor = [];
muestra_det.aditivo_unidad = [];
print(' Consultando aditivos');
db.condm_aditivo.find({cod_pru:muestra.cod_pru, cod_condm:muestra.cod_condm}).forEach(function(listaAditivo){
//print('REspuesta: ');
//printjson(listaAditivo);
if (listaAditivo){
db.vlr_aditivos.find({cod_param:listaAditivo.cod_param, cod_aditivo:listaAditivo.cod_aditivo})
.forEach(function(codAditivo){
//print('VALOR');
//printjson(codAditivo);
if (codAditivo){
ndb.registro_migracion.find({cod1:codAditivo.cod_param_nombreaditivo, vlr1:codAditivo.cod_vlrparam_nombreaditivo})
.forEach(function(nombreAditivo){
//print('NOMBRE');
//printjson(nombreAditivo);
muestra_det.aditivo_unidad.push(nombreAditivo.nuevoId);
});
ndb.registro_migracion.find({cod1:codAditivo.cod_param_ucant_aditivo, vlr1:codAditivo.cod_vlrparam_ucant_aditivo})
.forEach(function(cantAditivo){
//print('CAnti');
//printjson(cantAditivo);
muestra_det.aditivo_valor.push(cantAditivo.nombre);
});
}
});
}
});
// Condiciones de Envio y Recoleccion
muestra_det.cond_envio = [];
muestra_det.cond_recoleccion = [];
print(' Condiciones envio y recoleccion');
db.condm_param.find({cod_pru:muestra.cod_pru, cod_condm:muestra.cod_condm}).forEach(function(condicion){
//print('Consulta');
//printjson(condicion);
ndb.registro_migracion.find({cod1:condicion.cod_param, vlr1:condicion.cod_vlrparam}).forEach(function(tipoCond){
//print('respuesta');
//printjson(tipoCond);
switch(tipoCond.vlr2){
case '001':
case 1:
// Condicion de Recoleccion
muestra_det.cond_recoleccion.push(tipoCond.nuevoId);
break;
case '002':
case 2:
// Condicion de Envio
muestra_det.cond_envio.push(tipoCond.nuevoId);
break;
default:
print('OJO HAY UNA PRUEBA SIN UN PARAMETRO BIEN RELACIONADO');
break;
}
})
})
var ind = muestra.cod_condm - 1;
muestras[ind.toString()] = muestra_det;
}
});
nuevaPrueba.muestra = muestras;
// Dias de procesamiento
var dias = [];
if (prueba.lu == 'Si') dias.push('Lunes');
if (prueba.ma == 'Si') dias.push('Martes');
if (prueba.mi == 'Si') dias.push('Miércoles');
if (prueba.ju == 'Si') dias.push('Jueves');
if (prueba.vi == 'Si') dias.push('Viernes');
if (prueba.sa == 'Si') dias.push('Sabado');
if (prueba.do == 'Si') dias.push('Domingo');
//print('DIAS PROC - '+prueba.cod_pru);
//printjson(dias);
nuevaPrueba.dias_procesamiento = dias;
if (prueba.cod_vlrparam_diaotro == 'NULL'){
//print('fue nulo');
} else {
//print('Son otros');
//print(prueba.cod_vlrparam_diaotro);
if (prueba.cod_vlrparam_diaotro){
ndb.registro_migracion.find({cod1:prueba.cod_param_diaotro,vlr1:prueba.cod_vlrparam_diaotro}).forEach(function(otroDia){
//printjson(otroDia);
if (otroDia){
nuevaPrueba.dia_procesamiento_otro = otroDia.nuevoId;
}
});
}
}
// Tiempo de Informe
if (prueba.qtinform && prueba.qtinform != 'NULL'){
ndb.registro_migracion.find({cod1:prueba.cod_param_utinform, vlr1:prueba.cod_vlrparam_utinform}).forEach(function(tiempoInforme){
if (tiempoInforme) {
nuevaPrueba.tiempo_informe_valor = prueba.qtinform;
nuevaPrueba.tiempo_informe_unidad = tiempoInforme.nuevoId;
}
});
}
// Valores de referencia/
var val_refs = [];
print(' Valores de Referencia');
db.lineas_vr.find({cod_pru:prueba.cod_pru}).forEach(function(linea){
//print('Linea:');
//printjson(linea);
if (linea.cod_vlrparam_texto != 'NULL') {
var valor = {};
valor.valores = [];
ndb.registro_migracion.find({cod1:linea.cod_param_texto,vlr1:linea.cod_vlrparam_texto}).forEach(function(nombreVal){
//print('Respuesta:');
//printjson(nombreVal);
valor.val_ref = nombreVal.nuevoId;
});
var ind = linea.cod_linvr - 1;
} else if (val_refs.length > 0){
var ind = val_refs.length - 1;
print(' TOMANDO ANTERIOR');
var valor = val_refs[ind];
} else {
var valor = {val_ref:false,texto:html_entity_decode(linea.textoinput),valores:[]};
if (linea.cod_linvr)
var ind = linea.cod_linvr - 1;
else
var ind = 0;
}
var valores = {};
valores.rango_edad_inicial = linea.edadi;
valores.rango_edad_final = linea.edadf;
ndb.registro_migracion.find({cod1:linea.cod_param_signo_linvr, vlr1:linea.cod_vlrparam_signo_linvr})
.forEach(function(signoEdad){
valores.signo_edad = signoEdad.nuevoId;
});
ndb.registro_migracion.find({cod1:linea.cod_param_ucantf, vlr1:linea.cod_vlrparam_ucantf}).forEach(function(uniEdad){
valores.rango_edad_unidad = uniEdad.nuevoId;
});
db.columnas_vr.find({cod_pru:prueba.cod_pru,cod_linvr:linea.cod_linvr}).forEach(function(columna){
//print('Respuesta a columna');
//printjson(columna);
if (columna){
valores.rango_valor_inicial = columna.valori;
valores.rango_valor_final = columna.valorf;
ndb.registro_migracion.find({cod1:columna.cod_param_signo_columvr, vlr1:columna.cod_vlrparam_signo_columvr})
.forEach(function(signoValor){
valores.signo_valor = signoValor.nuevoId;
})
ndb.registro_migracion.find({cod1:columna.cod_param_ucant_columvr,vlr1:columna.cod_vlrparam_ucant_columvr})
.forEach(function(uniValor){
valores.rango_valor_unidad = uniValor.nuevoId;
})
}
});
valor.valores.push(valores);
val_refs[ind] = valor;
//printjson({indice:ind, valores:val_refs});
});
// Agrego los valores de referencia a la nueva prueba
nuevaPrueba.valores_referencia = val_refs;
// Busco el estado para la nueva prueba
db.vlr_param.find({cod_param1:prueba.cod_param_estado,cod_vlrparam1:prueba.cod_vlrparam_estado}).forEach(function(estado){
nuevaPrueba.estado = html_entity_decode(estado.descrip_vlrparam);
});
ndb.pruebas.save(nuevaPrueba);
if (nuevaPrueba._id){
print('Prueba: '+nuevaPrueba.cod_prueba+' migrada con exito');
}
});
ndb.usuarios.save({
nombre:'Administrador',
bloqueado:false,
username:'admin',
clave_cifrada:'a0664cb101d6503a66c0fd7d567e2d80f83151c7',
salt:'438759344570',
correo:'staff@kumokojo.com',
rol:'admin'
})
function agregarTextos(codigo,textos,primero){
/**
* Funcion que saca los ultimos valores del intervalo biologico y los crea como un nuevo intervalo
* con el texto correspondiente del array
* @param codigo string El codigo de la prueba a modificar
* @param textos array Matriz de los textos que hay que agregar a los valores (ponerlos invertidos)
*/
if (typeof primero == 'undefined' ) primero = true;
db.pruebas.find({cod_prueba:codigo}).forEach(function(p){
var nuevos = [];
for (var t in textos){
nuevos.push({val_ref:false,texto:textos[t],valores:[p.valores_referencia[0].valores.pop()]});
}
if (primero){
nuevos.push(p.valores_referencia[0]);
}
nuevos.reverse();
p.valores_referencia = nuevos;
db.pruebas.save(p);
});
}
// Se quitan los NULLs
db.pruebas.find({cod_prueba:{ $in: [
'1398', '0846', '0478', '0965', '0043', '0001',
'0078', '0079', '1117', '0038', '0045', '0049',
'0051', '1133', '0057', '1194', '0058', '0917',
'0059', '0061', '1201', '0064', '1075', '1121'
]}}).forEach(function(p){
p.valores_referencia[0].texto = '';
db.pruebas.save(p);
});
db.pruebas.find({cod_prueba:'0919'}).forEach(function(p){
var viejos = p.valores_referencia[0].valores;
var textos = ['Prematuro', 'Recién Nacido', 'Prepubertad 8:00 AM', 'Pubertad y Adultos 8:00 AM'];
var nuevos = [];
var partesUC = p.utilidad_clinica.split('3&#946;hidroxiesteroide');
for (var t in textos){
switch(t){
case '0':
nuevos[t] = {val_ref:false, texto:textos[t], valores:[viejos[0], viejos[1]]};
break;
case '1':
nuevos[t] = {val_ref:false, texto:textos[t], valores:[viejos[2], viejos[3]]};
break;
case '2':
nuevos[t] = {val_ref:false, texto:textos[t], valores:[viejos[4]]};
break;
case '3':
nuevos[t] = {val_ref:false, texto:textos[t], valores:[viejos[5]]};
break;
default:
print('No lo coje')
break;
}
}
nuevos[1].valores[1].rango_edad_inicial = 1;
p.valores_referencia = nuevos;
p.utilidad_clinica = partesUC.join('3βhidroxiesteroide');
db.pruebas.save(p);
});
db.pruebas.find({cod_prueba:{$in:['0003', '0055']}}).forEach(function(p){
p.muestra[0].aditivo_valor = ['10.0 g'];
db.pruebas.save(p);
});
db.pruebas.find({cod_prueba:'0004'}).forEach(function(p){
var aditivo = p.muestra[0].aditivo_unidad.pop();
p.muestra[0].aditivo_valor = ['10.0 mL de Tolueno al iniciar la recolección de 24 horas ó 5.0 g de'];
p.muestra[0].aditivo_unidad = [aditivo];
db.pruebas.save(p);
});
db.pruebas.find({cod_prueba:'0005'}).forEach(function(p){
delete p.valores_referencia[0].valores[2].signo_edad
p.valores_referencia.pop(); // Un undefined que hay
var pubertad = p.valores_referencia[0].valores.pop();
var adultos = {val_ref:false,texto:'Adultos',valores:[{
rango_edad_inicial:'',
rango_edad_final:'',
rango_edad_unidad:'',
rango_valor_inicial:53,
rango_valor_final:357,
rango_valor_unidad:pubertad.rango_valor_unidad
}]}
p.valores_referencia.push({val_ref:false,texto:'Pubertad', valores:[pubertad]});
p.valores_referencia.push(adultos);
db.pruebas.save(p);
});
db.pruebas.find({cod_prueba:'0006'}).forEach(function(p){
var hombres = p.valores_referencia[0];
var textos = ['Fase folicular', 'Pico de ovulación', 'Fase luteal', 'Menopausia', 'Prepúberes'];
var nuevos = [hombres];
p.valores_referencia[1].valores.shift();
for (var v in p.valores_referencia[1].valores){
nuevos.push({val_ref:false,texto:'Mujeres - '+textos[v],valores:[p.valores_referencia[1].valores[v]]});
}
db.valoresreferencias.find({nombre:'Niños'}).forEach(function(n){
db.signos.find({nombre:'>'}).forEach(function(s){
db.unidadtiempos.find({nombre:'año(s)'}).forEach(function(u){
nuevos.push({val_ref:n._id.toString(),texto:'',valores:[{
rango_edad_inicial:'',
rango_edad_final:1,
rango_edad_unidad:u._id.toString(),
signo_edad:s._id.toString(),
rango_valor_inicial:0.07,
rango_valor_final:1.53,
rango_valor_unidad:hombres.valores[0].rango_valor_unidad.toString()
}]})
});
});
});
p.valores_referencia = nuevos;
db.pruebas.save(p);
});
db.pruebas.find({cod_prueba:'0000007'}).forEach(function(p){
var textos = ['basal', 'post'];
for (var v in p.valores_referencia){
p.valores_referencia[v].val_ref = false;
p.valores_referencia[v].texto = 'Niños '+textos[v];
}
p.cod_prueba = '0007';
db.pruebas.save(p);
});
db.diasprocs.find({nombre:'Una vez al mes'}).forEach(function(d){
db.pruebas.find({cod_prueba: {$in: ['1022', '1264']}}).forEach(function(p){
p.dia_procesamiento_otro = d._id.toString();
db.pruebas.save(p);
});
});
db.pruebas.find({cod_prueba: {$in:[
'1117', '1094', '0037',
'0038', '0041'
]}}).forEach(function(p){
p.estabilidad_comun = false;
db.pruebas.save(p);
});
db.pruebas.find({cod_prueba:'0010'}).forEach(function(p){
p.valores_referencia.pop(); // elimino el unidefined
var debil = p.valores_referencia[0].valores.pop();
db.signos.find({nombre:'>'}).forEach(function(s){
var nuevos = [p.valores_referencia[0],
{val_ref:false,texto:'Débilmente positivo',valores:[debil]},
{val_ref:false,texto:'Positivo',valores:[{
rango_edad_inicial:'',
rango_edad_final:'',
rango_edad_unidad:'',
signo_valor:s._id.toString(),
rango_valor_inicial:'',
rango_valor_final:20,
rango_valor_unidad:debil.rango_valor_unidad.toString()
}]}
];
p.valores_referencia = nuevos;
db.pruebas.save(p);
});
});
agregarTextos('0009', ['Toxicidad probable','Toxicidad posible']);
agregarTextos('0011', ['Sugestivo', 'Intermedio']);
agregarTextos('0013', ['Acetilcolina Autoanticuerpos Moduladores', 'Acetilcolina Autoanticuerpos Bloqueadores']);
agregarTextos('1019', ['Enfermedad de Canavan']);
db.pruebas.find({cod_prueba:'1094'}).forEach(function(p){
var nuevos = [];
var valores = [];
var textos = [{i:125,t:'3-OH-Lineoilcarnitina, C18:2-OH'},
{i:121,t:'3-OH-Oleoilcarnitina, C18:1-OH'},
{i:117,t:'lineoilcarnitina, C18:2'},
{i:113,t:'Oleoilcarnitina, C18:1'},
{i:109,t:'Stearoilcarnitina, C18'},
{i:105,t:'3-OH-Hexadecenoil, C16:1-OH'},
{i:101,t:'3-OH-Hexadecanoil, C16OH'},
{i:97,t:'Hexadecenoilcarnitina, C16:1'},
{i:93,t:'Hexadecanoilcarnitina, C16'},
{i:89,t:'3-OH-Tetradecenoil, C14:1-OH'},
{i:85,t:'3-OH-Tetradecanoil, C14OH'},
{i:81,t:'Tetradecadienoilcarnitina, C14:2'},
{i:77,t:'Tetradecenoilcarnitina, C14:1'},
{i:74,t:'Tetradecanoilcarnitina, C14'},
{i:70,t:'3-OH-dodecanoilcarnitina, C12OH'},
{i:67,t:'Dodecenoilcarnitina, C12:1'},
{i:64,t:'Dodecanoilcarnitina, C12'},
{i:60,t:'Decinoilcarnitina, C10:1'},
{i:56,t:'Decanoilcarnitina, C10'},
{i:52,t:'Subenilcarnitina, C8DC'},
{i:48,t:'Octanoilcarnitina, C8:1'},
{i:44,t:'Octanoilcarnitina, C8'},
{i:40,t:'3-OH-Hexanoilcarnitin, C6OH'},
{i:36,t:'Adipoilcarnitina, C6DC'},
{i:32,t:'Hexanoilcarnitina, C6'},
{i:29,t:'3-OH-Isovalerilcarnitin, C5OH'},
{i:26,t:'Glutarilcarnitina, C5DC'},
{i:23,t:'Tiglil/metilcrotonil, C5:1'},
{i:19,t:'Isovaleril-/2-Metilbutirico, C5'},
{i:15,t:'3-OH-Butrilcarnitin, C4OH'},
{i:13,t:'Methilmalonilcarnitin, C4DC'},
{i:9,t:'Iso-Butrilcarnitina, C4'},
{i:5,t:'Propionilcarnitina, C3'},
{i:1,t:'Acetilcarnitina, C2'},
];
for (var i = 128;i > 0;i--){
valores.push(p.valores_referencia[0].valores.pop());
for (var ti in textos){
if (textos[ti].i == i){
nuevos.push({val_ref:false,texto:textos[ti].t, valores:valores.reverse()});
valores = [];
}
}
}
p.valores_referencia = nuevos.reverse();
db.pruebas.save(p);
});
db.pruebas.find({cod_prueba:'1025'}).forEach(function(p){
var textos = ['Ácido Metilmalónico: 0.5 - 20.2 ug/mg creatinina',
'Ácido 2-Metilsuccínico: 0.4 - 13.8 ug/mg creatinina',
'Ácido Glutárico: 0.6 - 15.2 ug/mg creatinina',
'Isobutirilglicina: Menor de 0.01 - 11.0 ug/mg creatinina',
'n - Butirilglicina: 0.1 - 2.1 ug/mg creatinina',
'2 Metilbutirilglicina: 0.3 - 7.5 ug/mg creatinina',
'Isovalerilglicina: 0.3 - 14.3 ug/mg creatinina',
'n - Hexanoilglicina: 0.2 - 1.9 ug/mg creatinina',
'n - Octanoilglicina: 0.1 - 2.1 ug/mg creatinina',
'3 Fenilpropionilglicina: Menor de 0.01 - 1.1 ug/mg creatinina',
'Suberilglicina: Menor de 0.01 - 11.0 ug/mg creatinina',
'Transcinamoilglicina: 0.2 - 14.7 ug/mg creatinina',
'Ácido Dodecanedióico: Menor de 1.11 ug/mg creatinina',
'Ácido Tatradecanedióico: Menor de 0.01 - 1.0 ug/mg creatinina',
'Ácido Hexadecanedióico: Menor de 0.01 - 1.0 ug/mg creatinina',
];
var nuevos = [];
for (var t in textos){
nuevos.push({val_ref:false,texto:textos[t],valores:[{}]});
}
p.utilidad_clinica = 'No Especificado';
p.valores_referencia = nuevos;
db.pruebas.save(p);
});
db.pruebas.find({cod_prueba:'0038'}).forEach(function(p){
p.valores_referencia[0].valores[0].rango_valor_final = '1:8';
db.pruebas.save(p);
});
db.pruebas.find({cod_prueba:'0039'}).forEach(function(p){
p.valores_referencia[0].valores[0].rango_valor_final = '1:1';
db.pruebas.save(p);
});
db.pruebas.find({cod_prueba:'0042'}).forEach(function(p){
var textos = ['Niños obesos - Media IMC (12.2)', 'Niños obesos - Media IMC (27)'];
var nuevos = [];
for (var t in textos){
nuevos.push({val_ref:false,texto:textos[t],valores:[p.valores_referencia[1].valores.pop()]});
}
nuevos.push(p.valores_referencia[0]);
nuevos.reverse();
p.valores_referencia = nuevos;
db.pruebas.save(p);
});
db.pruebas.find({cod_prueba:'0044'}).forEach(function(p){
p.valores_referencia[0].valores[0].rango_valor_final = '1:2';
db.pruebas.save(p);
});
db.pruebas.find({cod_prueba:'0049'}).forEach(function(p){
p.valores_referencia[0].valores[0].rango_edad_inicial = '0';
p.valores_referencia.push({val_ref:false,texto:'Después de los 40 años los valores normales disminuyen gradualmente',valores:[{}]});
db.pruebas.save(p);
});
agregarTextos('0051', ['Intoxicación severa', 'Intoxicación leve', 'Período subclínico']);
db.pruebas.find({cod_prueba:'0037'}).forEach(function(p){
var viejo = p.valores_referencia[0].valores[0];
var textos = ['Muestra: Líquido Cefalorraquídeo: Nivel compatible con tuberculosis',
'Muestra: Líquido Pleural: Nivel compatible con tuberculosis',
'Muestra: Líquido Pericárdico: Nivel compatible con tuberculosis',
'Muestra: Líquido Peritoneal: Nivel compatible con tuberculosis'
];
var nuevos = [];
var numeros = ['5', '32', '96', '36'];
for (var t in textos){
nuevos.push({val_ref:false,texto:textos[t],valores:[{
rango_valor_final:numeros[t],
signo_valor:viejo.signo_valor,
rango_valor_unidad:viejo.rango_valor_unidad
}]});
}
p.valores_referencia = nuevos;
db.pruebas.save(p);
});
db.pruebas.find({cod_prueba:'0054'}).forEach(function(p){
var nuevos = [];
nuevos.push({val_ref:false, texto:'Adultos De pie', valores:[p.valores_referencia[0].valores[1]]});
nuevos.push({val_ref:false, texto:'Adultos Acostados', valores:[p.valores_referencia[0].valores[2]]});
var valores = [{rango_edad_inicial:'6',rango_edad_final:'9',rango_valor_inicial:'10',rango_valor_final:'240'},
{rango_edad_inicial:'10',rango_edad_final:'11',rango_valor_inicial:'20',rango_valor_final:'150'},
{rango_edad_inicial:'12',rango_edad_final:'14',rango_valor_inicial:'10',rango_valor_final:'220'},
{rango_edad_inicial:'15',rango_edad_final:'17',rango_valor_inicial:'10',rango_valor_final:'320'},
];
db.unidadtiempos.find({nombre:'año(s)'}).forEach(function(u){
var finales = [];
for (var v in valores){
valores[v].rango_edad_unidad = u._id.toString();
valores[v].rango_valor_unidad = p.valores_referencia[0].valores[1].rango_valor_unidad.toString();
finales.push(valores[v]);
}
nuevos.push({val_ref:false, texto:'Niños de pie', valores:finales});
p.valores_referencia = nuevos;
db.pruebas.save(p);
});
});
agregarTextos('0055', ['Alta en sal', 'Baja en sal']);
db.pruebas.find({cod_prueba:'0055'}).forEach(function(p){
p.valores_referencia[2].valores[0].rango_valor_inicial = '0';
db.pruebas.save(p);
});
agregarTextos('0056', ['Clase 6', 'Muy alto - clase 5', 'Muy alto - clase 4', 'Alto - clase 3', 'Moderado - clase 2', 'Bajo - clase 1', 'Baja detección - clase 0'], false);
db.pruebas.find({cod_prueba:'1173'}).forEach(function(p){
p.valores_referencia[0].valores.shift();
var nuevo = p.valores_referencia[0].valores.shift();
p.valores_referencia.push({val_ref:false, texto:'Alfa 1 Antitripsina', valores:[nuevo]});
db.pruebas.save(p);
});
agregarTextos('0062', ['% Inhibición', 'Relación Neutra/Inhibida'], false);
db.pruebas.find({cod_prueba:'1075'}).forEach(function(p){
p.muestra[0].aditivo_valor = ['1.0 mL de HCI por cada 100 mL de Orina'];
db.pruebas.save(p);
});
agregarTextos('1049', ['Radio Cadmio/Creatinina', 'Cadmio'], false);
db.pruebas.find({cod_prueba:'1049'}).forEach(function(p){
p.muestra[0].aditivo_valor = ['1.0 mL de HCL Concentrado o Ácido Acético Concentrado o Ácido Nítrico Concentrado por cada 100 mL de Orina'];
p.muestra[0].aditivo_unidad = [];
db.pruebas.save(p);
});
#!/bin/bash
d='probando-csv'
for f in columnas_vr comppor cond_muestra condm_aditivo condm_param lineas_vr parametros pru_adjunto pru_param pruebas relacionadas sinonimos usuarios vlr_aditivos vlr_adjuntos vlr_param
do
./bin/mongoimport -d $d -c $f --type csv --headerline --drop $d/$f.csv
done
db.pruebas.find().forEach(function(prueba){
for (var i in prueba.valores_referencia){
if (prueba.valores_referencia[i]) {
for (var v in prueba.valores_referencia[i].valores){
if (prueba.valores_referencia[i].valores[v] == 'NULL'){
print('Valores NULLO');
} else {
if (prueba.valores_referencia[i].val_ref == 'NULL;'){
prueba.valores_referencia[i].val_ref = '';
db.pruebas.save(prueba);
}
for (var p in prueba.valores_referencia[i].valores[v]){
if (prueba.valores_referencia[i].valores[v][p] == 'NULL'){
prueba.valores_referencia[i].valores[v][p] = '';
db.pruebas.save(prueba);
} else {
//print('No lo es');
}
}
}
}
} else {
prueba.valores_referencia[i] = {val_ref:'', valores:[]};
db.pruebas.save(prueba);
}
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment