import type { Config } 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-ud.vue'))

export const config: Config = {
  cols: [{}, {}, {}, { width: 100 }, { width: 120 }, {}, {}, {}, { width: 100 }, { width: 50 }],

  headers: [
    [{ label: 'Tanggal' }, { label: 'Diagnosa' }, { label: 'Tanggal Selesai' }, { label: 'Staff' }, { label: 'Aksi' }],
  ],

  keys: ['date', 'diagnosa', 'finishDate', 'staff', 'action'],

  delKeyNames: [
    { key: 'code', label: 'Kode' },
    { key: 'name', label: 'Nama' },
  ],

  parses: {
    time(rec: any) {
      return rec.time ? new Date(rec.time).toLocaleDateString() : ''
    },
    main_complaint(rec: any) {
      const { value } = rec ?? {}

      if (typeof value !== 'string') return '-'

      try {
        const parsed = JSON.parse(value)
        console.log('parsed', parsed)
        return parsed?.['prim-compl'] || '-'
      } catch {
        return '-'
      }
    },
    encounter(rec: any) {
      const data = rec?.encounter ?? {}
      return data?.class_code || '-'
    },
    diagnose(rec: any) {
      const { value } = rec ?? {}

      if (typeof value !== 'string') return '-'

      try {
        const parsed = JSON.parse(value)
        const diagnose = parsed?.diagnose || []
        return diagnose.map((d: any) => d.name).join(', ')
      } catch {
        return '-'
      }
    },
  },

  components: {
    action(rec, idx) {
      return {
        idx,
        rec: rec as object,
        component: action,
      }
    },
  },

  htmls: {
    patient_address(_rec) {
      return '-'
    },
  },
}
