ecg-dicom-web-viewer
Version:
Together with the cornerstone library, this project allows reading and drawing ECGs from a dcm in web version.
91 lines (73 loc) • 3.79 kB
Markdown
# ecg-dicom-web-viewer
This library allows viewing an ECG file in DICOM format in web view. </br>
- NPM: https://www.npmjs.com/package/ecg-dicom-web-viewer
## Installation
This module is distributed via [npm][npm-url] which is bundled with [node][node] and
should be installed as one of your project's `dependencies`:
```js
// To install the newest version
npm install --save ecg-dicom-web-viewer
```
## Example
1. Once installed import the project.
```js
// Import
import {
ReadECG, //Optional.
SOP_CLASS_UIDS, //Optional.
WAVE_FORM_BITS_STORED, //Optional.
KEY_UNIT_INFO, //Optional.
SPLINE, //Optional.
DicomECGViewer, //Principal.
} from "ecg-dicom-web-viewer";
```
2. Instantiate the new class with the necessary data and create the view.
```js
//Load view:
let viewer = new DicomECGViewer(
byteArray, //Data array ECG (XMLHttpRequest response array or...local open data)
divView, //Div where to draw the view
viewportIndex //View number, since you can have several views.
);
viewer.loadCanvas(); // Load canvas view.
```
## Result
<img src="https://github-production-user-asset-6210df.s3.amazonaws.com/86238895/247515793-53009cc0-8aa8-4e91-bfb1-95ee89ff3d94.png"/>
## Documentation
Currently it works:</br>
<ul>
<li><strong>Sop12LeadECGWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.1.1', --> YES</strong></li>
<li><strong>GeneralECGWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.1.2', --> YES</strong></li>
<li><strong>AmbulatoryECGWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.1.3', --> YES</strong></li>
<li><strong>HemodynamicWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.2.1', --> YES</strong></li>
<li><strong>CardiacElectrophysiologyWaveformStorage: '1.2.840.10008.5.1.4.1.1.9.2.1', --> YES</strong></li>
</ul>
The next available classes are as follows:
<li><strong>Class DicomECGViewer</strong></li>
<h6> - <strong>constructor(dataDICOMarrayBuffer, idView, nameView)</strong></h4>
<p><strong>dataDICOMarrayBuffer</strong> DICOM DCM ECG Array Buffer.</p>
<p><strong>idView</strong> Draw ID View. Recomended a div.</p>
<p><strong>nameView</strong> Identifier of the view you want to put, in case you have several views, default 0.</p>
<h6> - <strong>loadCanvas()</strong></h4>
<p>Main method, draws the canvas and its entire view.</p>
<li><strong>Class ReadECG</strong></li>
<h6> - <strong>ReadECG(this.dataDICOMarrayBuffer, '', opts)</strong></h4>
<p>Receives a dataSet data structure and returns a readable array.</p>
<p><strong>opts</strong>speed: 25, amplitude: 10, applyLowPassFilter: true</p>
<h6> - <strong>getWaveform()</strong></h4>
<p>Read the arraydicombuffer and return legible data.</p>
<h6> - <strong>getInfo()</strong></h4>
<p>Read the arraydicombuffer and return information data, example: BPM, Name, Duration ECG...</p>
<li><strong>Static Constants</strong></li>
<p>SOP_CLASS_UIDS - SOP UID of ECG types and graph measurements.</p>
<p>WAVE_FORM_BITS_STORED - Accuracy and quality of the recorded signal.</p>
<p>KEY_UNIT_INFO - These are the data to be displayed/read from the ECG. Example: QTC INTERVAL, QRS AXIS, P DURATION etc...</p>
<p>SPLINE - Generates interpolation in the ECG view with a spline, enabled by default, may affect performance.</p>
<li><strong>Class GenericCanvas</strong></li>
<p>It is the generic class for the canvas, it contains the values of the number of views, canvas size, rows, columns, grid size...</p>
<li><strong>Class DrawECGCanvas extends GenericCanvas</strong></li>
<p>This class renders the data, both the grid and the view, it also contains the button events.</p>
## Features
<ul>
<li><strong>Improve canvas scrolling performance.</strong></li>
</ul>