VistA alert display
This commit is contained in:
parent
98cd861b5b
commit
38b13f9ad6
@ -23,6 +23,7 @@
|
||||
import RoutePatientOrders from './RoutePatientOrders.vue';
|
||||
import RoutePlanner from './RoutePlanner.vue';
|
||||
import RouteRecall from './RouteRecall.vue';
|
||||
import RouteInbox from './RouteInbox.vue';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
@ -45,7 +46,8 @@
|
||||
{ name: 'Schedule', href: '/' },
|
||||
{ name: 'Lookup', href: '/lookup' },
|
||||
{ name: 'Planner', href: '/planner' },
|
||||
{ name: 'Recall', href: '/recall' }
|
||||
{ name: 'Recall', href: '/recall' },
|
||||
{ name: 'Inbox', href: '/inbox' },
|
||||
]
|
||||
}
|
||||
};
|
||||
@ -64,6 +66,7 @@
|
||||
] },
|
||||
{ path: '/planner', component: RoutePlanner },
|
||||
{ path: '/recall', component: RouteRecall },
|
||||
{ path: '/inbox', component: RouteInbox },
|
||||
].forEach(route => this.$root.$router.addRoute(route));
|
||||
await this.$root.$router.replace(this.$route);
|
||||
}
|
||||
|
67
htdocs/RouteInbox.vue
Normal file
67
htdocs/RouteInbox.vue
Normal file
@ -0,0 +1,67 @@
|
||||
<template>
|
||||
<Subtitle value="Inbox" />
|
||||
<div>
|
||||
<div class="card mb-3 shadow">
|
||||
<div class="card-header d-flex justify-content-between align-items-center">
|
||||
<span>Alerts</span>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table" style="font-family: monospace;" v-if="(resultset) && (resultset.length > 0)">
|
||||
<thead>
|
||||
<tr><th>I</th><th>Patient</th><th>Loc</th><th>Urg</th><th>Time</th><th>Message</th><th>XQAID</th><th>DUZ</th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="row in resultset" :style="{ backgroundColor: strHashHSL(row.patient, '90%') }">
|
||||
<td>{{row.info}}</td>
|
||||
<td>{{row.patient}}</td>
|
||||
<td>{{row.location}}</td>
|
||||
<td>{{urgency[row.urgency]}}</td>
|
||||
<td>{{datefmt(strptime_vista(row.meta_time))}}</td>
|
||||
<td>{{row.message}}</td>
|
||||
<td>{{row.meta_xqaid}}</td>
|
||||
<td>{{row.meta_duz}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { strHashHSL, strptime_vista } from './util.mjs';
|
||||
|
||||
import Subtitle from './Subtitle.vue';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
Subtitle
|
||||
},
|
||||
props: {
|
||||
client: Object
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
resultset: [],
|
||||
urgency: { 'n/a': 'n/a', 'low': 'L', 'Moderate': 'M', 'HIGH': 'H' }
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
strHashHSL,
|
||||
strptime_vista,
|
||||
datefmt(date) {
|
||||
return date ? date.toLocaleDateString('sv-SE') + ' ' + date.toLocaleTimeString('en-GB') : '';
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.$watch(
|
||||
() => this.client,
|
||||
async () => {
|
||||
if(this.client) this.resultset = await this.client.ORWORB_FASTUSER();
|
||||
else this.resultset = [];
|
||||
},
|
||||
{ immediate: true }
|
||||
);
|
||||
}
|
||||
};
|
||||
</script>
|
@ -153,6 +153,23 @@ export const d_parse_orderoptions_meddose = data => {
|
||||
return res;
|
||||
};
|
||||
|
||||
export const d_parse_notifications_fastuser = data => d_split(data, '^', 'info', 'patient', 'location', 'urgency', 'time', 'message', 'unk_6', 'meta', 'unk_7', 'unk_8').map(row => {
|
||||
var meta = row.meta.split(';');
|
||||
var xqaid = row.meta_xqaid = meta[0];
|
||||
row.meta_duz = meta[1];
|
||||
row.meta_time = +meta[2];
|
||||
if(xqaid.startsWith('OR,')) {
|
||||
xqaid = xqaid.split(',');
|
||||
row.meta_source = xqaid[0];
|
||||
row.meta_dfn = xqaid[1];
|
||||
row.meta_ien = xqaid[2]; // file 100.9 IEN
|
||||
} else if(xqaid.startsWith('TIU')) {
|
||||
row.meta_source = 'TIU';
|
||||
row.meta_ien = xqaid.substring(3); // document IEN (DA)
|
||||
}
|
||||
return row;
|
||||
});
|
||||
|
||||
export function memoized(fn) {
|
||||
var cache = {};
|
||||
return async function(...args) {
|
||||
@ -297,6 +314,8 @@ export function Client(cid, secret) {
|
||||
this.ORWDPS2_DAY2QTY = memoized(aflow((...args) => this.callctx(['OR CPRS GUI CHART'], 'ORWDPS2_DAY2QTY', ...args), d_log, d_unwrap));
|
||||
this.ORWDPS2_QTY2DAY = memoized(aflow((...args) => this.callctx(['OR CPRS GUI CHART'], 'ORWDPS2_QTY2DAY', ...args), d_log, d_unwrap));
|
||||
|
||||
this.ORWORB_FASTUSER = aflow(() => this.call({ method: 'ORWORB_FASTUSER', context: ['OR CPRS GUI CHART'], ttl: 60, stale: false }), d_log, d_unwrap, d_parse_notifications_fastuser);
|
||||
|
||||
return this;
|
||||
}
|
||||
Client._registry = {};
|
||||
|
Loading…
Reference in New Issue
Block a user