diff --git a/.env.example b/.env.example index 884ee1fb..864bbbe6 100644 --- a/.env.example +++ b/.env.example @@ -1,4 +1,5 @@ NUXT_MAIN_API_ORIGIN= NUXT_BPJS_API_ORIGIN= +NUXT_API_VCLAIM_SWAGGER= # https://vclaim-api.multy.chat NUXT_SYNC_API_ORIGIN= NUXT_API_ORIGIN= diff --git a/app/components/app/ap-lab-order/list.cfg.ts b/app/components/app/ap-lab-order/list.cfg.ts new file mode 100644 index 00000000..186e9f26 --- /dev/null +++ b/app/components/app/ap-lab-order/list.cfg.ts @@ -0,0 +1,58 @@ +import type { Config, RecComponent } from '~/components/pub/my-ui/data-table' +import { defineAsyncComponent } from 'vue' + +type SmallDetailDto = any + +const action = defineAsyncComponent(() => import('~/components/pub/my-ui/data/dropdown-action-dud.vue')) + +export const config: Config = { + cols: [{}, {}, {}, { width: 50 }], + + headers: [[ + { label: 'Tgl. Order' }, + { label: 'No. Order' }, + { label: 'Jadwal Pemeriksaan' }, + { label: 'Lokalisasi' }, + { label: 'Stadium' }, + { label: 'Status' }, + { label: 'Resume' }, + { label: '' }]], + + keys: [ + 'date', + 'number', + 'examinationDate', + 'localization', + 'stadium', + 'resume', + '', + ], + + delKeyNames: [ + { key: 'date', label: 'Tanggal' }, + { key: 'number', label: 'Nomor' }, + ], + + parses: { + parent: (rec: unknown): unknown => { + const recX = rec as SmallDetailDto + return recX.parent?.name || '-' + }, + }, + + components: { + action(rec, idx) { + const res: RecComponent = { + idx, + rec: rec as object, + component: action, + props: { + size: 'sm', + }, + } + return res + }, + }, + + htmls: {}, +} diff --git a/app/components/app/ap-lab-order/list.vue b/app/components/app/ap-lab-order/list.vue new file mode 100644 index 00000000..5d4820cc --- /dev/null +++ b/app/components/app/ap-lab-order/list.vue @@ -0,0 +1,37 @@ + + + diff --git a/app/components/app/encounter/entry-form-prev.vue b/app/components/app/encounter/entry-form-prev.vue new file mode 100644 index 00000000..fdb9a43c --- /dev/null +++ b/app/components/app/encounter/entry-form-prev.vue @@ -0,0 +1,699 @@ + + + diff --git a/app/components/app/encounter/entry-form.vue b/app/components/app/encounter/entry-form.vue index 9950a3dd..46ad2db7 100644 --- a/app/components/app/encounter/entry-form.vue +++ b/app/components/app/encounter/entry-form.vue @@ -23,7 +23,6 @@ import { paymentMethodCodes } from '~/const/key-val/common' // App things import { genEncounter, type Encounter } from '~/models/encounter' -import { se } from 'date-fns/locale' // Props const props = defineProps<{ @@ -50,7 +49,6 @@ model.value = genEncounter() // Common preparation const defaultCBItems = [{ label: 'Pilih', value: '' }] -const paymentMethodItems = CB.recStrToItem(paymentMethodCodes) // Emit preparation const emit = defineEmits<{ @@ -85,12 +83,10 @@ const sepTrafficStatus = ref('') const diagnosis = ref('') const noteReference = ref('Hanya diperlukan jika pembayaran jenis JKN') const noteFile = ref('Gunakan file [.pdf, .jpg, .png] dengan ukuran maksimal 1MB') - +const mode = props.mode !== undefined ? props.mode : 'add' const isLoading = props.isLoading !== undefined ? props.isLoading : false const isReadonly = props.isReadonly !== undefined ? props.isReadonly : false -const mode = props.mode !== undefined ? props.mode : 'add' -// SEP validation state from props -const isSepValid = computed(() => props.isSepValid || false) +const isSepValid = computed(() => props.isSepValid || false) // SEP validation state from props const isCheckingSep = computed(() => props.isCheckingSep || false) const isInsurancePayment = computed(() => ['insurance', 'jkn'].includes(paymentMethodCode.value)) const isDateLoading = ref(false) @@ -100,6 +96,7 @@ const sepFileReview = ref(null) const sippFileReview = ref(null) const unitFullName = ref('') // Unit, specialist, subspecialist const formRef = ref(null) // Expose submit method for parent component +const paymentMethodItems = CB.recStrToItem(paymentMethodCodes) if (mode === 'add') { // Set default sepDate to current date in YYYY-MM-DD format @@ -129,13 +126,15 @@ watch( nationalIdentity.value = objects?.nationalIdentity || '' medicalRecordNumber.value = objects?.medicalRecordNumber || '' doctorCode.value = objects?.doctorCode || '' - paymentMethodCode.value = objects?.paymentMethodCode || '' patientCategory.value = objects?.patientCategory || '' cardNumber.value = objects?.cardNumber || '' sepType.value = objects?.sepType || '' sepNumber.value = objects?.sepNumber || '' sepFileReview.value = objects?.sepFileReview || '' sippFileReview.value = objects?.sippFileReview || '' + if (objects.paymentType) { + paymentMethodCode.value = objects.paymentType || '' + } isDateLoading.value = true setTimeout(() => { registerDate.value = objects?.registerDate || '' @@ -348,7 +347,7 @@ defineExpose({ placeholder="Pilih Dokter" search-placeholder="Cari Dokter" empty-message="Dokter tidak ditemukan" - @update:model-value="(value) => emit('onSelectDoctor', value)" + @update:model-value="(value: any) => emit('onSelectDoctor', value)" /> @@ -395,12 +394,12 @@ defineExpose({ * - @@ -576,7 +575,7 @@ defineExpose({

