Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions sip-plus-perinatal/controller/sip-plus.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ import { IPaciente } from '../schemas/paciente';
import { getMatching } from '../service/matchPerinatal';
import { getOrganizacionAndes } from '../service/organizacion';
import { IPerinatal, ISnomedConcept } from 'sip-plus-perinatal/schemas/perinatal';
import { fakeRequest, MONGO_HOST } from '../config.private';
import { msSipPlusPerinatalLog } from '../logger/msSipPlusPerinatal';
const log = msSipPlusPerinatalLog.startTrace();


/**
Expand Down Expand Up @@ -136,7 +139,7 @@ export async function completePacienteSP(pacienteSP: IPaciente, paciente: IPacie
}
}
} catch (error) {

log.error('completePacienteSP:error', pacienteSP, error, fakeRequest);
}
return newPaciente;

Expand Down Expand Up @@ -225,7 +228,7 @@ async function completePaciente(pacienteSP: any, paciente: IPaciente) {

datosPaciente = await completeData(paciente, datosPaciente, newData);
} catch (error) {

log.error('completePacienteSP:error', paciente, error, fakeRequest);
}
return datosPaciente;
}
Expand Down Expand Up @@ -255,6 +258,7 @@ async function completeData(allData, dataInit = {}, newData) {
}
});
} catch (error) {
log.error('completeData:error', allData, error, fakeRequest);
}

return datos;
Expand Down Expand Up @@ -382,7 +386,7 @@ async function createMatchControl(registros: any[], embActual, newDatosEmb, fech
}
}
} catch (error) {

log.error('createMatchControl:error', registros, error, fakeRequest);
}
return newDatosEmb;
}
Expand Down
14 changes: 14 additions & 0 deletions sip-plus-perinatal/logger/msSipPlusPerinatal.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import { logDatabase } from '../config.private';
import { Logger } from '@andes/log';
import * as mongoose from 'mongoose';

let logs: mongoose.Connection = mongoose.createConnection();
logs = mongoose.createConnection(logDatabase.log.host, logDatabase.log.options);
export const msSipPlusPerinatalLog = new Logger({
connection: logs,
type: 'msSipPlusPerinatal',
module: 'msSipPlusPerinatal',
application: 'andes',
bucketBy: 'h',
bucketSize: 100
});
2 changes: 1 addition & 1 deletion sip-plus-perinatal/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
"license": "ISC",
"dependencies": {
"@andes/bootstrap": "file:../bootstrap",
"@andes/log": "^1.0.11",
"@andes/log": "^2.2.5",
"@andes/match": "^1.1.12",
"async": "^2.6.3",
"html-entities": "^1.2.1",
Expand Down
45 changes: 24 additions & 21 deletions sip-plus-perinatal/service/matchPerinatal.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
import { IPerinatal } from '../schemas/perinatal';
import { QueryMapping } from '../schemas/query_mapping';

import { fakeRequest, MONGO_HOST } from '../config.private';
import { log } from '@andes/log';

import * as mongoose from 'mongoose';
import { msSipPlusPerinatalLog } from '../logger/msSipPlusPerinatal';
const log = msSipPlusPerinatalLog.startTrace();

mongoose.connect(MONGO_HOST, { useUnifiedTopology: true, useNewUrlParser: true }).
then(() => console.log('Conexion Exitosa BD Mongo'))
.catch(err => {
log(fakeRequest, 'microservices:integration:sip-plus', MONGO_HOST, 'Mongo Conexión:error', `${err.message}`);
log.error('Mongo Conexión:error', MONGO_HOST, `${err.message}`, fakeRequest);
});


Expand All @@ -20,29 +19,33 @@ export async function getMatching(tipoMatch = null) {
const dataMapped = await QueryMapping.find({ source, target: "sip+" });

return dataMapped.map(elemMap => {

let sipPlus = {
code: elemMap['targetValue']['code'],
type: elemMap['targetValue']['type']
}
const key = (tipo.includes('snomed')) ? elemMap['sourceValue']['key'] : elemMap['sourceValue'];

let dataMap: IPerinatal = { key, sipPlus, tipoMatch };
// si el tipo de mapeo contiene conceptos Snomed, entonces se obtienen sus datos
if (tipo.includes('snomed')) {
dataMap.concepto = elemMap['sourceValue']['concepto'];
if (elemMap['sourceValue']['valor']) {
dataMap.sipPlus.valor = elemMap['targetValue']['valor'];
try {
let sipPlus = {
code: elemMap['targetValue']['code'],
type: elemMap['targetValue']['type']
}
if (elemMap['targetValue']['extra']) {
dataMap.sipPlus.extra = elemMap['targetValue']['extra'];
const key = (tipo.includes('snomed')) ? elemMap['sourceValue']['key'] : elemMap['sourceValue'];

let dataMap: IPerinatal = { key, sipPlus, tipoMatch };
// si el tipo de mapeo contiene conceptos Snomed, entonces se obtienen sus datos
if (tipo.includes('snomed')) {
dataMap.concepto = elemMap['sourceValue']['concepto'];
if (elemMap['sourceValue']['valor']) {
dataMap.sipPlus.valor = elemMap['targetValue']['valor'];
}
if (elemMap['targetValue']['extra']) {
dataMap.sipPlus.extra = elemMap['targetValue']['extra'];
}
}
return dataMap;
} catch (error) {
log.error('getMatching:error', { dataMapped, source}, error, fakeRequest);
return null;
}
return dataMap;
});

} catch (error) {
log(fakeRequest, 'microservices:integration:sip-plus', source, 'getMatching:error', error);
log.error('getMatching:error',source, error, fakeRequest);
}
return [];
}
18 changes: 10 additions & 8 deletions sip-plus-perinatal/service/organizacion.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { ANDES_HOST, ANDES_KEY, fakeRequest } from '../config.private';
import { msSipPlusPerinatalLog } from '../logger/msSipPlusPerinatal';
const log = msSipPlusPerinatalLog.startTrace();
const fetch = require('node-fetch');

import { log } from '@andes/log';

export async function getOrganizacionAndes(idOrganizacion) {
const url = `${ANDES_HOST}/core/tm/organizaciones?ids=${idOrganizacion}`;
const options = {
Expand All @@ -14,13 +14,15 @@ export async function getOrganizacionAndes(idOrganizacion) {
};
try {
let response = await fetch(url, options);

const responseJson = await response.json();

return responseJson[0] || null;
try {
const responseJson = await response.json();
return responseJson[0] || null;
} catch (error) {
log.error('getOrganizacionAndes:error', { idOrganizacion, options, response }, error, fakeRequest);
}
}
catch (error) {
log(fakeRequest, 'microservices:integration:sip-plus', idOrganizacion, 'getOrganizacionAndes:error', error);
log.error('getOrganizacionAndes:error', { idOrganizacion, options }, error, fakeRequest);
}

}
}
22 changes: 13 additions & 9 deletions sip-plus-perinatal/service/paciente.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { ANDES_HOST, ANDES_KEY, fakeRequest } from '../config.private';
import { msSipPlusPerinatalLog } from '../logger/msSipPlusPerinatal';
const log = msSipPlusPerinatalLog.startTrace();
const fetch = require('node-fetch');

import { log } from '@andes/log';

export async function getPaciente(idPaciente) {
const url = `${ANDES_HOST}/core-v2/mpi/pacientes/${idPaciente}`;
const options = {
Expand All @@ -14,15 +14,19 @@ export async function getPaciente(idPaciente) {
};
try {
let response = await fetch(url, options);
const responseJson = await response.json();
if (responseJson._id) {
return responseJson;
} else {
return null;
try {
const responseJson = await response.json();
if (responseJson._id) {
return responseJson;
} else {
return null;
}
}catch (error) {
log.error('getPaciente:error', { idPaciente, options, response }, error, fakeRequest);
}
}
catch (error) {
log(fakeRequest, 'microservices:integration:sip-plus', idPaciente, 'getPaciente:error', error);
log.error('getPaciente:error', { idPaciente, options }, error, fakeRequest);
}

}
}
52 changes: 32 additions & 20 deletions sip-plus-perinatal/service/sip-plus.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import { SIP_PLUS, fakeRequest } from '../config.private';
import { msSipPlusPerinatalLog } from '../logger/msSipPlusPerinatal';
const log = msSipPlusPerinatalLog.startTrace();
const fetch = require('node-fetch');
import { log } from '@andes/log';


const url = `${SIP_PLUS.host}/record/AR/DNI/`;

Expand Down Expand Up @@ -32,26 +34,31 @@ export async function getPacienteSP(paciente: any) {
if (documento) {
try {
let response = await fetch(`${url}${documento}`, options('GET'));
try {
if (response.status >= 200 && response.status < 300) {
let responseJson = await response.json();

if (response.status >= 200 && response.status < 300) {
let responseJson = await response.json();
const keyResponse = Object.keys(responseJson).length || null;
if (keyResponse) {
return { paciente: responseJson };
}
else {
return { paciente: null };

const keyResponse = Object.keys(responseJson).length || null;
if (keyResponse) {
return { paciente: responseJson };
}
}
else {
if (response.status === 404) {
// paciente no encontrado
return { paciente: null };

}
}
if (response.status === 404) {
// paciente no encontrado
return { paciente: null };
} catch (error) {
log.error('getPacienteSP:error', { paciente, response }, error, fakeRequest);
return null;
}

} catch (error) {
log(fakeRequest, 'microservices:integration:sip-plus', paciente, 'getPacienteSP:error', error);
log.error('getPacienteSP:error', { paciente }, error, fakeRequest);
}
}
return null;
Expand All @@ -63,17 +70,22 @@ export async function postPacienteSP(documento: string = '', pacienteSP) {
const body = JSON.stringify(pacienteSP);
let optionsPost: any = options('POST', body);
let response: any = await fetch(`${url}${documento}`, optionsPost);
if (response.status >= 200 && response.status < 300) {
return { paciente: optionsPost.body };
}
if (response.status === 404) {
// paciente no encontrado
return { paciente: null };
try {
if (response.status >= 200 && response.status < 300) {
return { paciente: optionsPost.body };
}
if (response.status === 404) {
// paciente no encontrado
return { paciente: null };
}
} catch (error) {
log.error('postPacienteSP:error', { pacienteSP, response }, error, fakeRequest);
return null;
}

} catch (error) {
log(fakeRequest, 'microservices:integration:sip-plus', pacienteSP, 'postPacienteSP:error', error);
log.error('postPacienteSP:error', { pacienteSP }, error, fakeRequest);
}
}
return null;
}
}