Skip to content

Commit 6d3c611

Browse files
Revisión de logs en MS perinatal
1 parent 7885066 commit 6d3c611

6 files changed

Lines changed: 107 additions & 91 deletions

File tree

sip-plus-perinatal/logger/msSipPlusPerinatal.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,9 @@ logs = mongoose.createConnection(logDatabase.log.host, logDatabase.log.options);
77
export const msSipPlusPerinatalLog = new Logger({
88
connection: logs,
99
type: 'msSipPlusPerinatal',
10-
module: 'msSipPlusPerinatal',
10+
module: 'perinatal',
1111
application: 'andes',
1212
bucketBy: 'h',
13-
bucketSize: 100
13+
bucketSize: 100,
14+
expiredAt: '3 M'
1415
});

sip-plus-perinatal/package-lock.json

Lines changed: 11 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

sip-plus-perinatal/service/matchPerinatal.ts

Lines changed: 37 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -15,37 +15,48 @@ mongoose.connect(MONGO_HOST, { useUnifiedTopology: true, useNewUrlParser: true }
1515
export async function getMatching(tipoMatch = null) {
1616
const tipo: string = tipoMatch || 'paciente';
1717
const source = `andes:${tipo}`;
18+
1819
try {
1920
const dataMapped = await QueryMapping.find({ source, target: "sip+" });
21+
const results = dataMapped
22+
.map(elemMap => createDataMap(elemMap, tipo))
23+
.filter(Boolean);
24+
25+
return results;
26+
} catch (error) {
27+
log.error('getMatching:error', source, error, fakeRequest);
28+
return [];
29+
}
30+
}
31+
32+
function createDataMap(elemMap: any, tipo: string): IPerinatal | null {
2033

21-
return dataMapped.map(elemMap => {
22-
try {
23-
let sipPlus = {
24-
code: elemMap['targetValue']['code'],
25-
type: elemMap['targetValue']['type']
26-
}
27-
const key = (tipo.includes('snomed')) ? elemMap['sourceValue']['key'] : elemMap['sourceValue'];
28-
29-
let dataMap: IPerinatal = { key, sipPlus, tipoMatch };
30-
// si el tipo de mapeo contiene conceptos Snomed, entonces se obtienen sus datos
31-
if (tipo.includes('snomed')) {
32-
dataMap.concepto = elemMap['sourceValue']['concepto'];
33-
if (elemMap['sourceValue']['valor']) {
34-
dataMap.sipPlus.valor = elemMap['targetValue']['valor'];
35-
}
36-
if (elemMap['targetValue']['extra']) {
37-
dataMap.sipPlus.extra = elemMap['targetValue']['extra'];
38-
}
39-
}
40-
return dataMap;
41-
} catch (error) {
42-
log.error('getMatching:error', { dataMapped, source}, error, fakeRequest);
43-
return null;
34+
try {
35+
const sipPlus = {
36+
code: elemMap['targetValue']['code'],
37+
type: elemMap['targetValue']['type']
38+
};
39+
40+
const key = tipo.includes('snomed')
41+
? elemMap['sourceValue']['key']
42+
: elemMap['sourceValue'];
43+
44+
const dataMap: IPerinatal = { key, sipPlus, tipoMatch: tipo };
45+
46+
if (tipo.includes('snomed')) {
47+
dataMap.concepto = elemMap['sourceValue']['concepto'];
48+
49+
if (elemMap['sourceValue']['valor']) {
50+
dataMap.sipPlus.valor = elemMap['targetValue']['valor'];
4451
}
45-
});
4652

53+
if (elemMap['targetValue']['extra']) {
54+
dataMap.sipPlus.extra = elemMap['targetValue']['extra'];
55+
}
56+
}
57+
return dataMap;
4758
} catch (error) {
48-
log.error('getMatching:error',source, error, fakeRequest);
59+
log.error('createDataMap:error', { elemMap, tipo }, error, fakeRequest);
60+
return null;
4961
}
50-
return [];
5162
}

sip-plus-perinatal/service/organizacion.ts

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,14 @@ export async function getOrganizacionAndes(idOrganizacion) {
1212
Authorization: `JWT ${ANDES_KEY}`
1313
}
1414
};
15+
1516
try {
16-
let response = await fetch(url, options);
17-
try {
18-
const responseJson = await response.json();
19-
return responseJson[0] || null;
20-
} catch (error) {
21-
log.error('getOrganizacionAndes:error', { idOrganizacion, options, response }, error, fakeRequest);
22-
}
23-
}
24-
catch (error) {
17+
const response = await fetch(url, options);
18+
const responseJson = await response.json();
19+
return responseJson[0] || null;
20+
} catch (error) {
2521
log.error('getOrganizacionAndes:error', { idOrganizacion, options }, error, fakeRequest);
22+
return null;
2623
}
2724

2825
}