@@ -601,7 +600,7 @@ defineExpose({

diff --git a/app/components/app/item-price/entry-form.vue b/app/components/app/item-price/entry-form.vue index f2f55d76..5f0fafdb 100644 --- a/app/components/app/item-price/entry-form.vue +++ b/app/components/app/item-price/entry-form.vue @@ -1,50 +1,140 @@ diff --git a/app/components/app/item-price/list-cfg.ts b/app/components/app/item-price/list-cfg.ts index c3db4f50..f1ebbd13 100644 --- a/app/components/app/item-price/list-cfg.ts +++ b/app/components/app/item-price/list-cfg.ts @@ -3,27 +3,23 @@ import { defineAsyncComponent } from 'vue' const action = defineAsyncComponent(() => import('~/components/pub/my-ui/data/dropdown-action-dud.vue')) -const _doctorStatus = { - 0: 'Tidak Aktif', - 1: 'Aktif', -} - export const config: Config = { - cols: [{}, {}, { width: 50 }], + cols: [{}, {}, {}, { width: 50 }], headers: [ [ - { label: 'Kode' }, - { label: 'Nama' }, + { label: 'Item' }, + { label: 'Harga' }, + { label: 'Perusahaan Asuransi' }, { label: 'Aksi' }, ], ], - keys: ['code', 'name', 'action'], + keys: ['item_code', 'price', 'insuranceCompany_code', 'action'], delKeyNames: [ - { key: 'code', label: 'Kode' }, - { key: 'name', label: 'Nama' }, + { key: 'item_code', label: 'Item' }, + { key: 'insuranceCompany_code', label: 'Perusahaan Asuransi' }, ], parses: {}, @@ -39,9 +35,5 @@ export const config: Config = { }, }, - htmls: { - patient_address(_rec) { - return '-' - }, - }, + htmls: {}, } diff --git a/app/components/app/item-price/list.vue b/app/components/app/item-price/list.vue index 96697bde..2f7908cb 100644 --- a/app/components/app/item-price/list.vue +++ b/app/components/app/item-price/list.vue @@ -1,14 +1,39 @@ diff --git a/app/components/app/item-price/picker.vue b/app/components/app/item-price/picker.vue deleted file mode 100644 index e69de29b..00000000 diff --git a/app/components/app/item-price/search.vue b/app/components/app/item-price/search.vue deleted file mode 100644 index e69de29b..00000000 diff --git a/app/components/app/item-price/status-badge.vue b/app/components/app/item-price/status-badge.vue deleted file mode 100644 index 32cdfbca..00000000 --- a/app/components/app/item-price/status-badge.vue +++ /dev/null @@ -1,29 +0,0 @@ - - - diff --git a/app/components/app/item/entry-form.vue b/app/components/app/item/entry-form.vue index 7ddc930b..e40f1f66 100644 --- a/app/components/app/item/entry-form.vue +++ b/app/components/app/item/entry-form.vue @@ -1,68 +1,227 @@ diff --git a/app/components/app/item/list-cfg.ts b/app/components/app/item/list-cfg.ts index c3db4f50..fc3e6770 100644 --- a/app/components/app/item/list-cfg.ts +++ b/app/components/app/item/list-cfg.ts @@ -3,30 +3,78 @@ import { defineAsyncComponent } from 'vue' const action = defineAsyncComponent(() => import('~/components/pub/my-ui/data/dropdown-action-dud.vue')) -const _doctorStatus = { - 0: 'Tidak Aktif', - 1: 'Aktif', -} - export const config: Config = { - cols: [{}, {}, { width: 50 }], + cols: [ + { width: 100 }, + { width: 100 }, + { width: 100 }, + { width: 100 }, + { width: 100 }, + { width: 100 }, + { width: 100 }, + { width: 100 }, + { width: 50 }, + ], headers: [ [ { label: 'Kode' }, { label: 'Nama' }, + { label: 'Item Group' }, + { label: 'UOM' }, + { label: 'Infra' }, + { label: 'Stok' }, + { label: 'Harga Beli' }, + { label: 'Harga Jual' }, { label: 'Aksi' }, ], ], - keys: ['code', 'name', 'action'], + keys: ['code', 'name', 'itemGroup_code', 'uom_code', 'infra_code', 'stock', 'buyingPrice', 'sellingPrice', 'action'], delKeyNames: [ { key: 'code', label: 'Kode' }, { key: 'name', label: 'Nama' }, ], - parses: {}, + parses: { + itemGroup_code: (rec: unknown): unknown => { + const recX = rec as any + return recX.itemGroup_code || '-' + }, + uom_code: (rec: unknown): unknown => { + const recX = rec as any + return recX.uom?.name || '-' + }, + infra_code: (rec: unknown): unknown => { + const recX = rec as any + return recX.infra_code || '-' + }, + stock: (rec: unknown): unknown => { + const recX = rec as any + const value = recX.stock + if (value === null || value === undefined) { + return '-' + } + return value + }, + buyingPrice: (rec: unknown): unknown => { + const recX = rec as any + const value = recX.buyingPrice + if (value === null || value === undefined) { + return '-' + } + return value + }, + sellingPrice: (rec: unknown): unknown => { + const recX = rec as any + const value = recX.sellingPrice + if (value === null || value === undefined) { + return '-' + } + return value + }, + }, components: { action(rec, idx) { @@ -39,9 +87,5 @@ export const config: Config = { }, }, - htmls: { - patient_address(_rec) { - return '-' - }, - }, + htmls: {}, } diff --git a/app/components/app/item/list.vue b/app/components/app/item/list.vue index 96697bde..2f7908cb 100644 --- a/app/components/app/item/list.vue +++ b/app/components/app/item/list.vue @@ -1,14 +1,39 @@ diff --git a/app/components/app/item/picker.vue b/app/components/app/item/picker.vue deleted file mode 100644 index e69de29b..00000000 diff --git a/app/components/app/item/search.vue b/app/components/app/item/search.vue deleted file mode 100644 index e69de29b..00000000 diff --git a/app/components/app/item/status-badge.vue b/app/components/app/item/status-badge.vue deleted file mode 100644 index 32cdfbca..00000000 --- a/app/components/app/item/status-badge.vue +++ /dev/null @@ -1,29 +0,0 @@ - - - diff --git a/app/components/app/mcu-order/entry-for-ap.vue b/app/components/app/mcu-order/entry-for-ap.vue new file mode 100644 index 00000000..80d0f7df --- /dev/null +++ b/app/components/app/mcu-order/entry-for-ap.vue @@ -0,0 +1,157 @@ + + +