FHIR / FHIR/GoFSH

Error: Could not process ValueSet at node_modules/kbv.basis/KBV_VS_Base_Diagnosis_SNOMED_CT.json: Maximum call stack size exceeded

Abierto
#283 0 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
TypeScript
Estrellas
40
Forks
7
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

I tried running

```
npm install gofsh
npm --registry https://packages.simplifier.net install kbv.basis@1.3.0
node node_modules/.bin/gofsh node_modules/kbv.basis/ --out gofish_output --dependency de.basisprofil.r4@1.3.2
```

This produces an error
```
...
info Processed 10 of 40 ValueSets...
error Could not process ValueSet at node_modules/kbv.basis/KBV_VS_Base_Diagnosis_SNOMED_CT.json: Maximum call stack size exceeded
info Processed 15 of 40 ValueSets...
...
```

Turns out the problem lies in this line

https://github.com/FHIR/GoFSH/blob/9895cdcba8f90ef2357d6cbfefb386bc4773d4ef/src/processor/ValueSetProcessor.ts#L44-L47

The size of an array that can be destructured into an argument list is limited by JavaScript. In my case the array has 466433 elements. Try it yourself in a node REPL.

```
[].push(...Array.from({ length: 400_000 }))
```

You will get a `RangeError: Maximum call stack size exceeded` because it cannot handle a function call with 400k arguments. Fortunately the fix for this is straight forward by not using Array.push:

```ts
const newRules: ExportableValueSet['rules'] = [
...CaretValueRuleExtractor.processResource(input, fisher, input.resourceType, config)
];
```

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.