Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@arkhn/fhir.ts

Package Overview
Dependencies
Maintainers
3
Versions
14
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@arkhn/fhir.ts - npm Package Compare versions

Comparing version 2.0.1 to 3.0.0

6

lib/attribute.d.ts

@@ -11,9 +11,9 @@ import { AttributeDefinition } from './types';

types: string[];
isArray: boolean;
isSlice: boolean;
isItem: boolean;
isRequired: boolean;
isPrimitive: boolean;
index?: number;
constructor(definition: AttributeDefinition);
get isRequired(): boolean;
get isArray(): boolean;
get isReferenceType(): boolean;

@@ -26,3 +26,3 @@ get tail(): string;

addSlice(slice: Attribute): void;
addItem(item: Attribute, index?: number): void;
addItem(index?: number): Attribute;
removeItem(item: Attribute): void;

@@ -29,0 +29,0 @@ toJSON(): this & {

@@ -45,9 +45,7 @@ "use strict";

this.items = [];
this.definition = definition;
this.definition = JSON.parse(JSON.stringify(definition));
this.id = definition.id.split('.').pop();
this.name = definition.path.split('.').pop();
this.isArray = definition.max === '*' || Number(definition.max) > 1;
this.isSlice = !!definition.sliceName;
this.isItem = false;
this.isRequired = definition.min > 0;
this.types = definition.type

@@ -63,2 +61,16 @@ ? definition.type.map(function (type) { return type.code; })

}
Object.defineProperty(Attribute.prototype, "isRequired", {
get: function () {
return this.definition.min > 0;
},
enumerable: true,
configurable: true
});
Object.defineProperty(Attribute.prototype, "isArray", {
get: function () {
return this.definition.max === '*' || Number(this.definition.max) > 1;
},
enumerable: true,
configurable: true
});
Object.defineProperty(Attribute.prototype, "isReferenceType", {

@@ -104,14 +116,9 @@ get: function () {

var attr = new Attribute(serialized.definition);
for (var _i = 0, _a = serialized.children; _i < _a.length; _i++) {
var child = _a[_i];
attr.addChild(Attribute.from(child));
}
for (var _b = 0, _c = serialized.slices; _b < _c.length; _b++) {
var slice = _c[_b];
attr.addSlice(Attribute.from(slice));
}
for (var _d = 0, _e = serialized.items; _d < _e.length; _d++) {
var item = _e[_d];
attr.addItem(Attribute.from(item));
}
serialized.children.forEach(function (child) {
return attr.addChild(Attribute.from(child));
});
serialized.slices.forEach(function (slice) {
return attr.addSlice(Attribute.from(slice));
});
serialized.items.forEach(function () { return attr.addItem(); });
return attr;

@@ -153,3 +160,3 @@ };

// If the added item has slices, we must pass along the item's index.
Attribute.prototype.addItem = function (item, index) {
Attribute.prototype.addItem = function (index) {
var _this = this;

@@ -169,2 +176,7 @@ var computeIndex = function () {

};
if (!this.isArray) {
throw new Error("trying to add an item to a non-array attribute");
}
var item = Attribute.from(this);
item.definition.max = '1';
item.parent = this.parent;

@@ -178,2 +190,3 @@ item.isItem = true;

this.items.push(item);
return item;
};

@@ -180,0 +193,0 @@ // removeItem simply removes an attribute from the list of items.

{
"name": "@arkhn/fhir.ts",
"private": false,
"version": "2.0.1",
"version": "3.0.0",
"description": "Open source typescript library providing FHIR utilities",

@@ -6,0 +6,0 @@ "main": "lib/index.js",

import { Attribute } from 'attribute'
import { AttributeDefinition } from 'types'
import { notDeepEqual } from 'assert'
const observationIdentifierDefinition: AttributeDefinition = {
id: 'Observation.identifier',
path: 'Observation.identifier',
definition: 'identifier',
min: 0,
max: '*',
base: {
path: 'Observation.identifier',
},
type: [
{
code: 'string',
},
],
}
const observationCodeDefinition: AttributeDefinition = {

@@ -19,12 +34,2 @@ id: 'Observation.code',

],
constraint: [
{
key: 'ele-1',
severity: 'error',
human: 'All FHIR elements must have a @value or children',
expression: 'hasValue() or (children().count() > id.count())',
xpath: '@value|f:*|h:div',
source: 'http://hl7.org/fhir/StructureDefinition/Element',
},
],
}

@@ -105,12 +110,2 @@

},
"constraint": Array [
Object {
"expression": "hasValue() or (children().count() > id.count())",
"human": "All FHIR elements must have a @value or children",
"key": "ele-1",
"severity": "error",
"source": "http://hl7.org/fhir/StructureDefinition/Element",
"xpath": "@value|f:*|h:div",
},
],
"definition": "Heart Rate.",

@@ -128,6 +123,4 @@ "id": "Observation.code",

"id": "code",
"isArray": false,
"isItem": false,
"isPrimitive": false,
"isRequired": true,
"isSlice": false,

@@ -164,7 +157,4 @@ "items": Array [],

const child2 = new Attribute(observationIdDefinition)
const child3 = new Attribute(observationIdDefinition)
const child3 = new Attribute(observationIdentifierDefinition)
const item1 = new Attribute(observationIdDefinition)
const item2 = new Attribute(observationIdDefinition)
const slice = new Attribute(observationCategorySliceDefinition)

@@ -184,4 +174,4 @@ const sliceChild1 = new Attribute(observationIdDefinition)

child3.addSlice(slice)
child3.addItem(item1)
child3.addItem(item2)
child3.addItem()
child3.addItem()

@@ -200,6 +190,6 @@ const copied = Attribute.from(parent)

it('adds an index when attribute is an array item', () => {
const parent = new Attribute(observationCodeDefinition)
const attr = new Attribute(observationIdDefinition)
parent.addItem(attr)
expect(attr.tail).toEqual('id[0]')
const array = new Attribute(observationIdentifierDefinition)
const item = array.addItem()
expect(item.tail).toEqual('identifier[0]')
})

@@ -213,6 +203,6 @@

it('handles slice array item', () => {
const parent = new Attribute(observationCodeDefinition)
const item = new Attribute(observationCodeDefinition)
const array = new Attribute(observationIdentifierDefinition)
const slice = new Attribute(observationCategorySliceDefinition)
parent.addItem(item)
const item = array.addItem()
item.addSlice(slice)

@@ -301,6 +291,5 @@ expect(slice.tail).toEqual('category[0]')

it('handles slice items', () => {
const array = new Attribute(observationCodeDefinition)
const item = new Attribute(observationIdDefinition)
const array = new Attribute(observationIdentifierDefinition)
const slice = new Attribute(observationValueSliceDefinition)
array.addItem(item)
const item = array.addItem()
item.addSlice(slice)

@@ -316,6 +305,12 @@

describe('addItem', () => {
it('throws if the attribute is not an array', () => {
const notArray = new Attribute(observationCodeDefinition)
expect(() => notArray.addItem()).toThrowError(
'trying to add an item to a non-array attribute',
)
})
it('adds an item with and index and update the parent', () => {
const array = new Attribute(observationCodeDefinition)
const item = new Attribute(observationIdDefinition)
array.addItem(item)
const array = new Attribute(observationIdentifierDefinition)
const item = array.addItem()

@@ -328,11 +323,10 @@ expect(array.items).toEqual([item])

it('forwards the index to the slices if any', () => {
const array = new Attribute(observationCodeDefinition)
const item = new Attribute(observationIdDefinition)
const array = new Attribute(observationIdentifierDefinition)
const slice1 = new Attribute(observationValueSliceDefinition)
const slice2 = new Attribute(observationValueSliceDefinition)
const item = array.addItem()
item.addSlice(slice1)
item.addSlice(slice2)
array.addItem(item)
expect(slice1.isItem).toBe(true)

@@ -345,6 +339,5 @@ expect(slice1.index).toEqual(item.index)

it('accepts an optional index', () => {
const array = new Attribute(observationCodeDefinition)
const item = new Attribute(observationIdDefinition)
const array = new Attribute(observationIdentifierDefinition)
const item = array.addItem(42)
array.addItem(item, 42)
expect(item.isItem).toBe(true)

@@ -355,12 +348,8 @@ expect(item.index).toEqual(42)

it('computes the index', () => {
const array = new Attribute(observationCodeDefinition)
const item1 = new Attribute(observationIdDefinition)
const item2 = new Attribute(observationIdDefinition)
const item3 = new Attribute(observationIdDefinition)
const item4 = new Attribute(observationIdDefinition)
const array = new Attribute(observationIdentifierDefinition)
const item1 = array.addItem(42)
const item2 = array.addItem(1)
const item3 = array.addItem()
const item4 = array.addItem()
array.addItem(item1, 42)
array.addItem(item2, 1)
array.addItem(item3)
array.addItem(item4)
expect(item1.index).toEqual(42)

@@ -371,3 +360,3 @@ expect(item2.index).toEqual(1)

expect(() => array.addItem(item1, 1)).toThrowError(
expect(() => array.addItem(1)).toThrowError(
'item with index 1 already exists',

@@ -380,11 +369,7 @@ )

it('removes an item from the array', () => {
const array = new Attribute(observationCodeDefinition)
const item1 = new Attribute(observationIdDefinition)
const item2 = new Attribute(observationIdDefinition)
const item3 = new Attribute(observationIdDefinition)
const array = new Attribute(observationIdentifierDefinition)
const item1 = array.addItem()
const item2 = array.addItem()
const item3 = array.addItem()
array.addItem(item1)
array.addItem(item2)
array.addItem(item3)
array.removeItem(item2)

@@ -391,0 +376,0 @@

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc