From 5fc3536185c4f9f80613a41264861b851126d4bf Mon Sep 17 00:00:00 2001 From: ruben Date: Wed, 15 Apr 2020 00:10:19 +0200 Subject: [PATCH 1/4] feat(viewpatient): added labs tab to ViewPatient A patient can see all his requests for labs in the Labs tab fix #1972 --- package.json | 1 + src/__tests__/patients/labs/LabsTab.test.tsx | 88 +++++++++++++++++++ .../patients/view/ViewPatient.test.tsx | 29 +++++- src/clients/db/LabRepository.ts | 12 +++ .../enUs/translations/patient/index.ts | 8 ++ src/patients/labs/LabsTab.tsx | 66 ++++++++++++++ src/patients/view/ViewPatient.tsx | 9 ++ 7 files changed, 211 insertions(+), 2 deletions(-) create mode 100644 src/__tests__/patients/labs/LabsTab.test.tsx create mode 100644 src/patients/labs/LabsTab.tsx diff --git a/package.json b/package.json index c23dd474ec..f6c25dba30 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,7 @@ "dependencies": { "@hospitalrun/components": "^1.3.0", "@reduxjs/toolkit": "~1.3.0", + "@types/escape-string-regexp": "~2.0.1", "@types/pouchdb-find": "~6.3.4", "bootstrap": "~4.4.1", "date-fns": "~2.12.0", diff --git a/src/__tests__/patients/labs/LabsTab.test.tsx b/src/__tests__/patients/labs/LabsTab.test.tsx new file mode 100644 index 0000000000..69544b83ad --- /dev/null +++ b/src/__tests__/patients/labs/LabsTab.test.tsx @@ -0,0 +1,88 @@ +import '../../../__mocks__/matchMediaMock' +import React from 'react' +import configureMockStore from 'redux-mock-store' +import thunk from 'redux-thunk' +import { mount } from 'enzyme' +import { createMemoryHistory } from 'history' +import { Router } from 'react-router' +import { Provider } from 'react-redux' +import * as components from '@hospitalrun/components' +import format from 'date-fns/format' +import { act } from 'react-dom/test-utils' +import LabsTab from '../../../patients/labs/LabsTab' +import Patient from '../../../model/Patient' +import Lab from '../../../model/Lab' +import Permissions from '../../../model/Permissions' +import LabRepository from '../../../clients/db/LabRepository' + +const expectedPatient = { + id: '123', + labs: [ + { + patientId: '123', + type: 'type', + status: 'requested', + requestedOn: new Date().toISOString(), + } as Lab, + ], +} as Patient + +const mockStore = configureMockStore([thunk]) +const history = createMemoryHistory() + +let user: any +let store: any + +const setup = (patient = expectedPatient, permissions = [Permissions.WritePatients]) => { + user = { permissions } + store = mockStore({ patient, user }) + jest.spyOn(LabRepository, 'findLabsByPatientId').mockResolvedValue(expectedPatient.labs as Lab[]) + const wrapper = mount( + + + + + , + ) + + return wrapper +} + +describe('Labs Tab', () => { + it('should list the patients labs', async () => { + const expectedLabs = expectedPatient.labs as Lab[] + let wrapper: any + await act(async () => { + wrapper = await setup() + }) + wrapper.update() + + const table = wrapper.find('table') + const tableHeader = wrapper.find('thead') + const tableHeaders = wrapper.find('th') + const tableBody = wrapper.find('tbody') + const tableData = wrapper.find('td') + + expect(table).toHaveLength(1) + expect(tableHeader).toHaveLength(1) + expect(tableBody).toHaveLength(1) + expect(tableHeaders.at(0).text()).toEqual('labs.lab.type') + expect(tableHeaders.at(1).text()).toEqual('labs.lab.requestedOn') + expect(tableHeaders.at(2).text()).toEqual('labs.lab.status') + expect(tableData.at(0).text()).toEqual(expectedLabs[0].type) + expect(tableData.at(1).text()).toEqual( + format(new Date(expectedLabs[0].requestedOn), 'yyyy-MM-dd hh:mm a'), + ) + expect(tableData.at(2).text()).toEqual(expectedLabs[0].status) + }) + + it('should render a warning message if the patient does not have any labs', () => { + const wrapper = setup({ ...expectedPatient, labs: [] }) + + const alert = wrapper.find(components.Alert) + + expect(alert).toHaveLength(1) + expect(alert.prop('title')).toEqual('patient.labs.warning.noLabs') + expect(alert.prop('message')).toEqual('patient.labs.noLabsMessage') + }) +}) diff --git a/src/__tests__/patients/view/ViewPatient.test.tsx b/src/__tests__/patients/view/ViewPatient.test.tsx index e24c07fcdf..ab93996c45 100644 --- a/src/__tests__/patients/view/ViewPatient.test.tsx +++ b/src/__tests__/patients/view/ViewPatient.test.tsx @@ -21,6 +21,7 @@ import * as titleUtil from '../../../page-header/useTitle' import ViewPatient from '../../../patients/view/ViewPatient' import * as patientSlice from '../../../patients/patient-slice' import Permissions from '../../../model/Permissions' +import LabsTab from '../../../patients/labs/LabsTab' const mockStore = configureMockStore([thunk]) @@ -49,7 +50,6 @@ describe('ViewPatient', () => { jest.spyOn(PatientRepository, 'find') const mockedPatientRepository = mocked(PatientRepository, true) mockedPatientRepository.find.mockResolvedValue(patient) - history = createMemoryHistory() store = mockStore({ patient: { patient }, @@ -127,13 +127,14 @@ describe('ViewPatient', () => { const tabs = tabsHeader.find(Tab) expect(tabsHeader).toHaveLength(1) - expect(tabs).toHaveLength(6) + expect(tabs).toHaveLength(7) expect(tabs.at(0).prop('label')).toEqual('patient.generalInformation') expect(tabs.at(1).prop('label')).toEqual('patient.relatedPersons.label') expect(tabs.at(2).prop('label')).toEqual('scheduling.appointments.label') expect(tabs.at(3).prop('label')).toEqual('patient.allergies.label') expect(tabs.at(4).prop('label')).toEqual('patient.diagnoses.label') expect(tabs.at(5).prop('label')).toEqual('patient.notes.label') + expect(tabs.at(6).prop('label')).toEqual('patient.labs.label') }) it('should mark the general information tab as active and render the general information component when route is /patients/:id', async () => { @@ -262,4 +263,28 @@ describe('ViewPatient', () => { expect(notesTab).toHaveLength(1) expect(notesTab.prop('patient')).toEqual(patient) }) + + it('should mark the labs tab as active when it is clicked and render the lab component when route is /patients/:id/labs', async () => { + let wrapper: any + await act(async () => { + wrapper = await setup() + }) + + await act(async () => { + const tabsHeader = wrapper.find(TabsHeader) + const tabs = tabsHeader.find(Tab) + tabs.at(6).prop('onClick')() + }) + + wrapper.update() + + const tabsHeader = wrapper.find(TabsHeader) + const tabs = tabsHeader.find(Tab) + const labsTab = wrapper.find(LabsTab) + + expect(history.location.pathname).toEqual(`/patients/${patient.id}/labs`) + expect(tabs.at(6).prop('active')).toBeTruthy() + expect(labsTab).toHaveLength(1) + expect(labsTab.prop('patientId')).toEqual(patient.id) + }) }) diff --git a/src/clients/db/LabRepository.ts b/src/clients/db/LabRepository.ts index 6ffbfdd6d3..bd89d04c29 100644 --- a/src/clients/db/LabRepository.ts +++ b/src/clients/db/LabRepository.ts @@ -9,6 +9,18 @@ export class LabRepository extends Repository { index: { fields: ['requestedOn'] }, }) } + + async findLabsByPatientId(patientId: string): Promise { + return super.search({ + selector: { + $and: [ + { + patientId, + }, + ], + }, + }) + } } export default new LabRepository() diff --git a/src/locales/enUs/translations/patient/index.ts b/src/locales/enUs/translations/patient/index.ts index dd39f9126e..6c0936de91 100644 --- a/src/locales/enUs/translations/patient/index.ts +++ b/src/locales/enUs/translations/patient/index.ts @@ -85,6 +85,14 @@ export default { }, addNoteAbove: 'Add a note using the button above.', }, + labs: { + label: 'Labs', + new: 'Add New Lab', + warning: { + noLabs: 'No Labs', + }, + noLabsMessage: 'No labs requests for this person.', + }, types: { charity: 'Charity', private: 'Private', diff --git a/src/patients/labs/LabsTab.tsx b/src/patients/labs/LabsTab.tsx new file mode 100644 index 0000000000..c71e6ef83e --- /dev/null +++ b/src/patients/labs/LabsTab.tsx @@ -0,0 +1,66 @@ +import React, { useEffect, useState } from 'react' +import { Alert } from '@hospitalrun/components' +import { useTranslation } from 'react-i18next' +import format from 'date-fns/format' +import { useHistory } from 'react-router' +import Lab from '../../model/Lab' +import LabRepository from '../../clients/db/LabRepository' + +interface Props { + patientId: string +} + +const LabsTab = (props: Props) => { + const history = useHistory() + const { patientId } = props + const { t } = useTranslation() + + const [labs, setLabs] = useState([]) + + useEffect(() => { + const fetch = async () => { + const fetchedLabs = await LabRepository.findLabsByPatientId(patientId) + setLabs(fetchedLabs) + } + + fetch() + }, [patientId]) + + const onTableRowClick = (lab: Lab) => { + history.push(`/labs/${lab.id}`) + } + + return ( +
+ {(!labs || labs.length === 0) && ( + + )} + {labs && labs.length > 0 && ( + + + + + + + + + + {labs.map((lab) => ( + onTableRowClick(lab)} key={lab.id}> + + + + + ))} + +
{t('labs.lab.type')}{t('labs.lab.requestedOn')}{t('labs.lab.status')}
{lab.type}{format(new Date(lab.requestedOn), 'yyyy-MM-dd hh:mm a')}{lab.status}
+ )} +
+ ) +} + +export default LabsTab diff --git a/src/patients/view/ViewPatient.tsx b/src/patients/view/ViewPatient.tsx index fab29a157c..6119142e0b 100644 --- a/src/patients/view/ViewPatient.tsx +++ b/src/patients/view/ViewPatient.tsx @@ -18,6 +18,7 @@ import RelatedPerson from '../related-persons/RelatedPersonTab' import useAddBreadcrumbs from '../../breadcrumbs/useAddBreadcrumbs' import AppointmentsList from '../appointments/AppointmentsList' import Note from '../notes/NoteTab' +import Labs from '../labs/LabsTab' const getPatientCode = (p: Patient): string => { if (p) { @@ -113,6 +114,11 @@ const ViewPatient = () => { label={t('patient.notes.label')} onClick={() => history.push(`/patients/${patient.id}/notes`)} /> + history.push(`/patients/${patient.id}/labs`)} + /> @@ -133,6 +139,9 @@ const ViewPatient = () => { + + + ) From c9bcd47d0e186076a0b08c17153ad7de1653986b Mon Sep 17 00:00:00 2001 From: ruben Date: Wed, 15 Apr 2020 00:10:19 +0200 Subject: [PATCH 2/4] feat(viewpatient): added labs tab to ViewPatient A patient can see all his requests for labs in the Labs tab fix #1972 --- package.json | 1 + report.20200502.130727.1352.0.001.json | 593 ++++++++++++++++++ src/__tests__/patients/labs/LabsTab.test.tsx | 88 +++ .../patients/view/ViewPatient.test.tsx | 29 +- .../appointments/new/NewAppointment.test.tsx | 3 + src/clients/db/LabRepository.ts | 12 + .../enUs/translations/patient/index.ts | 8 + src/patients/labs/LabsTab.tsx | 66 ++ src/patients/view/ViewPatient.tsx | 9 + 9 files changed, 807 insertions(+), 2 deletions(-) create mode 100644 report.20200502.130727.1352.0.001.json create mode 100644 src/__tests__/patients/labs/LabsTab.test.tsx create mode 100644 src/patients/labs/LabsTab.tsx diff --git a/package.json b/package.json index c23dd474ec..f6c25dba30 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,7 @@ "dependencies": { "@hospitalrun/components": "^1.3.0", "@reduxjs/toolkit": "~1.3.0", + "@types/escape-string-regexp": "~2.0.1", "@types/pouchdb-find": "~6.3.4", "bootstrap": "~4.4.1", "date-fns": "~2.12.0", diff --git a/report.20200502.130727.1352.0.001.json b/report.20200502.130727.1352.0.001.json new file mode 100644 index 0000000000..c4b7c039a9 --- /dev/null +++ b/report.20200502.130727.1352.0.001.json @@ -0,0 +1,593 @@ + +{ + "header": { + "event": "Allocation failed - JavaScript heap out of memory", + "trigger": "FatalError", + "filename": "report.20200502.130727.1352.0.001.json", + "dumpEventTime": "2020-05-02T13:07:27Z", + "dumpEventTimeStamp": "1588417647991", + "processId": 1352, + "cwd": "/Users/ruben/Projects/opensource/hospitalrun-frontend", + "commandLine": [ + "/usr/local/Cellar/node/11.14.0_1/bin/node", + "/Users/ruben/Projects/opensource/hospitalrun-frontend/node_modules/react-scripts/scripts/build.js" + ], + "nodejsVersion": "v11.14.0", + "wordSize": 64, + "arch": "x64", + "platform": "darwin", + "componentVersions": { + "node": "11.14.0", + "v8": "7.0.276.38-node.18", + "uv": "1.27.0", + "zlib": "1.2.11", + "brotli": "1.0.7", + "ares": "1.15.0", + "modules": "67", + "nghttp2": "1.37.0", + "napi": "4", + "llhttp": "1.1.1", + "http_parser": "2.8.0", + "openssl": "1.1.1b", + "cldr": "35.1", + "icu": "64.2", + "tz": "2019a", + "unicode": "12.1" + }, + "release": { + "name": "node", + "headersUrl": "https://nodejs.org/download/release/v11.14.0/node-v11.14.0-headers.tar.gz", + "sourceUrl": "https://nodejs.org/download/release/v11.14.0/node-v11.14.0.tar.gz" + }, + "osName": "Darwin", + "osRelease": "19.4.0", + "osVersion": "Darwin Kernel Version 19.4.0: Wed Mar 4 22:28:40 PST 2020; root:xnu-6153.101.6~15/RELEASE_X86_64", + "osMachine": "x86_64", + "host": "Rubens-MacBook-Pro.local" + }, + "javascriptStack": { + "message": "No stack.", + "stack": [ + "Unavailable." + ] + }, + "nativeStack": [ + { + "pc": "0x0000000100129f54", + "symbol": "report::TriggerNodeReport(v8::Isolate*, node::Environment*, char const*, char const*, std::__1::basic_string, std::__1::allocator > const&, v8::Local) [/usr/local/Cellar/node/11.14.0_1/bin/node]" + }, + { + "pc": "0x0000000100066b3c", + "symbol": "node::OnFatalError(char const*, char const*) [/usr/local/Cellar/node/11.14.0_1/bin/node]" + }, + { + "pc": "0x000000010018059b", + "symbol": "v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [/usr/local/Cellar/node/11.14.0_1/bin/node]" + }, + { + "pc": "0x000000010018053c", + "symbol": "v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/usr/local/Cellar/node/11.14.0_1/bin/node]" + }, + { + "pc": "0x00000001004439c4", + "symbol": "v8::internal::Heap::UpdateSurvivalStatistics(int) [/usr/local/Cellar/node/11.14.0_1/bin/node]" + }, + { + "pc": "0x000000010044544f", + "symbol": "v8::internal::Heap::CheckIneffectiveMarkCompact(unsigned long, double) [/usr/local/Cellar/node/11.14.0_1/bin/node]" + }, + { + "pc": "0x0000000100442d20", + "symbol": "v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [/usr/local/Cellar/node/11.14.0_1/bin/node]" + }, + { + "pc": "0x0000000100441aca", + "symbol": "v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/usr/local/Cellar/node/11.14.0_1/bin/node]" + }, + { + "pc": "0x0000000100449a38", + "symbol": "v8::internal::Heap::AllocateRawWithLightRetry(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/usr/local/Cellar/node/11.14.0_1/bin/node]" + }, + { + "pc": "0x0000000100449a84", + "symbol": "v8::internal::Heap::AllocateRawWithRetryOrFail(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/usr/local/Cellar/node/11.14.0_1/bin/node]" + }, + { + "pc": "0x000000010042a2fb", + "symbol": "v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationSpace) [/usr/local/Cellar/node/11.14.0_1/bin/node]" + }, + { + "pc": "0x0000000100608dc2", + "symbol": "v8::internal::Runtime_AllocateInNewSpace(int, v8::internal::Object**, v8::internal::Isolate*) [/usr/local/Cellar/node/11.14.0_1/bin/node]" + }, + { + "pc": "0x00002ef85214fc7d", + "symbol": "" + } + ], + "javascriptHeap": { + "totalMemory": 1519808512, + "totalCommittedMemory": 1512196664, + "usedMemory": 1426977216, + "availableMemory": 57657144, + "memoryLimit": 1526909922, + "heapSpaces": { + "read_only_space": { + "memorySize": 524288, + "committedMemory": 42224, + "capacity": 515584, + "used": 33520, + "available": 482064 + }, + "new_space": { + "memorySize": 33554432, + "committedMemory": 27183936, + "capacity": 16498688, + "used": 8260112, + "available": 8238576 + }, + "old_space": { + "memorySize": 1166217216, + "committedMemory": 1166122792, + "capacity": 1146295240, + "used": 1104268176, + "available": 42027064 + }, + "code_space": { + "memorySize": 8912896, + "committedMemory": 8417568, + "capacity": 7660160, + "used": 7660160, + "available": 0 + }, + "map_space": { + "memorySize": 6828032, + "committedMemory": 6658496, + "capacity": 4750960, + "used": 4750960, + "available": 0 + }, + "large_object_space": { + "memorySize": 303771648, + "committedMemory": 303771648, + "capacity": 308913728, + "used": 302004288, + "available": 6909440 + }, + "new_large_object_space": { + "memorySize": 0, + "committedMemory": 0, + "capacity": 0, + "used": 0, + "available": 0 + } + } + }, + "resourceUsage": { + "userCpuSeconds": 154.493, + "kernelCpuSeconds": 6.50323, + "cpuConsumptionPercent": 110.271, + "maxRss": 1637888294912, + "pageFaults": { + "IORequired": 93, + "IONotRequired": 1732061 + }, + "fsActivity": { + "reads": 0, + "writes": 0 + } + }, + "libuv": [ + ], + "environmentVariables": { + "npm_package_dependencies__reduxjs_toolkit": "~1.3.0", + "npm_package_dependencies_pouchdb": "~7.2.1", + "npm_package_devDependencies_lint_staged": "~10.2.0", + "npm_package_dependencies_redux": "~4.0.5", + "npm_package_devDependencies_prettier": "~2.0.4", + "npm_package_devDependencies__types_shortid": "^0.0.29", + "npm_package_devDependencies__types_pouchdb": "~6.4.0", + "NODE": "/usr/local/Cellar/node/11.14.0_1/bin/node", + "npm_config_version_git_tag": "true", + "npm_package_devDependencies__types_react_redux": "~7.1.5", + "INIT_CWD": "/Users/ruben/Projects/opensource/hospitalrun-frontend", + "npm_package_dependencies_react_i18next": "~11.4.0", + "npm_package_devDependencies_jest": "~24.9.0", + "npm_package_scripts_commitlint": "commitlint", + "TERM": "xterm-256color", + "SHELL": "/bin/zsh", + "npm_package_devDependencies_eslint_plugin_jest": "~23.8.0", + "TMPDIR": "/var/folders/v3/hbv0sfr919d23wvvqt6hn63r0000gn/T/", + "npm_config_init_license": "MIT", + "npm_package_dependencies_react_bootstrap": "~1.0.0-beta.16", + "npm_package_scripts_lint": "eslint \"src/**/*.{js,jsx,ts,tsx}\"", + "npm_package_dependencies__hospitalrun_components": "^1.3.0", + "npm_package_dependencies_uuid": "^8.0.0", + "npm_package_scripts_prepublishOnly": "npm run build", + "ZDOTDIR": "", + "npm_package_scripts_test_ci": "cross-env CI=true react-scripts test --passWithNoTests", + "npm_package_config_commitizen_path": "./node_modules/cz-conventional-changelog", + "npm_config_registry": "https://registry.yarnpkg.com", + "npm_package_private": "false", + "npm_package_scripts_analyze": "source-map-explorer 'build/static/js/*.js'", + "npm_package_dependencies_react_dom": "~16.13.0", + "npm_package_repository_url": "https://github.com/HospitalRun/hospitalrun-frontend.git", + "npm_package_devDependencies_commitizen": "~4.0.3", + "npm_package_dependencies_escape_string_regexp": "~4.0.0", + "npm_package_devDependencies_eslint_plugin_jsx_a11y": "~6.2.3", + "npm_package_readmeFilename": "README.md", + "__INTELLIJ_COMMAND_HISTFILE__": "/Users/ruben/Library/Preferences/IntelliJIdea2019.2/terminal/history/history-5", + "npm_package_description": "React frontend for HospitalRun", + "npm_package_dependencies__types_pouchdb_find": "~6.3.4", + "npm_package_devDependencies__testing_library_react": "~10.0.0", + "USER": "ruben", + "npm_package_license": "MIT", + "npm_package_devDependencies__types_react": "~16.9.17", + "npm_package_devDependencies_enzyme_adapter_react_16": "~1.15.2", + "npm_package_devDependencies_history": "~4.10.1", + "npm_package_browserslist_development_1": "last 1 firefox version", + "npm_package_devDependencies_redux_mock_store": "~1.5.4", + "npm_package_browserslist_development_0": "last 1 chrome version", + "npm_package_dependencies_i18next_browser_languagedetector": "~4.1.0", + "npm_package_dependencies_lodash": "^4.17.15", + "npm_package_dependencies_pouchdb_adapter_memory": "~7.2.1", + "SSH_AUTH_SOCK": "/private/tmp/com.apple.launchd.zyMDzkDgsh/Listeners", + "npm_package_dependencies__types_escape_string_regexp": "~2.0.1", + "npm_package_dependencies_react_bootstrap_typeahead": "~4.2.0", + "npm_package_devDependencies__types_jest": "~25.2.0", + "npm_package_devDependencies_eslint": "~6.8.0", + "npm_package_browserslist_development_2": "last 1 safari version", + "__CF_USER_TEXT_ENCODING": "0x1F5:0x0:0x0", + "npm_package_devDependencies__typescript_eslint_eslint_plugin": "~2.30.0", + "npm_package_husky_hooks_pre_commit": "npm run lint-staged", + "npm_execpath": "/usr/local/lib/node_modules/yarn/bin/yarn.js", + "LOGIN_SHELL": "1", + "npm_package_dependencies_react_redux": "~7.2.0", + "npm_package_author_name": "Jack Meyer", + "npm_package_devDependencies__types_react_dom": "~16.9.4", + "npm_package_devDependencies_eslint_plugin_prettier": "~3.1.2", + "npm_package_devDependencies__typescript_eslint_parser": "~2.30.0", + "npm_package_scripts_commit": "npx git-cz", + "npm_package_scripts_lint_fix": "eslint \"src/**/*.{js,jsx,ts,tsx}\" --fix", + "npm_config_argv": "{\"remain\":[],\"cooked\":[\"run\",\"build\"],\"original\":[\"build\"]}", + "PATH": "/var/folders/v3/hbv0sfr919d23wvvqt6hn63r0000gn/T/yarn--1588417500947-0.3761723985599099:/Users/ruben/Projects/opensource/hospitalrun-frontend/node_modules/.bin:/Users/ruben/.config/yarn/link/node_modules/.bin:/usr/local/Cellar/node/11.14.0_1/libexec/lib/node_modules/npm/bin/node-gyp-bin:/usr/local/Cellar/node/11.14.0_1/lib/node_modules/npm/bin/node-gyp-bin:/usr/local/Cellar/node/11.14.0_1/bin/node_modules/npm/bin/node-gyp-bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/ruben/Projects/opensource/hospitalrun-frontend/node_modules/.bin", + "TERMINAL_EMULATOR": "JetBrains-JediTerm", + "npm_package_devDependencies_cz_conventional_changelog": "~3.1.0", + "npm_package_devDependencies_memdown": "~5.1.0", + "_": "/Users/ruben/Projects/opensource/hospitalrun-frontend/node_modules/.bin/react-scripts", + "npm_package_dependencies_redux_thunk": "~2.3.0", + "npm_package_dependencies_typescript": "~3.8.2", + "npm_package_devDependencies__testing_library_react_hooks": "~3.2.1", + "npm_package_devDependencies_ts_jest": "~24.3.0", + "npm_package_browserslist_production_1": "not dead", + "npm_package_dependencies_bootstrap": "~4.4.1", + "npm_package_devDependencies__types_enzyme": "^3.10.5", + "npm_package_devDependencies_eslint_config_airbnb": "~18.1.0", + "npm_package_browserslist_production_0": ">0.2%", + "PWD": "/Users/ruben/Projects/opensource/hospitalrun-frontend", + "npm_package_dependencies_node_sass": "~4.14.0", + "npm_package_devDependencies__types_lodash": "^4.14.150", + "npm_package_devDependencies_eslint_plugin_react_hooks": "~2.5.0", + "npm_package_devDependencies_standard_version": "~7.1.0", + "npm_package_dependencies_date_fns": "~2.12.0", + "npm_package_devDependencies__types_react_router_dom": "~5.1.0", + "npm_package_devDependencies_commitlint_config_cz": "~0.13.0", + "npm_package_browserslist_production_2": "not op_mini all", + "npm_lifecycle_event": "build", + "npm_package_name": "@hospitalrun/frontend", + "npm_package_repository_type": "git", + "npm_package_devDependencies_eslint_plugin_import": "~2.20.0", + "npm_config_version_commit_hooks": "true", + "npm_package_scripts_start": "react-scripts start", + "npm_package_scripts_build": "react-scripts build", + "npm_package_dependencies_react_router_dom": "~5.1.2", + "XPC_FLAGS": "0x0", + "npm_config_bin_links": "true", + "npm_package_devDependencies_enzyme": "~3.11.0", + "npm_package_devDependencies_dateformat": "~3.0.3", + "npm_package_devDependencies__types_react_router": "~5.1.2", + "npm_package_devDependencies_eslint_config_prettier": "~6.11.0", + "npm_package_devDependencies_source_map_explorer": "^2.2.2", + "npm_package_version": "2.0.0-alpha.2", + "XPC_SERVICE_NAME": "0", + "SHLVL": "2", + "HOME": "/Users/ruben", + "npm_package_scripts_test": "react-scripts test --detectOpenHandles", + "npm_config_strict_ssl": "true", + "npm_config_save_prefix": "^", + "npm_config_version_git_message": "v%s", + "npm_package_devDependencies__commitlint_cli": "~8.3.5", + "npm_package_devDependencies_cross_env": "~7.0.0", + "npm_package_devDependencies_husky": "~4.2.1", + "npm_package_husky_hooks_commit_msg": "npm run commitlint -- -E HUSKY_GIT_PARAMS", + "npm_package_dependencies_react_scripts": "~3.4.0", + "npm_package_devDependencies__commitlint_core": "~8.3.5", + "npm_package_scripts_coveralls": "npm run test:ci -- --coverage --watchAll=false && cat ./coverage/lcov.info", + "YARN_WRAP_OUTPUT": "false", + "LOGNAME": "ruben", + "npm_package_devDependencies__commitlint_prompt": "~8.3.5", + "npm_package_devDependencies__types_redux_mock_store": "~1.0.1", + "npm_lifecycle_script": "react-scripts build", + "LC_CTYPE": "en_US.UTF-8", + "npm_package_dependencies_pouchdb_find": "~7.2.1", + "npm_package_dependencies_react": "~16.13.0", + "npm_config_user_agent": "yarn/1.15.2 npm/? node/v11.14.0 darwin x64", + "npm_config_ignore_scripts": "", + "npm_config_version_git_sign": "", + "npm_package_dependencies_i18next_xhr_backend": "~3.2.2", + "npm_package_devDependencies__types_uuid": "^7.0.0", + "npm_package_devDependencies__types_node": "~13.13.0", + "npm_config_ignore_optional": "", + "npm_config_init_version": "1.0.0", + "npm_package_contributors_0_name": "Maksim Sinik", + "npm_package_lint_staged_______js_jsx_ts_tsx__1": "npm run test:ci", + "npm_package_devDependencies__commitlint_config_conventional": "~8.3.4", + "npm_package_lint_staged_______js_jsx_ts_tsx__0": "npm run lint:fix", + "npm_package_dependencies_i18next": "~19.4.0", + "npm_package_dependencies_react_router": "~5.1.2", + "npm_package_dependencies_shortid": "^2.2.15", + "npm_package_scripts_lint_staged": "lint-staged", + "npm_config_version_tag_prefix": "v", + "npm_package_dependencies_pouchdb_quick_search": "~1.3.0", + "npm_package_contributors_1_name": "Stefano Casasola", + "npm_package_devDependencies_eslint_plugin_react": "~7.19.0", + "npm_package_lint_staged_______js_jsx_ts_tsx__2": "git add .", + "npm_node_execpath": "/usr/local/Cellar/node/11.14.0_1/bin/node", + "BABEL_ENV": "production", + "NODE_ENV": "production", + "NODE_PATH": "" + }, + "userLimits": { + "core_file_size_blocks": { + "soft": 0, + "hard": "unlimited" + }, + "data_seg_size_kbytes": { + "soft": "unlimited", + "hard": "unlimited" + }, + "file_size_blocks": { + "soft": "unlimited", + "hard": "unlimited" + }, + "max_locked_memory_bytes": { + "soft": "unlimited", + "hard": "unlimited" + }, + "max_memory_size_kbytes": { + "soft": "unlimited", + "hard": "unlimited" + }, + "open_files": { + "soft": 24576, + "hard": "unlimited" + }, + "stack_size_bytes": { + "soft": 8388608, + "hard": 67104768 + }, + "cpu_time_seconds": { + "soft": "unlimited", + "hard": "unlimited" + }, + "max_user_processes": { + "soft": 2784, + "hard": 4176 + }, + "virtual_memory_kbytes": { + "soft": "unlimited", + "hard": "unlimited" + } + }, + "sharedObjects": [ + "/usr/local/Cellar/node/11.14.0_1/bin/node", + "/usr/local/opt/icu4c/lib/libicui18n.64.dylib", + "/usr/local/opt/icu4c/lib/libicuuc.64.dylib", + "/usr/local/opt/icu4c/lib/libicudata.64.dylib", + "/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation", + "/usr/lib/libSystem.B.dylib", + "/usr/lib/libc++.1.dylib", + "/usr/lib/system/libcache.dylib", + "/usr/lib/system/libcommonCrypto.dylib", + "/usr/lib/system/libcompiler_rt.dylib", + "/usr/lib/system/libcopyfile.dylib", + "/usr/lib/system/libcorecrypto.dylib", + "/usr/lib/system/libdispatch.dylib", + "/usr/lib/system/libdyld.dylib", + "/usr/lib/system/libkeymgr.dylib", + "/usr/lib/system/liblaunch.dylib", + "/usr/lib/system/libmacho.dylib", + "/usr/lib/system/libquarantine.dylib", + "/usr/lib/system/libremovefile.dylib", + "/usr/lib/system/libsystem_asl.dylib", + "/usr/lib/system/libsystem_blocks.dylib", + "/usr/lib/system/libsystem_c.dylib", + "/usr/lib/system/libsystem_configuration.dylib", + "/usr/lib/system/libsystem_coreservices.dylib", + "/usr/lib/system/libsystem_darwin.dylib", + "/usr/lib/system/libsystem_dnssd.dylib", + "/usr/lib/system/libsystem_featureflags.dylib", + "/usr/lib/system/libsystem_info.dylib", + "/usr/lib/system/libsystem_m.dylib", + "/usr/lib/system/libsystem_malloc.dylib", + "/usr/lib/system/libsystem_networkextension.dylib", + "/usr/lib/system/libsystem_notify.dylib", + "/usr/lib/system/libsystem_sandbox.dylib", + "/usr/lib/system/libsystem_secinit.dylib", + "/usr/lib/system/libsystem_kernel.dylib", + "/usr/lib/system/libsystem_platform.dylib", + "/usr/lib/system/libsystem_pthread.dylib", + "/usr/lib/system/libsystem_symptoms.dylib", + "/usr/lib/system/libsystem_trace.dylib", + "/usr/lib/system/libunwind.dylib", + "/usr/lib/system/libxpc.dylib", + "/usr/lib/libobjc.A.dylib", + "/usr/lib/libc++abi.dylib", + "/usr/lib/libfakelink.dylib", + "/usr/lib/libDiagnosticMessagesClient.dylib", + "/usr/lib/libicucore.A.dylib", + "/usr/lib/libz.1.dylib", + "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices", + "/System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics", + "/System/Library/Frameworks/CoreText.framework/Versions/A/CoreText", + "/System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO", + "/System/Library/Frameworks/ColorSync.framework/Versions/A/ColorSync", + "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/ATS", + "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ColorSyncLegacy.framework/Versions/A/ColorSyncLegacy", + "/System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices", + "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices", + "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LangAnalysis.framework/Versions/A/LangAnalysis", + "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/PrintCore", + "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/QD.framework/Versions/A/QD", + "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/SpeechSynthesis.framework/Versions/A/SpeechSynthesis", + "/System/Library/PrivateFrameworks/SkyLight.framework/Versions/A/SkyLight", + "/System/Library/PrivateFrameworks/FontServices.framework/libFontParser.dylib", + "/System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate", + "/System/Library/Frameworks/IOSurface.framework/Versions/A/IOSurface", + "/usr/lib/libxml2.2.dylib", + "/System/Library/Frameworks/CFNetwork.framework/Versions/A/CFNetwork", + "/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation", + "/System/Library/PrivateFrameworks/WatchdogClient.framework/Versions/A/WatchdogClient", + "/usr/lib/libcompression.dylib", + "/System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration", + "/System/Library/Frameworks/CoreDisplay.framework/Versions/A/CoreDisplay", + "/System/Library/PrivateFrameworks/IOAccelerator.framework/Versions/A/IOAccelerator", + "/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit", + "/System/Library/Frameworks/Metal.framework/Versions/A/Metal", + "/System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/MetalPerformanceShaders", + "/System/Library/PrivateFrameworks/MultitouchSupport.framework/Versions/A/MultitouchSupport", + "/System/Library/Frameworks/Security.framework/Versions/A/Security", + "/System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore", + "/usr/lib/libbsm.0.dylib", + "/usr/lib/liblzma.5.dylib", + "/usr/lib/libauto.dylib", + "/System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration", + "/usr/lib/libarchive.2.dylib", + "/usr/lib/liblangid.dylib", + "/usr/lib/libCRFSuite.dylib", + "/usr/lib/libenergytrace.dylib", + "/usr/lib/system/libkxld.dylib", + "/System/Library/PrivateFrameworks/AppleFSCompression.framework/Versions/A/AppleFSCompression", + "/usr/lib/libcoretls.dylib", + "/usr/lib/libcoretls_cfhelpers.dylib", + "/usr/lib/libpam.2.dylib", + "/usr/lib/libsqlite3.dylib", + "/usr/lib/libxar.1.dylib", + "/usr/lib/libbz2.1.0.dylib", + "/usr/lib/libiconv.2.dylib", + "/usr/lib/libcharset.1.dylib", + "/usr/lib/libnetwork.dylib", + "/usr/lib/libpcap.A.dylib", + "/usr/lib/libapple_nghttp2.dylib", + "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/FSEvents", + "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore", + "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata", + "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices", + "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit", + "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/AE", + "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices", + "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices", + "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SharedFileList.framework/Versions/A/SharedFileList", + "/System/Library/Frameworks/NetFS.framework/Versions/A/NetFS", + "/System/Library/PrivateFrameworks/NetAuth.framework/Versions/A/NetAuth", + "/System/Library/PrivateFrameworks/login.framework/Versions/A/Frameworks/loginsupport.framework/Versions/A/loginsupport", + "/System/Library/PrivateFrameworks/TCC.framework/Versions/A/TCC", + "/System/Library/PrivateFrameworks/CoreNLP.framework/Versions/A/CoreNLP", + "/System/Library/PrivateFrameworks/MetadataUtilities.framework/Versions/A/MetadataUtilities", + "/usr/lib/libmecabra.dylib", + "/usr/lib/libmecab.dylib", + "/usr/lib/libgermantok.dylib", + "/usr/lib/libThaiTokenizer.dylib", + "/usr/lib/libChineseTokenizer.dylib", + "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/vImage", + "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/vecLib", + "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvMisc.dylib", + "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvDSP.dylib", + "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib", + "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib", + "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLinearAlgebra.dylib", + "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparseBLAS.dylib", + "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libQuadrature.dylib", + "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBNNS.dylib", + "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparse.dylib", + "/System/Library/PrivateFrameworks/LanguageModeling.framework/Versions/A/LanguageModeling", + "/System/Library/PrivateFrameworks/CoreEmoji.framework/Versions/A/CoreEmoji", + "/System/Library/PrivateFrameworks/LinguisticData.framework/Versions/A/LinguisticData", + "/System/Library/PrivateFrameworks/Lexicon.framework/Versions/A/Lexicon", + "/usr/lib/libcmph.dylib", + "/System/Library/Frameworks/OpenDirectory.framework/Versions/A/Frameworks/CFOpenDirectory.framework/Versions/A/CFOpenDirectory", + "/System/Library/Frameworks/OpenDirectory.framework/Versions/A/OpenDirectory", + "/System/Library/PrivateFrameworks/APFS.framework/Versions/A/APFS", + "/System/Library/Frameworks/SecurityFoundation.framework/Versions/A/SecurityFoundation", + "/usr/lib/libutil.dylib", + "/System/Library/PrivateFrameworks/CoreServicesStore.framework/Versions/A/CoreServicesStore", + "/System/Library/Frameworks/ServiceManagement.framework/Versions/A/ServiceManagement", + "/System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/BackgroundTaskManagement", + "/usr/lib/libxslt.1.dylib", + "/System/Library/PrivateFrameworks/GPUWrangler.framework/Versions/A/GPUWrangler", + "/System/Library/PrivateFrameworks/IOPresentment.framework/Versions/A/IOPresentment", + "/System/Library/PrivateFrameworks/DSExternalDisplay.framework/Versions/A/DSExternalDisplay", + "/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreFSCache.dylib", + "/System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSCore.framework/Versions/A/MPSCore", + "/System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSImage.framework/Versions/A/MPSImage", + "/System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSNeuralNetwork.framework/Versions/A/MPSNeuralNetwork", + "/System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSMatrix.framework/Versions/A/MPSMatrix", + "/System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSRayIntersector.framework/Versions/A/MPSRayIntersector", + "/System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSNDArray.framework/Versions/A/MPSNDArray", + "/System/Library/PrivateFrameworks/MetalTools.framework/Versions/A/MetalTools", + "/System/Library/PrivateFrameworks/AggregateDictionary.framework/Versions/A/AggregateDictionary", + "/System/Library/PrivateFrameworks/CoreAnalytics.framework/Versions/A/CoreAnalytics", + "/System/Library/PrivateFrameworks/AppleSauce.framework/Versions/A/AppleSauce", + "/usr/lib/libMobileGestalt.dylib", + "/System/Library/PrivateFrameworks/AppleSystemInfo.framework/Versions/A/AppleSystemInfo", + "/usr/lib/libIOReport.dylib", + "/System/Library/Frameworks/CoreImage.framework/Versions/A/CoreImage", + "/System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo", + "/System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL", + "/System/Library/PrivateFrameworks/GraphVisualizer.framework/Versions/A/GraphVisualizer", + "/System/Library/PrivateFrameworks/FaceCore.framework/Versions/A/FaceCore", + "/System/Library/Frameworks/OpenCL.framework/Versions/A/OpenCL", + "/usr/lib/libFosl_dynamic.dylib", + "/System/Library/PrivateFrameworks/OTSVG.framework/Versions/A/OTSVG", + "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontRegistry.dylib", + "/usr/lib/libate.dylib", + "/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib", + "/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib", + "/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib", + "/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libGIF.dylib", + "/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJP2.dylib", + "/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libRadiance.dylib", + "/usr/lib/libexpat.1.dylib", + "/System/Library/PrivateFrameworks/AppleJPEG.framework/Versions/A/AppleJPEG", + "/System/Library/PrivateFrameworks/FontServices.framework/libhvf.dylib", + "/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGFXShared.dylib", + "/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib", + "/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib", + "/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLImage.dylib", + "/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCVMSPluginSupport.dylib", + "/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreVMClient.dylib", + "/usr/lib/libncurses.5.4.dylib", + "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATSUI.framework/Versions/A/ATSUI", + "/usr/lib/libcups.2.dylib", + "/System/Library/Frameworks/Kerberos.framework/Versions/A/Kerberos", + "/System/Library/Frameworks/GSS.framework/Versions/A/GSS", + "/usr/lib/libresolv.9.dylib", + "/System/Library/PrivateFrameworks/Heimdal.framework/Versions/A/Heimdal", + "/System/Library/Frameworks/Kerberos.framework/Versions/A/Libraries/libHeimdalProxy.dylib", + "/usr/lib/libheimdal-asn1.dylib", + "/System/Library/PrivateFrameworks/CommonAuth.framework/Versions/A/CommonAuth", + "/System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio", + "/System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox", + "/System/Library/PrivateFrameworks/AssertionServices.framework/Versions/A/AssertionServices", + "/System/Library/PrivateFrameworks/AudioToolboxCore.framework/Versions/A/AudioToolboxCore", + "/System/Library/PrivateFrameworks/caulk.framework/Versions/A/caulk", + "/System/Library/PrivateFrameworks/BaseBoard.framework/Versions/A/BaseBoard", + "/System/Library/PrivateFrameworks/RunningBoardServices.framework/Versions/A/RunningBoardServices", + "/System/Library/PrivateFrameworks/PersistentConnection.framework/Versions/A/PersistentConnection", + "/System/Library/PrivateFrameworks/ProtocolBuffer.framework/Versions/A/ProtocolBuffer", + "/System/Library/PrivateFrameworks/CommonUtilities.framework/Versions/A/CommonUtilities", + "/System/Library/PrivateFrameworks/Bom.framework/Versions/A/Bom", + "/usr/lib/libAudioToolboxUtility.dylib", + "/Users/ruben/Projects/opensource/hospitalrun-frontend/node_modules/node-sass/vendor/darwin-x64-67/binding.node" + ] +} \ No newline at end of file diff --git a/src/__tests__/patients/labs/LabsTab.test.tsx b/src/__tests__/patients/labs/LabsTab.test.tsx new file mode 100644 index 0000000000..69544b83ad --- /dev/null +++ b/src/__tests__/patients/labs/LabsTab.test.tsx @@ -0,0 +1,88 @@ +import '../../../__mocks__/matchMediaMock' +import React from 'react' +import configureMockStore from 'redux-mock-store' +import thunk from 'redux-thunk' +import { mount } from 'enzyme' +import { createMemoryHistory } from 'history' +import { Router } from 'react-router' +import { Provider } from 'react-redux' +import * as components from '@hospitalrun/components' +import format from 'date-fns/format' +import { act } from 'react-dom/test-utils' +import LabsTab from '../../../patients/labs/LabsTab' +import Patient from '../../../model/Patient' +import Lab from '../../../model/Lab' +import Permissions from '../../../model/Permissions' +import LabRepository from '../../../clients/db/LabRepository' + +const expectedPatient = { + id: '123', + labs: [ + { + patientId: '123', + type: 'type', + status: 'requested', + requestedOn: new Date().toISOString(), + } as Lab, + ], +} as Patient + +const mockStore = configureMockStore([thunk]) +const history = createMemoryHistory() + +let user: any +let store: any + +const setup = (patient = expectedPatient, permissions = [Permissions.WritePatients]) => { + user = { permissions } + store = mockStore({ patient, user }) + jest.spyOn(LabRepository, 'findLabsByPatientId').mockResolvedValue(expectedPatient.labs as Lab[]) + const wrapper = mount( + + + + + , + ) + + return wrapper +} + +describe('Labs Tab', () => { + it('should list the patients labs', async () => { + const expectedLabs = expectedPatient.labs as Lab[] + let wrapper: any + await act(async () => { + wrapper = await setup() + }) + wrapper.update() + + const table = wrapper.find('table') + const tableHeader = wrapper.find('thead') + const tableHeaders = wrapper.find('th') + const tableBody = wrapper.find('tbody') + const tableData = wrapper.find('td') + + expect(table).toHaveLength(1) + expect(tableHeader).toHaveLength(1) + expect(tableBody).toHaveLength(1) + expect(tableHeaders.at(0).text()).toEqual('labs.lab.type') + expect(tableHeaders.at(1).text()).toEqual('labs.lab.requestedOn') + expect(tableHeaders.at(2).text()).toEqual('labs.lab.status') + expect(tableData.at(0).text()).toEqual(expectedLabs[0].type) + expect(tableData.at(1).text()).toEqual( + format(new Date(expectedLabs[0].requestedOn), 'yyyy-MM-dd hh:mm a'), + ) + expect(tableData.at(2).text()).toEqual(expectedLabs[0].status) + }) + + it('should render a warning message if the patient does not have any labs', () => { + const wrapper = setup({ ...expectedPatient, labs: [] }) + + const alert = wrapper.find(components.Alert) + + expect(alert).toHaveLength(1) + expect(alert.prop('title')).toEqual('patient.labs.warning.noLabs') + expect(alert.prop('message')).toEqual('patient.labs.noLabsMessage') + }) +}) diff --git a/src/__tests__/patients/view/ViewPatient.test.tsx b/src/__tests__/patients/view/ViewPatient.test.tsx index e24c07fcdf..ab93996c45 100644 --- a/src/__tests__/patients/view/ViewPatient.test.tsx +++ b/src/__tests__/patients/view/ViewPatient.test.tsx @@ -21,6 +21,7 @@ import * as titleUtil from '../../../page-header/useTitle' import ViewPatient from '../../../patients/view/ViewPatient' import * as patientSlice from '../../../patients/patient-slice' import Permissions from '../../../model/Permissions' +import LabsTab from '../../../patients/labs/LabsTab' const mockStore = configureMockStore([thunk]) @@ -49,7 +50,6 @@ describe('ViewPatient', () => { jest.spyOn(PatientRepository, 'find') const mockedPatientRepository = mocked(PatientRepository, true) mockedPatientRepository.find.mockResolvedValue(patient) - history = createMemoryHistory() store = mockStore({ patient: { patient }, @@ -127,13 +127,14 @@ describe('ViewPatient', () => { const tabs = tabsHeader.find(Tab) expect(tabsHeader).toHaveLength(1) - expect(tabs).toHaveLength(6) + expect(tabs).toHaveLength(7) expect(tabs.at(0).prop('label')).toEqual('patient.generalInformation') expect(tabs.at(1).prop('label')).toEqual('patient.relatedPersons.label') expect(tabs.at(2).prop('label')).toEqual('scheduling.appointments.label') expect(tabs.at(3).prop('label')).toEqual('patient.allergies.label') expect(tabs.at(4).prop('label')).toEqual('patient.diagnoses.label') expect(tabs.at(5).prop('label')).toEqual('patient.notes.label') + expect(tabs.at(6).prop('label')).toEqual('patient.labs.label') }) it('should mark the general information tab as active and render the general information component when route is /patients/:id', async () => { @@ -262,4 +263,28 @@ describe('ViewPatient', () => { expect(notesTab).toHaveLength(1) expect(notesTab.prop('patient')).toEqual(patient) }) + + it('should mark the labs tab as active when it is clicked and render the lab component when route is /patients/:id/labs', async () => { + let wrapper: any + await act(async () => { + wrapper = await setup() + }) + + await act(async () => { + const tabsHeader = wrapper.find(TabsHeader) + const tabs = tabsHeader.find(Tab) + tabs.at(6).prop('onClick')() + }) + + wrapper.update() + + const tabsHeader = wrapper.find(TabsHeader) + const tabs = tabsHeader.find(Tab) + const labsTab = wrapper.find(LabsTab) + + expect(history.location.pathname).toEqual(`/patients/${patient.id}/labs`) + expect(tabs.at(6).prop('active')).toBeTruthy() + expect(labsTab).toHaveLength(1) + expect(labsTab.prop('patientId')).toEqual(patient.id) + }) }) diff --git a/src/__tests__/scheduling/appointments/new/NewAppointment.test.tsx b/src/__tests__/scheduling/appointments/new/NewAppointment.test.tsx index 4b502dcd41..5bab28c61a 100644 --- a/src/__tests__/scheduling/appointments/new/NewAppointment.test.tsx +++ b/src/__tests__/scheduling/appointments/new/NewAppointment.test.tsx @@ -18,6 +18,8 @@ import AppointmentDetailForm from 'scheduling/appointments/AppointmentDetailForm import * as components from '@hospitalrun/components' import * as titleUtil from '../../../../page-header/useTitle' import * as appointmentSlice from '../../../../scheduling/appointments/appointment-slice' +import LabRepository from '../../../../clients/db/LabRepository' +import Lab from '../../../../model/Lab' const mockStore = configureMockStore([thunk]) const mockedComponents = mocked(components, true) @@ -32,6 +34,7 @@ describe('New Appointment', () => { mocked(AppointmentRepository, true).save.mockResolvedValue( expectedNewAppointment as Appointment, ) + jest.spyOn(LabRepository, 'findLabsByPatientId').mockResolvedValue([] as Lab[]) history = createMemoryHistory() store = mockStore({ diff --git a/src/clients/db/LabRepository.ts b/src/clients/db/LabRepository.ts index 6ffbfdd6d3..bd89d04c29 100644 --- a/src/clients/db/LabRepository.ts +++ b/src/clients/db/LabRepository.ts @@ -9,6 +9,18 @@ export class LabRepository extends Repository { index: { fields: ['requestedOn'] }, }) } + + async findLabsByPatientId(patientId: string): Promise { + return super.search({ + selector: { + $and: [ + { + patientId, + }, + ], + }, + }) + } } export default new LabRepository() diff --git a/src/locales/enUs/translations/patient/index.ts b/src/locales/enUs/translations/patient/index.ts index dd39f9126e..6c0936de91 100644 --- a/src/locales/enUs/translations/patient/index.ts +++ b/src/locales/enUs/translations/patient/index.ts @@ -85,6 +85,14 @@ export default { }, addNoteAbove: 'Add a note using the button above.', }, + labs: { + label: 'Labs', + new: 'Add New Lab', + warning: { + noLabs: 'No Labs', + }, + noLabsMessage: 'No labs requests for this person.', + }, types: { charity: 'Charity', private: 'Private', diff --git a/src/patients/labs/LabsTab.tsx b/src/patients/labs/LabsTab.tsx new file mode 100644 index 0000000000..c71e6ef83e --- /dev/null +++ b/src/patients/labs/LabsTab.tsx @@ -0,0 +1,66 @@ +import React, { useEffect, useState } from 'react' +import { Alert } from '@hospitalrun/components' +import { useTranslation } from 'react-i18next' +import format from 'date-fns/format' +import { useHistory } from 'react-router' +import Lab from '../../model/Lab' +import LabRepository from '../../clients/db/LabRepository' + +interface Props { + patientId: string +} + +const LabsTab = (props: Props) => { + const history = useHistory() + const { patientId } = props + const { t } = useTranslation() + + const [labs, setLabs] = useState([]) + + useEffect(() => { + const fetch = async () => { + const fetchedLabs = await LabRepository.findLabsByPatientId(patientId) + setLabs(fetchedLabs) + } + + fetch() + }, [patientId]) + + const onTableRowClick = (lab: Lab) => { + history.push(`/labs/${lab.id}`) + } + + return ( +
+ {(!labs || labs.length === 0) && ( + + )} + {labs && labs.length > 0 && ( + + + + + + + + + + {labs.map((lab) => ( + onTableRowClick(lab)} key={lab.id}> + + + + + ))} + +
{t('labs.lab.type')}{t('labs.lab.requestedOn')}{t('labs.lab.status')}
{lab.type}{format(new Date(lab.requestedOn), 'yyyy-MM-dd hh:mm a')}{lab.status}
+ )} +
+ ) +} + +export default LabsTab diff --git a/src/patients/view/ViewPatient.tsx b/src/patients/view/ViewPatient.tsx index fab29a157c..6119142e0b 100644 --- a/src/patients/view/ViewPatient.tsx +++ b/src/patients/view/ViewPatient.tsx @@ -18,6 +18,7 @@ import RelatedPerson from '../related-persons/RelatedPersonTab' import useAddBreadcrumbs from '../../breadcrumbs/useAddBreadcrumbs' import AppointmentsList from '../appointments/AppointmentsList' import Note from '../notes/NoteTab' +import Labs from '../labs/LabsTab' const getPatientCode = (p: Patient): string => { if (p) { @@ -113,6 +114,11 @@ const ViewPatient = () => { label={t('patient.notes.label')} onClick={() => history.push(`/patients/${patient.id}/notes`)} /> + history.push(`/patients/${patient.id}/labs`)} + /> @@ -133,6 +139,9 @@ const ViewPatient = () => { + + + ) From 6ac824e23040340149e3cba1c73114b0c8746f3f Mon Sep 17 00:00:00 2001 From: Jack Meyer Date: Sun, 3 May 2020 11:57:41 -0500 Subject: [PATCH 3/4] feat(patients): fix failing test due to missing mocks --- src/__tests__/patients/labs/LabsTab.test.tsx | 30 +++++++++++-------- .../patients/view/ViewPatient.test.tsx | 2 ++ .../appointments/new/NewAppointment.test.tsx | 2 +- src/clients/db/LabRepository.ts | 2 +- src/patients/labs/LabsTab.tsx | 2 +- 5 files changed, 23 insertions(+), 15 deletions(-) diff --git a/src/__tests__/patients/labs/LabsTab.test.tsx b/src/__tests__/patients/labs/LabsTab.test.tsx index 69544b83ad..cc5f5c0518 100644 --- a/src/__tests__/patients/labs/LabsTab.test.tsx +++ b/src/__tests__/patients/labs/LabsTab.test.tsx @@ -17,16 +17,18 @@ import LabRepository from '../../../clients/db/LabRepository' const expectedPatient = { id: '123', - labs: [ - { - patientId: '123', - type: 'type', - status: 'requested', - requestedOn: new Date().toISOString(), - } as Lab, - ], } as Patient +const labs = [ + { + id: 'labId', + patientId: '123', + type: 'type', + status: 'requested', + requestedOn: new Date().toISOString(), + } as Lab, +] + const mockStore = configureMockStore([thunk]) const history = createMemoryHistory() @@ -36,7 +38,7 @@ let store: any const setup = (patient = expectedPatient, permissions = [Permissions.WritePatients]) => { user = { permissions } store = mockStore({ patient, user }) - jest.spyOn(LabRepository, 'findLabsByPatientId').mockResolvedValue(expectedPatient.labs as Lab[]) + jest.spyOn(LabRepository, 'findAllByPatientId').mockResolvedValue(labs) const wrapper = mount( @@ -50,7 +52,7 @@ const setup = (patient = expectedPatient, permissions = [Permissions.WritePatien describe('Labs Tab', () => { it('should list the patients labs', async () => { - const expectedLabs = expectedPatient.labs as Lab[] + const expectedLabs = labs let wrapper: any await act(async () => { wrapper = await setup() @@ -76,8 +78,12 @@ describe('Labs Tab', () => { expect(tableData.at(2).text()).toEqual(expectedLabs[0].status) }) - it('should render a warning message if the patient does not have any labs', () => { - const wrapper = setup({ ...expectedPatient, labs: [] }) + it('should render a warning message if the patient does not have any labs', async () => { + let wrapper: any + + await act(async () => { + wrapper = await setup({ ...expectedPatient }) + }) const alert = wrapper.find(components.Alert) diff --git a/src/__tests__/patients/view/ViewPatient.test.tsx b/src/__tests__/patients/view/ViewPatient.test.tsx index ab93996c45..3080e73384 100644 --- a/src/__tests__/patients/view/ViewPatient.test.tsx +++ b/src/__tests__/patients/view/ViewPatient.test.tsx @@ -22,6 +22,7 @@ import ViewPatient from '../../../patients/view/ViewPatient' import * as patientSlice from '../../../patients/patient-slice' import Permissions from '../../../model/Permissions' import LabsTab from '../../../patients/labs/LabsTab' +import LabRepository from '../../../clients/db/LabRepository' const mockStore = configureMockStore([thunk]) @@ -48,6 +49,7 @@ describe('ViewPatient', () => { const setup = (permissions = [Permissions.ReadPatients]) => { jest.spyOn(PatientRepository, 'find') + jest.spyOn(LabRepository, 'findAllByPatientId').mockResolvedValue([]) const mockedPatientRepository = mocked(PatientRepository, true) mockedPatientRepository.find.mockResolvedValue(patient) history = createMemoryHistory() diff --git a/src/__tests__/scheduling/appointments/new/NewAppointment.test.tsx b/src/__tests__/scheduling/appointments/new/NewAppointment.test.tsx index 5bab28c61a..7d79ec1b67 100644 --- a/src/__tests__/scheduling/appointments/new/NewAppointment.test.tsx +++ b/src/__tests__/scheduling/appointments/new/NewAppointment.test.tsx @@ -34,7 +34,7 @@ describe('New Appointment', () => { mocked(AppointmentRepository, true).save.mockResolvedValue( expectedNewAppointment as Appointment, ) - jest.spyOn(LabRepository, 'findLabsByPatientId').mockResolvedValue([] as Lab[]) + jest.spyOn(LabRepository, 'findAllByPatientId').mockResolvedValue([] as Lab[]) history = createMemoryHistory() store = mockStore({ diff --git a/src/clients/db/LabRepository.ts b/src/clients/db/LabRepository.ts index bd89d04c29..9ddfa74df0 100644 --- a/src/clients/db/LabRepository.ts +++ b/src/clients/db/LabRepository.ts @@ -10,7 +10,7 @@ export class LabRepository extends Repository { }) } - async findLabsByPatientId(patientId: string): Promise { + async findAllByPatientId(patientId: string): Promise { return super.search({ selector: { $and: [ diff --git a/src/patients/labs/LabsTab.tsx b/src/patients/labs/LabsTab.tsx index c71e6ef83e..6b40d81353 100644 --- a/src/patients/labs/LabsTab.tsx +++ b/src/patients/labs/LabsTab.tsx @@ -19,7 +19,7 @@ const LabsTab = (props: Props) => { useEffect(() => { const fetch = async () => { - const fetchedLabs = await LabRepository.findLabsByPatientId(patientId) + const fetchedLabs = await LabRepository.findAllByPatientId(patientId) setLabs(fetchedLabs) } From afca198c2ff2544b6d54b8b43e00bc339ac2d3ea Mon Sep 17 00:00:00 2001 From: Jack Meyer Date: Sun, 3 May 2020 12:20:17 -0500 Subject: [PATCH 4/4] feat(patients): removes some file --- report.20200502.130727.1352.0.001.json | 593 ------------------------- 1 file changed, 593 deletions(-) delete mode 100644 report.20200502.130727.1352.0.001.json diff --git a/report.20200502.130727.1352.0.001.json b/report.20200502.130727.1352.0.001.json deleted file mode 100644 index c4b7c039a9..0000000000 --- a/report.20200502.130727.1352.0.001.json +++ /dev/null @@ -1,593 +0,0 @@ - -{ - "header": { - "event": "Allocation failed - JavaScript heap out of memory", - "trigger": "FatalError", - "filename": "report.20200502.130727.1352.0.001.json", - "dumpEventTime": "2020-05-02T13:07:27Z", - "dumpEventTimeStamp": "1588417647991", - "processId": 1352, - "cwd": "/Users/ruben/Projects/opensource/hospitalrun-frontend", - "commandLine": [ - "/usr/local/Cellar/node/11.14.0_1/bin/node", - "/Users/ruben/Projects/opensource/hospitalrun-frontend/node_modules/react-scripts/scripts/build.js" - ], - "nodejsVersion": "v11.14.0", - "wordSize": 64, - "arch": "x64", - "platform": "darwin", - "componentVersions": { - "node": "11.14.0", - "v8": "7.0.276.38-node.18", - "uv": "1.27.0", - "zlib": "1.2.11", - "brotli": "1.0.7", - "ares": "1.15.0", - "modules": "67", - "nghttp2": "1.37.0", - "napi": "4", - "llhttp": "1.1.1", - "http_parser": "2.8.0", - "openssl": "1.1.1b", - "cldr": "35.1", - "icu": "64.2", - "tz": "2019a", - "unicode": "12.1" - }, - "release": { - "name": "node", - "headersUrl": "https://nodejs.org/download/release/v11.14.0/node-v11.14.0-headers.tar.gz", - "sourceUrl": "https://nodejs.org/download/release/v11.14.0/node-v11.14.0.tar.gz" - }, - "osName": "Darwin", - "osRelease": "19.4.0", - "osVersion": "Darwin Kernel Version 19.4.0: Wed Mar 4 22:28:40 PST 2020; root:xnu-6153.101.6~15/RELEASE_X86_64", - "osMachine": "x86_64", - "host": "Rubens-MacBook-Pro.local" - }, - "javascriptStack": { - "message": "No stack.", - "stack": [ - "Unavailable." - ] - }, - "nativeStack": [ - { - "pc": "0x0000000100129f54", - "symbol": "report::TriggerNodeReport(v8::Isolate*, node::Environment*, char const*, char const*, std::__1::basic_string, std::__1::allocator > const&, v8::Local) [/usr/local/Cellar/node/11.14.0_1/bin/node]" - }, - { - "pc": "0x0000000100066b3c", - "symbol": "node::OnFatalError(char const*, char const*) [/usr/local/Cellar/node/11.14.0_1/bin/node]" - }, - { - "pc": "0x000000010018059b", - "symbol": "v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [/usr/local/Cellar/node/11.14.0_1/bin/node]" - }, - { - "pc": "0x000000010018053c", - "symbol": "v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/usr/local/Cellar/node/11.14.0_1/bin/node]" - }, - { - "pc": "0x00000001004439c4", - "symbol": "v8::internal::Heap::UpdateSurvivalStatistics(int) [/usr/local/Cellar/node/11.14.0_1/bin/node]" - }, - { - "pc": "0x000000010044544f", - "symbol": "v8::internal::Heap::CheckIneffectiveMarkCompact(unsigned long, double) [/usr/local/Cellar/node/11.14.0_1/bin/node]" - }, - { - "pc": "0x0000000100442d20", - "symbol": "v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [/usr/local/Cellar/node/11.14.0_1/bin/node]" - }, - { - "pc": "0x0000000100441aca", - "symbol": "v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/usr/local/Cellar/node/11.14.0_1/bin/node]" - }, - { - "pc": "0x0000000100449a38", - "symbol": "v8::internal::Heap::AllocateRawWithLightRetry(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/usr/local/Cellar/node/11.14.0_1/bin/node]" - }, - { - "pc": "0x0000000100449a84", - "symbol": "v8::internal::Heap::AllocateRawWithRetryOrFail(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/usr/local/Cellar/node/11.14.0_1/bin/node]" - }, - { - "pc": "0x000000010042a2fb", - "symbol": "v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationSpace) [/usr/local/Cellar/node/11.14.0_1/bin/node]" - }, - { - "pc": "0x0000000100608dc2", - "symbol": "v8::internal::Runtime_AllocateInNewSpace(int, v8::internal::Object**, v8::internal::Isolate*) [/usr/local/Cellar/node/11.14.0_1/bin/node]" - }, - { - "pc": "0x00002ef85214fc7d", - "symbol": "" - } - ], - "javascriptHeap": { - "totalMemory": 1519808512, - "totalCommittedMemory": 1512196664, - "usedMemory": 1426977216, - "availableMemory": 57657144, - "memoryLimit": 1526909922, - "heapSpaces": { - "read_only_space": { - "memorySize": 524288, - "committedMemory": 42224, - "capacity": 515584, - "used": 33520, - "available": 482064 - }, - "new_space": { - "memorySize": 33554432, - "committedMemory": 27183936, - "capacity": 16498688, - "used": 8260112, - "available": 8238576 - }, - "old_space": { - "memorySize": 1166217216, - "committedMemory": 1166122792, - "capacity": 1146295240, - "used": 1104268176, - "available": 42027064 - }, - "code_space": { - "memorySize": 8912896, - "committedMemory": 8417568, - "capacity": 7660160, - "used": 7660160, - "available": 0 - }, - "map_space": { - "memorySize": 6828032, - "committedMemory": 6658496, - "capacity": 4750960, - "used": 4750960, - "available": 0 - }, - "large_object_space": { - "memorySize": 303771648, - "committedMemory": 303771648, - "capacity": 308913728, - "used": 302004288, - "available": 6909440 - }, - "new_large_object_space": { - "memorySize": 0, - "committedMemory": 0, - "capacity": 0, - "used": 0, - "available": 0 - } - } - }, - "resourceUsage": { - "userCpuSeconds": 154.493, - "kernelCpuSeconds": 6.50323, - "cpuConsumptionPercent": 110.271, - "maxRss": 1637888294912, - "pageFaults": { - "IORequired": 93, - "IONotRequired": 1732061 - }, - "fsActivity": { - "reads": 0, - "writes": 0 - } - }, - "libuv": [ - ], - "environmentVariables": { - "npm_package_dependencies__reduxjs_toolkit": "~1.3.0", - "npm_package_dependencies_pouchdb": "~7.2.1", - "npm_package_devDependencies_lint_staged": "~10.2.0", - "npm_package_dependencies_redux": "~4.0.5", - "npm_package_devDependencies_prettier": "~2.0.4", - "npm_package_devDependencies__types_shortid": "^0.0.29", - "npm_package_devDependencies__types_pouchdb": "~6.4.0", - "NODE": "/usr/local/Cellar/node/11.14.0_1/bin/node", - "npm_config_version_git_tag": "true", - "npm_package_devDependencies__types_react_redux": "~7.1.5", - "INIT_CWD": "/Users/ruben/Projects/opensource/hospitalrun-frontend", - "npm_package_dependencies_react_i18next": "~11.4.0", - "npm_package_devDependencies_jest": "~24.9.0", - "npm_package_scripts_commitlint": "commitlint", - "TERM": "xterm-256color", - "SHELL": "/bin/zsh", - "npm_package_devDependencies_eslint_plugin_jest": "~23.8.0", - "TMPDIR": "/var/folders/v3/hbv0sfr919d23wvvqt6hn63r0000gn/T/", - "npm_config_init_license": "MIT", - "npm_package_dependencies_react_bootstrap": "~1.0.0-beta.16", - "npm_package_scripts_lint": "eslint \"src/**/*.{js,jsx,ts,tsx}\"", - "npm_package_dependencies__hospitalrun_components": "^1.3.0", - "npm_package_dependencies_uuid": "^8.0.0", - "npm_package_scripts_prepublishOnly": "npm run build", - "ZDOTDIR": "", - "npm_package_scripts_test_ci": "cross-env CI=true react-scripts test --passWithNoTests", - "npm_package_config_commitizen_path": "./node_modules/cz-conventional-changelog", - "npm_config_registry": "https://registry.yarnpkg.com", - "npm_package_private": "false", - "npm_package_scripts_analyze": "source-map-explorer 'build/static/js/*.js'", - "npm_package_dependencies_react_dom": "~16.13.0", - "npm_package_repository_url": "https://github.com/HospitalRun/hospitalrun-frontend.git", - "npm_package_devDependencies_commitizen": "~4.0.3", - "npm_package_dependencies_escape_string_regexp": "~4.0.0", - "npm_package_devDependencies_eslint_plugin_jsx_a11y": "~6.2.3", - "npm_package_readmeFilename": "README.md", - "__INTELLIJ_COMMAND_HISTFILE__": "/Users/ruben/Library/Preferences/IntelliJIdea2019.2/terminal/history/history-5", - "npm_package_description": "React frontend for HospitalRun", - "npm_package_dependencies__types_pouchdb_find": "~6.3.4", - "npm_package_devDependencies__testing_library_react": "~10.0.0", - "USER": "ruben", - "npm_package_license": "MIT", - "npm_package_devDependencies__types_react": "~16.9.17", - "npm_package_devDependencies_enzyme_adapter_react_16": "~1.15.2", - "npm_package_devDependencies_history": "~4.10.1", - "npm_package_browserslist_development_1": "last 1 firefox version", - "npm_package_devDependencies_redux_mock_store": "~1.5.4", - "npm_package_browserslist_development_0": "last 1 chrome version", - "npm_package_dependencies_i18next_browser_languagedetector": "~4.1.0", - "npm_package_dependencies_lodash": "^4.17.15", - "npm_package_dependencies_pouchdb_adapter_memory": "~7.2.1", - "SSH_AUTH_SOCK": "/private/tmp/com.apple.launchd.zyMDzkDgsh/Listeners", - "npm_package_dependencies__types_escape_string_regexp": "~2.0.1", - "npm_package_dependencies_react_bootstrap_typeahead": "~4.2.0", - "npm_package_devDependencies__types_jest": "~25.2.0", - "npm_package_devDependencies_eslint": "~6.8.0", - "npm_package_browserslist_development_2": "last 1 safari version", - "__CF_USER_TEXT_ENCODING": "0x1F5:0x0:0x0", - "npm_package_devDependencies__typescript_eslint_eslint_plugin": "~2.30.0", - "npm_package_husky_hooks_pre_commit": "npm run lint-staged", - "npm_execpath": "/usr/local/lib/node_modules/yarn/bin/yarn.js", - "LOGIN_SHELL": "1", - "npm_package_dependencies_react_redux": "~7.2.0", - "npm_package_author_name": "Jack Meyer", - "npm_package_devDependencies__types_react_dom": "~16.9.4", - "npm_package_devDependencies_eslint_plugin_prettier": "~3.1.2", - "npm_package_devDependencies__typescript_eslint_parser": "~2.30.0", - "npm_package_scripts_commit": "npx git-cz", - "npm_package_scripts_lint_fix": "eslint \"src/**/*.{js,jsx,ts,tsx}\" --fix", - "npm_config_argv": "{\"remain\":[],\"cooked\":[\"run\",\"build\"],\"original\":[\"build\"]}", - "PATH": "/var/folders/v3/hbv0sfr919d23wvvqt6hn63r0000gn/T/yarn--1588417500947-0.3761723985599099:/Users/ruben/Projects/opensource/hospitalrun-frontend/node_modules/.bin:/Users/ruben/.config/yarn/link/node_modules/.bin:/usr/local/Cellar/node/11.14.0_1/libexec/lib/node_modules/npm/bin/node-gyp-bin:/usr/local/Cellar/node/11.14.0_1/lib/node_modules/npm/bin/node-gyp-bin:/usr/local/Cellar/node/11.14.0_1/bin/node_modules/npm/bin/node-gyp-bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/ruben/Projects/opensource/hospitalrun-frontend/node_modules/.bin", - "TERMINAL_EMULATOR": "JetBrains-JediTerm", - "npm_package_devDependencies_cz_conventional_changelog": "~3.1.0", - "npm_package_devDependencies_memdown": "~5.1.0", - "_": "/Users/ruben/Projects/opensource/hospitalrun-frontend/node_modules/.bin/react-scripts", - "npm_package_dependencies_redux_thunk": "~2.3.0", - "npm_package_dependencies_typescript": "~3.8.2", - "npm_package_devDependencies__testing_library_react_hooks": "~3.2.1", - "npm_package_devDependencies_ts_jest": "~24.3.0", - "npm_package_browserslist_production_1": "not dead", - "npm_package_dependencies_bootstrap": "~4.4.1", - "npm_package_devDependencies__types_enzyme": "^3.10.5", - "npm_package_devDependencies_eslint_config_airbnb": "~18.1.0", - "npm_package_browserslist_production_0": ">0.2%", - "PWD": "/Users/ruben/Projects/opensource/hospitalrun-frontend", - "npm_package_dependencies_node_sass": "~4.14.0", - "npm_package_devDependencies__types_lodash": "^4.14.150", - "npm_package_devDependencies_eslint_plugin_react_hooks": "~2.5.0", - "npm_package_devDependencies_standard_version": "~7.1.0", - "npm_package_dependencies_date_fns": "~2.12.0", - "npm_package_devDependencies__types_react_router_dom": "~5.1.0", - "npm_package_devDependencies_commitlint_config_cz": "~0.13.0", - "npm_package_browserslist_production_2": "not op_mini all", - "npm_lifecycle_event": "build", - "npm_package_name": "@hospitalrun/frontend", - "npm_package_repository_type": "git", - "npm_package_devDependencies_eslint_plugin_import": "~2.20.0", - "npm_config_version_commit_hooks": "true", - "npm_package_scripts_start": "react-scripts start", - "npm_package_scripts_build": "react-scripts build", - "npm_package_dependencies_react_router_dom": "~5.1.2", - "XPC_FLAGS": "0x0", - "npm_config_bin_links": "true", - "npm_package_devDependencies_enzyme": "~3.11.0", - "npm_package_devDependencies_dateformat": "~3.0.3", - "npm_package_devDependencies__types_react_router": "~5.1.2", - "npm_package_devDependencies_eslint_config_prettier": "~6.11.0", - "npm_package_devDependencies_source_map_explorer": "^2.2.2", - "npm_package_version": "2.0.0-alpha.2", - "XPC_SERVICE_NAME": "0", - "SHLVL": "2", - "HOME": "/Users/ruben", - "npm_package_scripts_test": "react-scripts test --detectOpenHandles", - "npm_config_strict_ssl": "true", - "npm_config_save_prefix": "^", - "npm_config_version_git_message": "v%s", - "npm_package_devDependencies__commitlint_cli": "~8.3.5", - "npm_package_devDependencies_cross_env": "~7.0.0", - "npm_package_devDependencies_husky": "~4.2.1", - "npm_package_husky_hooks_commit_msg": "npm run commitlint -- -E HUSKY_GIT_PARAMS", - "npm_package_dependencies_react_scripts": "~3.4.0", - "npm_package_devDependencies__commitlint_core": "~8.3.5", - "npm_package_scripts_coveralls": "npm run test:ci -- --coverage --watchAll=false && cat ./coverage/lcov.info", - "YARN_WRAP_OUTPUT": "false", - "LOGNAME": "ruben", - "npm_package_devDependencies__commitlint_prompt": "~8.3.5", - "npm_package_devDependencies__types_redux_mock_store": "~1.0.1", - "npm_lifecycle_script": "react-scripts build", - "LC_CTYPE": "en_US.UTF-8", - "npm_package_dependencies_pouchdb_find": "~7.2.1", - "npm_package_dependencies_react": "~16.13.0", - "npm_config_user_agent": "yarn/1.15.2 npm/? node/v11.14.0 darwin x64", - "npm_config_ignore_scripts": "", - "npm_config_version_git_sign": "", - "npm_package_dependencies_i18next_xhr_backend": "~3.2.2", - "npm_package_devDependencies__types_uuid": "^7.0.0", - "npm_package_devDependencies__types_node": "~13.13.0", - "npm_config_ignore_optional": "", - "npm_config_init_version": "1.0.0", - "npm_package_contributors_0_name": "Maksim Sinik", - "npm_package_lint_staged_______js_jsx_ts_tsx__1": "npm run test:ci", - "npm_package_devDependencies__commitlint_config_conventional": "~8.3.4", - "npm_package_lint_staged_______js_jsx_ts_tsx__0": "npm run lint:fix", - "npm_package_dependencies_i18next": "~19.4.0", - "npm_package_dependencies_react_router": "~5.1.2", - "npm_package_dependencies_shortid": "^2.2.15", - "npm_package_scripts_lint_staged": "lint-staged", - "npm_config_version_tag_prefix": "v", - "npm_package_dependencies_pouchdb_quick_search": "~1.3.0", - "npm_package_contributors_1_name": "Stefano Casasola", - "npm_package_devDependencies_eslint_plugin_react": "~7.19.0", - "npm_package_lint_staged_______js_jsx_ts_tsx__2": "git add .", - "npm_node_execpath": "/usr/local/Cellar/node/11.14.0_1/bin/node", - "BABEL_ENV": "production", - "NODE_ENV": "production", - "NODE_PATH": "" - }, - "userLimits": { - "core_file_size_blocks": { - "soft": 0, - "hard": "unlimited" - }, - "data_seg_size_kbytes": { - "soft": "unlimited", - "hard": "unlimited" - }, - "file_size_blocks": { - "soft": "unlimited", - "hard": "unlimited" - }, - "max_locked_memory_bytes": { - "soft": "unlimited", - "hard": "unlimited" - }, - "max_memory_size_kbytes": { - "soft": "unlimited", - "hard": "unlimited" - }, - "open_files": { - "soft": 24576, - "hard": "unlimited" - }, - "stack_size_bytes": { - "soft": 8388608, - "hard": 67104768 - }, - "cpu_time_seconds": { - "soft": "unlimited", - "hard": "unlimited" - }, - "max_user_processes": { - "soft": 2784, - "hard": 4176 - }, - "virtual_memory_kbytes": { - "soft": "unlimited", - "hard": "unlimited" - } - }, - "sharedObjects": [ - "/usr/local/Cellar/node/11.14.0_1/bin/node", - "/usr/local/opt/icu4c/lib/libicui18n.64.dylib", - "/usr/local/opt/icu4c/lib/libicuuc.64.dylib", - "/usr/local/opt/icu4c/lib/libicudata.64.dylib", - "/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation", - "/usr/lib/libSystem.B.dylib", - "/usr/lib/libc++.1.dylib", - "/usr/lib/system/libcache.dylib", - "/usr/lib/system/libcommonCrypto.dylib", - "/usr/lib/system/libcompiler_rt.dylib", - "/usr/lib/system/libcopyfile.dylib", - "/usr/lib/system/libcorecrypto.dylib", - "/usr/lib/system/libdispatch.dylib", - "/usr/lib/system/libdyld.dylib", - "/usr/lib/system/libkeymgr.dylib", - "/usr/lib/system/liblaunch.dylib", - "/usr/lib/system/libmacho.dylib", - "/usr/lib/system/libquarantine.dylib", - "/usr/lib/system/libremovefile.dylib", - "/usr/lib/system/libsystem_asl.dylib", - "/usr/lib/system/libsystem_blocks.dylib", - "/usr/lib/system/libsystem_c.dylib", - "/usr/lib/system/libsystem_configuration.dylib", - "/usr/lib/system/libsystem_coreservices.dylib", - "/usr/lib/system/libsystem_darwin.dylib", - "/usr/lib/system/libsystem_dnssd.dylib", - "/usr/lib/system/libsystem_featureflags.dylib", - "/usr/lib/system/libsystem_info.dylib", - "/usr/lib/system/libsystem_m.dylib", - "/usr/lib/system/libsystem_malloc.dylib", - "/usr/lib/system/libsystem_networkextension.dylib", - "/usr/lib/system/libsystem_notify.dylib", - "/usr/lib/system/libsystem_sandbox.dylib", - "/usr/lib/system/libsystem_secinit.dylib", - "/usr/lib/system/libsystem_kernel.dylib", - "/usr/lib/system/libsystem_platform.dylib", - "/usr/lib/system/libsystem_pthread.dylib", - "/usr/lib/system/libsystem_symptoms.dylib", - "/usr/lib/system/libsystem_trace.dylib", - "/usr/lib/system/libunwind.dylib", - "/usr/lib/system/libxpc.dylib", - "/usr/lib/libobjc.A.dylib", - "/usr/lib/libc++abi.dylib", - "/usr/lib/libfakelink.dylib", - "/usr/lib/libDiagnosticMessagesClient.dylib", - "/usr/lib/libicucore.A.dylib", - "/usr/lib/libz.1.dylib", - "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices", - "/System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics", - "/System/Library/Frameworks/CoreText.framework/Versions/A/CoreText", - "/System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO", - "/System/Library/Frameworks/ColorSync.framework/Versions/A/ColorSync", - "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/ATS", - "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ColorSyncLegacy.framework/Versions/A/ColorSyncLegacy", - "/System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices", - "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices", - "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LangAnalysis.framework/Versions/A/LangAnalysis", - "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/PrintCore", - "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/QD.framework/Versions/A/QD", - "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/SpeechSynthesis.framework/Versions/A/SpeechSynthesis", - "/System/Library/PrivateFrameworks/SkyLight.framework/Versions/A/SkyLight", - "/System/Library/PrivateFrameworks/FontServices.framework/libFontParser.dylib", - "/System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate", - "/System/Library/Frameworks/IOSurface.framework/Versions/A/IOSurface", - "/usr/lib/libxml2.2.dylib", - "/System/Library/Frameworks/CFNetwork.framework/Versions/A/CFNetwork", - "/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation", - "/System/Library/PrivateFrameworks/WatchdogClient.framework/Versions/A/WatchdogClient", - "/usr/lib/libcompression.dylib", - "/System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration", - "/System/Library/Frameworks/CoreDisplay.framework/Versions/A/CoreDisplay", - "/System/Library/PrivateFrameworks/IOAccelerator.framework/Versions/A/IOAccelerator", - "/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit", - "/System/Library/Frameworks/Metal.framework/Versions/A/Metal", - "/System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/MetalPerformanceShaders", - "/System/Library/PrivateFrameworks/MultitouchSupport.framework/Versions/A/MultitouchSupport", - "/System/Library/Frameworks/Security.framework/Versions/A/Security", - "/System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore", - "/usr/lib/libbsm.0.dylib", - "/usr/lib/liblzma.5.dylib", - "/usr/lib/libauto.dylib", - "/System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration", - "/usr/lib/libarchive.2.dylib", - "/usr/lib/liblangid.dylib", - "/usr/lib/libCRFSuite.dylib", - "/usr/lib/libenergytrace.dylib", - "/usr/lib/system/libkxld.dylib", - "/System/Library/PrivateFrameworks/AppleFSCompression.framework/Versions/A/AppleFSCompression", - "/usr/lib/libcoretls.dylib", - "/usr/lib/libcoretls_cfhelpers.dylib", - "/usr/lib/libpam.2.dylib", - "/usr/lib/libsqlite3.dylib", - "/usr/lib/libxar.1.dylib", - "/usr/lib/libbz2.1.0.dylib", - "/usr/lib/libiconv.2.dylib", - "/usr/lib/libcharset.1.dylib", - "/usr/lib/libnetwork.dylib", - "/usr/lib/libpcap.A.dylib", - "/usr/lib/libapple_nghttp2.dylib", - "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/FSEvents", - "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore", - "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata", - "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices", - "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit", - "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/AE", - "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices", - "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices", - "/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SharedFileList.framework/Versions/A/SharedFileList", - "/System/Library/Frameworks/NetFS.framework/Versions/A/NetFS", - "/System/Library/PrivateFrameworks/NetAuth.framework/Versions/A/NetAuth", - "/System/Library/PrivateFrameworks/login.framework/Versions/A/Frameworks/loginsupport.framework/Versions/A/loginsupport", - "/System/Library/PrivateFrameworks/TCC.framework/Versions/A/TCC", - "/System/Library/PrivateFrameworks/CoreNLP.framework/Versions/A/CoreNLP", - "/System/Library/PrivateFrameworks/MetadataUtilities.framework/Versions/A/MetadataUtilities", - "/usr/lib/libmecabra.dylib", - "/usr/lib/libmecab.dylib", - "/usr/lib/libgermantok.dylib", - "/usr/lib/libThaiTokenizer.dylib", - "/usr/lib/libChineseTokenizer.dylib", - "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/vImage", - "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/vecLib", - "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvMisc.dylib", - "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvDSP.dylib", - "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib", - "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib", - "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLinearAlgebra.dylib", - "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparseBLAS.dylib", - "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libQuadrature.dylib", - "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBNNS.dylib", - "/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparse.dylib", - "/System/Library/PrivateFrameworks/LanguageModeling.framework/Versions/A/LanguageModeling", - "/System/Library/PrivateFrameworks/CoreEmoji.framework/Versions/A/CoreEmoji", - "/System/Library/PrivateFrameworks/LinguisticData.framework/Versions/A/LinguisticData", - "/System/Library/PrivateFrameworks/Lexicon.framework/Versions/A/Lexicon", - "/usr/lib/libcmph.dylib", - "/System/Library/Frameworks/OpenDirectory.framework/Versions/A/Frameworks/CFOpenDirectory.framework/Versions/A/CFOpenDirectory", - "/System/Library/Frameworks/OpenDirectory.framework/Versions/A/OpenDirectory", - "/System/Library/PrivateFrameworks/APFS.framework/Versions/A/APFS", - "/System/Library/Frameworks/SecurityFoundation.framework/Versions/A/SecurityFoundation", - "/usr/lib/libutil.dylib", - "/System/Library/PrivateFrameworks/CoreServicesStore.framework/Versions/A/CoreServicesStore", - "/System/Library/Frameworks/ServiceManagement.framework/Versions/A/ServiceManagement", - "/System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/BackgroundTaskManagement", - "/usr/lib/libxslt.1.dylib", - "/System/Library/PrivateFrameworks/GPUWrangler.framework/Versions/A/GPUWrangler", - "/System/Library/PrivateFrameworks/IOPresentment.framework/Versions/A/IOPresentment", - "/System/Library/PrivateFrameworks/DSExternalDisplay.framework/Versions/A/DSExternalDisplay", - "/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreFSCache.dylib", - "/System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSCore.framework/Versions/A/MPSCore", - "/System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSImage.framework/Versions/A/MPSImage", - "/System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSNeuralNetwork.framework/Versions/A/MPSNeuralNetwork", - "/System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSMatrix.framework/Versions/A/MPSMatrix", - "/System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSRayIntersector.framework/Versions/A/MPSRayIntersector", - "/System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSNDArray.framework/Versions/A/MPSNDArray", - "/System/Library/PrivateFrameworks/MetalTools.framework/Versions/A/MetalTools", - "/System/Library/PrivateFrameworks/AggregateDictionary.framework/Versions/A/AggregateDictionary", - "/System/Library/PrivateFrameworks/CoreAnalytics.framework/Versions/A/CoreAnalytics", - "/System/Library/PrivateFrameworks/AppleSauce.framework/Versions/A/AppleSauce", - "/usr/lib/libMobileGestalt.dylib", - "/System/Library/PrivateFrameworks/AppleSystemInfo.framework/Versions/A/AppleSystemInfo", - "/usr/lib/libIOReport.dylib", - "/System/Library/Frameworks/CoreImage.framework/Versions/A/CoreImage", - "/System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo", - "/System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL", - "/System/Library/PrivateFrameworks/GraphVisualizer.framework/Versions/A/GraphVisualizer", - "/System/Library/PrivateFrameworks/FaceCore.framework/Versions/A/FaceCore", - "/System/Library/Frameworks/OpenCL.framework/Versions/A/OpenCL", - "/usr/lib/libFosl_dynamic.dylib", - "/System/Library/PrivateFrameworks/OTSVG.framework/Versions/A/OTSVG", - "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontRegistry.dylib", - "/usr/lib/libate.dylib", - "/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib", - "/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib", - "/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib", - "/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libGIF.dylib", - "/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJP2.dylib", - "/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libRadiance.dylib", - "/usr/lib/libexpat.1.dylib", - "/System/Library/PrivateFrameworks/AppleJPEG.framework/Versions/A/AppleJPEG", - "/System/Library/PrivateFrameworks/FontServices.framework/libhvf.dylib", - "/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGFXShared.dylib", - "/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib", - "/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib", - "/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLImage.dylib", - "/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCVMSPluginSupport.dylib", - "/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreVMClient.dylib", - "/usr/lib/libncurses.5.4.dylib", - "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATSUI.framework/Versions/A/ATSUI", - "/usr/lib/libcups.2.dylib", - "/System/Library/Frameworks/Kerberos.framework/Versions/A/Kerberos", - "/System/Library/Frameworks/GSS.framework/Versions/A/GSS", - "/usr/lib/libresolv.9.dylib", - "/System/Library/PrivateFrameworks/Heimdal.framework/Versions/A/Heimdal", - "/System/Library/Frameworks/Kerberos.framework/Versions/A/Libraries/libHeimdalProxy.dylib", - "/usr/lib/libheimdal-asn1.dylib", - "/System/Library/PrivateFrameworks/CommonAuth.framework/Versions/A/CommonAuth", - "/System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio", - "/System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox", - "/System/Library/PrivateFrameworks/AssertionServices.framework/Versions/A/AssertionServices", - "/System/Library/PrivateFrameworks/AudioToolboxCore.framework/Versions/A/AudioToolboxCore", - "/System/Library/PrivateFrameworks/caulk.framework/Versions/A/caulk", - "/System/Library/PrivateFrameworks/BaseBoard.framework/Versions/A/BaseBoard", - "/System/Library/PrivateFrameworks/RunningBoardServices.framework/Versions/A/RunningBoardServices", - "/System/Library/PrivateFrameworks/PersistentConnection.framework/Versions/A/PersistentConnection", - "/System/Library/PrivateFrameworks/ProtocolBuffer.framework/Versions/A/ProtocolBuffer", - "/System/Library/PrivateFrameworks/CommonUtilities.framework/Versions/A/CommonUtilities", - "/System/Library/PrivateFrameworks/Bom.framework/Versions/A/Bom", - "/usr/lib/libAudioToolboxUtility.dylib", - "/Users/ruben/Projects/opensource/hospitalrun-frontend/node_modules/node-sass/vendor/darwin-x64-67/binding.node" - ] -} \ No newline at end of file