sip-plus-perinatal/service/paciente.ts

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,24 @@ export async function getPaciente(idPaciente) {
1313
}
1414
};
1515
try {
16-
let response = await fetch(url, options);
17-
try {
18-
const responseJson = await response.json();
19-
if (responseJson._id) {
20-
return responseJson;
21-
} else {
22-
return null;
23-
}
24-
}catch (error) {
25-
log.error('getPaciente:error', { idPaciente, options, response }, error, fakeRequest);
16+
const response = await fetch(url, options);
17+
18+
if (!response.ok) {
19+
throw new Error(`HTTP ${response.status} - ${response.statusText}`);
2620
}
27-
}
28-
catch (error) {
29-
log.error('getPaciente:error', { idPaciente, options }, error, fakeRequest);
21+
22+
const responseJson = await response.json();
23+
24+
return responseJson?._id ? responseJson : null;
25+
26+
} catch (error) {
27+
log.error(
28+
'getPaciente:error',
29+
{ idPaciente, options, url },
30+
error,
31+
fakeRequest
32+
);
33+
return null;
3034
}
3135

3236
}

sip-plus-perinatal/service/sip-plus.ts

Lines changed: 33 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -31,37 +31,37 @@ const options = (method = 'GET', body = null) => {
3131

3232
export async function getPacienteSP(paciente: any) {
3333
const documento = paciente.documento || '';
34-
if (documento) {
35-
try {
36-
let response = await fetch(`${url}${documento}`, options('GET'));
37-
try {
38-
if (response.status >= 200 && response.status < 300) {
39-
let responseJson = await response.json();
40-
41-
const keyResponse = Object.keys(responseJson).length || null;
42-
if (keyResponse) {
43-
return { paciente: responseJson };
44-
}
45-
else {
46-
return { paciente: null };
47-
48-
}
49-
}
50-
if (response.status === 404) {
51-
// paciente no encontrado
52-
return { paciente: null };
34+
if (!documento) {
35+
return { paciente: null };
36+
}
5337

54-
}
55-
} catch (error) {
56-
log.error('getPacienteSP:error', { paciente, response }, error, fakeRequest);
57-
return null;
38+
try {
39+
const response = await fetch(`${url}${documento}`, options('GET'));
40+
41+
if (!response.ok) {
42+
if (response.status === 404) {
43+
// Paciente no encontrado
44+
return { paciente: null };
5845
}
5946

60-
} catch (error) {
61-
log.error('getPacienteSP:error', { paciente }, error, fakeRequest);
47+
throw new Error(`HTTP ${response.status}`);
6248
}
49+
50+
const responseJson = await response.json();
51+
52+
return responseJson && Object.keys(responseJson).length
53+
? { paciente: responseJson }
54+
: { paciente: null };
55+
56+
} catch (error) {
57+
log.error(
58+
'getPacienteSP:error',
59+
{ documento, url },
60+
error,
61+
fakeRequest
62+
);
63+
return { paciente: null };
6364
}
64-
return null;
6565
}
6666

6767
export async function postPacienteSP(documento: string = '', pacienteSP) {
@@ -70,19 +70,18 @@ export async function postPacienteSP(documento: string = '', pacienteSP) {
7070
const body = JSON.stringify(pacienteSP);
7171
let optionsPost: any = options('POST', body);
7272
let response: any = await fetch(`${url}${documento}`, optionsPost);
73-
try {
74-
if (response.status >= 200 && response.status < 300) {
75-
return { paciente: optionsPost.body };
76-
}
73+
74+
if (!response.ok) {
7775
if (response.status === 404) {
78-
// paciente no encontrado
76+
// Paciente no encontrado
7977
return { paciente: null };
8078
}
81-
} catch (error) {
82-
log.error('postPacienteSP:error', { pacienteSP, response }, error, fakeRequest);
83-
return null;
79+
80+
throw new Error(`HTTP ${response.status}`);
8481
}
8582

83+
return { paciente: optionsPost.body };
84+
8685
} catch (error) {
8786
log.error('postPacienteSP:error', { pacienteSP }, error, fakeRequest);
8887
}

0 commit comments

Comments
 (0)