61 lines
1.5 KiB
Vue
61 lines
1.5 KiB
Vue
<script setup lang="ts">
|
|
// Types & Consts
|
|
import type { Permission } from '~/models/role'
|
|
import { permissions } from '~/const/page-permission/ambulatory'
|
|
|
|
// Helpers
|
|
import { usePageChecker } from "~/lib/page-checker"
|
|
import { getServicePosition } from '~/lib/roles'
|
|
|
|
// Pubs
|
|
import Error from '~/components/pub/my-ui/error/error.vue'
|
|
|
|
// Apps
|
|
import Content from '~/components/content/encounter/entry.vue'
|
|
|
|
const { getRouteTitle, getPageAccess } = usePageChecker()
|
|
|
|
definePageMeta({
|
|
middleware: ['rbac'],
|
|
roles: ['emp|reg'],
|
|
title: 'Tambah Kunjungan',
|
|
contentFrame: 'cf-full-width',
|
|
})
|
|
|
|
useHead({
|
|
title: () => `${getRouteTitle()}`,
|
|
})
|
|
|
|
// Preps role checking
|
|
const roleAccess: Record<string, Permission[]> = permissions['/ambulatory/encounter/add'] || {}
|
|
const hasAccess = getPageAccess(roleAccess, 'create')
|
|
|
|
// TODO: Make a function for this
|
|
const { user } = useUserStore()
|
|
const servicePosition = user.user_contractPosition_code == 'emp' ? getServicePosition('emp|'+user.employee_position_code) : null
|
|
const subClassCode = servicePosition == 'med' ?
|
|
// medic
|
|
(user.unit_code == 'rehab' ? 'rehab' : 'reg') :
|
|
// non medic
|
|
(
|
|
user.employee_position_code == 'reg' ?
|
|
(user.installation_code == 'rehab' ? 'rehab' : 'reg') :
|
|
undefined
|
|
)
|
|
</script>
|
|
|
|
<template>
|
|
<div v-if="hasAccess">
|
|
<Content
|
|
:id="0"
|
|
class-code="ambulatory"
|
|
:subclass-code="subClassCode"
|
|
form-type="add"
|
|
/>
|
|
</div>
|
|
<Error
|
|
v-else
|
|
:status-code="403"
|
|
/>
|
|
</template>
|