Wondering what’s next for npm?Check out our public roadmap! »

    isncsci

    2.0.2 • Public • Published

    ISNCSCI Algorithm

    This algorithm is designed to produce a spinal cord injury classification consistent with the International Standards for Neurological Classification of Spinal Cord Injury developed and maintained by the American Spinal Injury Association (ASIA).

    Table of Contents

    Import library

    Using on a browser (unpkg)

    <!-- using IIFE -->
    <!-- defines ISNCSCI on window object -->
    <script src="https://unpkg.com/isncsci/iife/ISNCSCI.min.js"></script>
    
    <!-- using ES module -->
    <script type="module">
      // using default import
      import ISNCSCI from "https://unpkg.com/isncsci/esm/ISNCSCI.min.js"
      // using named import
      import { ISNCSCI } from "https://unpkg.com/isncsci/esm/ISNCSCI.min.js"
    </script>

    Using in JavaScript projects

    Install library using NPM

    npm i isncsci
    

    Then import the library in your project

    Named import

    // Recommended with typescript
    import { ISNCSCI, Exam } from 'isncsci';

    Default import

    import ISNCSCI from 'isncsci';

    CommonJS

    const { ISNCSCI } = require("isncsci");
    // or
    const ISNCSCI = require("isncsci").ISNCSCI;

    Usage

    To get a classification and the totals, you just need pass an exam as a parameter while using the ISNCSCI constructor. Interface for exam parameter can be found below.

    Below is an example in TypeScript:

    // create exam
    let exam: Exam = {
      deepAnalPressure: "Yes",
      voluntaryAnalContraction: "Yes",
      right: {
        lowestNonKeyMuscleWithMotorFunction: "C8",
        motor: {
          C5: "5",
          /* ... */
          S1: "2*",
        },
        lightTouch: {
          C2: "2",
          /* ... */
          S4_5: "1*",
        },
        pinPrick: {
          C2: "1**",
          /* ... */
          S4_5: "0",
        }
      },
      left: {
        motor: { /* ... */ },
        lightTouch: { /* ... */ },
        pinPrick: { /* ... */ },
      },
    }
    
    // get result
    let result = new ISNCSCI(exam);
    
    // output classification result
    console.log(result.classification);
    
    // output totals result
    console.log(result.totals);

    Interfaces

    Following shows the interfaces associated to Exam used for ISNCSCI constructor.

    interface Exam {
      right: ExamSide;
      left: ExamSide;
      voluntaryAnalContraction: BinaryObservation;
      deepAnalPressure: BinaryObservation;
    }
    
    interface ExamSide {
      motor: Motor;
      lightTouch: Sensory;
      pinPrick: Sensory;
      lowestNonKeyMuscleWithMotorFunction?: MotorLevel;
    }
    
    interface Motor {
      C5: MotorMuscleValue;
      C6: MotorMuscleValue;
      C7: MotorMuscleValue;
      C8: MotorMuscleValue;
      T1: MotorMuscleValue;
      L2: MotorMuscleValue;
      L3: MotorMuscleValue;
      L4: MotorMuscleValue;
      L5: MotorMuscleValue;
      S1: MotorMuscleValue;
    }
    
    interface Sensory {
      C2: SensoryPointValue;
      C3: SensoryPointValue;
      C4: SensoryPointValue;
      C5: SensoryPointValue;
      C6: SensoryPointValue;
      C7: SensoryPointValue;
      C8: SensoryPointValue;
      T1: SensoryPointValue;
      T2: SensoryPointValue;
      T3: SensoryPointValue;
      T4: SensoryPointValue;
      T5: SensoryPointValue;
      T6: SensoryPointValue;
      T7: SensoryPointValue;
      T8: SensoryPointValue;
      T9: SensoryPointValue;
      T10: SensoryPointValue;
      T11: SensoryPointValue;
      T12: SensoryPointValue;
      L1: SensoryPointValue;
      L2: SensoryPointValue;
      L3: SensoryPointValue;
      L4: SensoryPointValue;
      L5: SensoryPointValue;
      S1: SensoryPointValue;
      S2: SensoryPointValue;
      S3: SensoryPointValue;
      S4_5: SensoryPointValue;
    }

    Values

    Here lists the valid values for interfaces above.

    Tagged values represents impairment due to non-SCI injury. Single star (*) represents consider not normal for classification. Double star (**) represents consider normal for classification.

    type BinaryObservation = 'Yes' | 'No' | 'NT';
    
    type MotorLevel =
      'C5' | 'C6' | 'C7' | 'C8' | 'T1' |
      'L2' | 'L3' | 'L4' | 'L5' | 'S1';
    
    type MotorMuscleValue =
      '0' | '1' | '2' | '3' | '4' | '5' |
      '0*' | '1*' | '2*' | '3*' | '4*' |
      '0**' | '1**' | '2**' | '3**' | '4**' |
      'NT' | 'NT*' | 'NT**';
    
    type SensoryPointValue =
      '0' | '1' | '2' |
      '0*' | '1*' |
      '0**' | '1**' |
      'NT' | 'NT*' | 'NT**';

    Demo

    Demo files that can be used as examples are found in the demo folder.

    You run *.spec.* tests using npx jest demo command. You can view the test for *.html file by opening it on any modern browser that supports ES modules.

    • demo/cjs.spec.js: demo using CommonJS syntax
    • demo/esm.spec.ts: demo using ES module and TypeScript syntax
    • demo/iife-and-esm.html: demo using ES module and IIFE on the browser

    Install

    npm i isncsci

    DownloadsWeekly Downloads

    7

    Version

    2.0.2

    License

    Apache-2.0

    Unpacked Size

    613 kB

    Total Files

    76

    Last publish

    Collaborators

    • avatar