diff --git a/assets/scss/_colors.scss b/assets/scss/_colors.scss index a05e544..f82620b 100644 --- a/assets/scss/_colors.scss +++ b/assets/scss/_colors.scss @@ -1,6 +1,5 @@ @use 'sass:map'; -// Color Palette Variables $neutral-900: #212121; $neutral-800: #4D4D4D; $neutral-700: #717171; diff --git a/components/features/queue/CurrentPatientCard.vue b/components/features/queue/CurrentPatientCard.vue index afc7fe3..5f4b141 100644 --- a/components/features/queue/CurrentPatientCard.vue +++ b/components/features/queue/CurrentPatientCard.vue @@ -11,19 +11,19 @@
- + mdi-check Selesai - + mdi-clock-alert Terlambat - + mdi-pause Pending - + mdi-swap-horizontal {{ changeButtonText }} diff --git a/components/features/queue/PatientCard.vue b/components/features/queue/PatientCard.vue new file mode 100644 index 0000000..441ad19 --- /dev/null +++ b/components/features/queue/PatientCard.vue @@ -0,0 +1,214 @@ + + + + + \ No newline at end of file diff --git a/components/features/queue/TabelPatientData.vue b/components/features/queue/TabelPatientData.vue index 530db08..a8fc2df 100644 --- a/components/features/queue/TabelPatientData.vue +++ b/components/features/queue/TabelPatientData.vue @@ -1,8 +1,8 @@ \ No newline at end of file diff --git a/components/verification/PatientVerificationList.vue b/components/verification/PatientVerificationList.vue new file mode 100644 index 0000000..5e2d2ac --- /dev/null +++ b/components/verification/PatientVerificationList.vue @@ -0,0 +1,245 @@ + + + + + \ No newline at end of file diff --git a/components/verification/QRVerificationDialog.vue b/components/verification/QRVerificationDialog.vue new file mode 100644 index 0000000..b2db316 --- /dev/null +++ b/components/verification/QRVerificationDialog.vue @@ -0,0 +1,315 @@ + + + + + \ No newline at end of file diff --git a/components/verification/VerificationSearchTabs.vue b/components/verification/VerificationSearchTabs.vue new file mode 100644 index 0000000..d81b88c --- /dev/null +++ b/components/verification/VerificationSearchTabs.vue @@ -0,0 +1,120 @@ + + + + + \ No newline at end of file diff --git a/nuxt.config.ts b/nuxt.config.ts index 0cfe2cc..8ed95ff 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -19,15 +19,23 @@ export default defineNuxtConfig({ "@nuxt/test-utils", "@nuxt/ui", "@pinia/nuxt", + "@vesp/nuxt-fontawesome", "@nuxtjs/google-fonts", (_options, nuxt) => { nuxt.hooks.hook("vite:extendConfig", (config) => { // @ts-expect-error config.plugins.push(vuetify({ autoImport: true })); - }); + }); }, ], + fontawesome: { + icons: { + solid: ["dna", "user", "home", "gear"], + regular: ["heart"], + brands: ["github"], + }, + }, googleFonts: { families: { Inter: [400, 500, 600, 700], @@ -41,8 +49,8 @@ export default defineNuxtConfig({ keycloakClientSecret: process.env.KEYCLOAK_CLIENT_SECRET, keycloakIssuer: process.env.KEYCLOAK_ISSUER, public: { - authUrl: process.env.AUTH_ORIGIN || 'http://localhost:3001' - } + authUrl: process.env.AUTH_ORIGIN || "http://localhost:3001", + }, }, build: { @@ -54,10 +62,10 @@ export default defineNuxtConfig({ "@mdi/font/css/materialdesignicons.min.css", "~/assets/scss/main.scss", ], - // devServer: { - // host: "10.10.150.114", - // port: 3001, - // }, + devServer: { + host: "10.10.150.114", + port: 3001, + }, // 'http://10.10.150.114:3001/' @@ -65,18 +73,18 @@ export default defineNuxtConfig({ css: { preprocessorOptions: { scss: { - api: 'modern-compiler', + api: "modern-compiler", additionalData: ` @use "sass:math"; @use "sass:map"; @use "~/assets/scss/_variables.scss" as *; @use "~/assets/scss/_colors.scss" as *; - ` - } - } + `, + }, + }, }, ssr: { noExternal: ["vuetify"], }, }, -}); \ No newline at end of file +}); diff --git a/package-lock.json b/package-lock.json index 89c1fcb..bb62b8e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,6 +7,9 @@ "name": "nuxt-app", "hasInstallScript": true, "dependencies": { + "@fortawesome/free-brands-svg-icons": "^7.1.0", + "@fortawesome/free-regular-svg-icons": "^7.1.0", + "@fortawesome/free-solid-svg-icons": "^7.1.0", "@mdi/font": "^7.4.47", "@nuxt/content": "^2.7.2", "@nuxt/eslint": "^1.7.1", @@ -16,6 +19,7 @@ "@nuxt/ui": "^3.3.0", "@pinia/nuxt": "^0.11.2", "@unhead/vue": "^2.0.13", + "@vesp/nuxt-fontawesome": "^2.0.0", "better-sqlite3": "^12.2.0", "chart.js": "^4.5.0", "dayjs": "^1.11.18", @@ -1460,6 +1464,63 @@ } } }, + "node_modules/@fortawesome/fontawesome-common-types": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-7.1.0.tgz", + "integrity": "sha512-l/BQM7fYntsCI//du+6sEnHOP6a74UixFyOYUyz2DLMXKx+6DEhfR3F2NYGE45XH1JJuIamacb4IZs9S0ZOWLA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/fontawesome-svg-core": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-7.1.0.tgz", + "integrity": "sha512-fNxRUk1KhjSbnbuBxlWSnBLKLBNun52ZBTcs22H/xEEzM6Ap81ZFTQ4bZBxVQGQgVY0xugKGoRcCbaKjLQ3XZA==", + "license": "MIT", + "dependencies": { + "@fortawesome/fontawesome-common-types": "7.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-brands-svg-icons": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-7.1.0.tgz", + "integrity": "sha512-9byUd9bgNfthsZAjBl6GxOu1VPHgBuRUP9juI7ZoM98h8xNPTCTagfwUFyYscdZq4Hr7gD1azMfM9s5tIWKZZA==", + "license": "(CC-BY-4.0 AND MIT)", + "dependencies": { + "@fortawesome/fontawesome-common-types": "7.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-regular-svg-icons": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-7.1.0.tgz", + "integrity": "sha512-0e2fdEyB4AR+e6kU4yxwA/MonnYcw/CsMEP9lH82ORFi9svA6/RhDyhxIv5mlJaldmaHLLYVTb+3iEr+PDSZuQ==", + "license": "(CC-BY-4.0 AND MIT)", + "dependencies": { + "@fortawesome/fontawesome-common-types": "7.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-solid-svg-icons": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-7.1.0.tgz", + "integrity": "sha512-Udu3K7SzAo9N013qt7qmm22/wo2hADdheXtBfxFTecp+ogsc0caQNRKEb7pkvvagUGOpG9wJC1ViH6WXs8oXIA==", + "license": "(CC-BY-4.0 AND MIT)", + "dependencies": { + "@fortawesome/fontawesome-common-types": "7.1.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/@humanfs/core": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", @@ -1916,9 +1977,9 @@ } }, "node_modules/@nuxt/devtools-kit": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@nuxt/devtools-kit/-/devtools-kit-3.0.0.tgz", - "integrity": "sha512-/X8GLPYydj/Lbmti7M+HGPeeBCfzzZnAXtERjnbUqQsPNUmRMDt1nOSPHYN4NL6TaH3ECHt3HYqJt/O+Hw2kDg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@nuxt/devtools-kit/-/devtools-kit-3.1.0.tgz", + "integrity": "sha512-1AEZS6ge8G9X3sJauw6hTWqTpUIVqs5Uq9d7Z9cjUAinXjE+pGliVQ+i8xWCNnGLaZCCSqX/I/M/EByD3v2JIA==", "license": "MIT", "dependencies": { "@nuxt/kit": "^4.2.1", @@ -6014,6 +6075,15 @@ "node": ">=8" } }, + "node_modules/@vesp/nuxt-fontawesome": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@vesp/nuxt-fontawesome/-/nuxt-fontawesome-2.0.0.tgz", + "integrity": "sha512-20of3+NQHy5naZIk/DsH4LKjfmjEyiA1ajvrrCZexqEkVuf9e8IBVvtl228zAdzSgRxjHDcWGLKW8j0sirCDzA==", + "license": "MIT", + "dependencies": { + "@fortawesome/fontawesome-svg-core": "^7.0.0" + } + }, "node_modules/@vitejs/plugin-vue": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-6.0.1.tgz", @@ -7191,9 +7261,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.8.20", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.20.tgz", - "integrity": "sha512-JMWsdF+O8Orq3EMukbUN1QfbLK9mX2CkUmQBcW2T0s8OmdAUL5LLM/6wFwSrqXzlXB13yhyK9gTKS1rIizOduQ==", + "version": "2.8.31", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.31.tgz", + "integrity": "sha512-a28v2eWrrRWPpJSzxc+mKwm0ZtVx/G8SepdQZDArnXYU/XS+IF6mp8aB/4E+hH1tyGCoDo3KlUCdlSxGDsRkAw==", "license": "Apache-2.0", "bin": { "baseline-browser-mapping": "dist/cli.js" @@ -7223,9 +7293,9 @@ } }, "node_modules/birpc": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/birpc/-/birpc-2.6.1.tgz", - "integrity": "sha512-LPnFhlDpdSH6FJhJyn4M0kFO7vtQ5iPw24FnG0y21q09xC7e8+1LeR31S1MAIrDAHp4m7aas4bEkTDTvMAtebQ==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/birpc/-/birpc-2.8.0.tgz", + "integrity": "sha512-Bz2a4qD/5GRhiHSwj30c/8kC8QGj12nNDwz3D4ErQ4Xhy35dsSDvF+RA/tWpjyU0pdGtSDiEk6B5fBGE1qNVhw==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/antfu" @@ -7537,9 +7607,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001751", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001751.tgz", - "integrity": "sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw==", + "version": "1.0.30001757", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001757.tgz", + "integrity": "sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ==", "funding": [ { "type": "opencollective", @@ -8635,9 +8705,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.241", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.241.tgz", - "integrity": "sha512-ILMvKX/ZV5WIJzzdtuHg8xquk2y0BOGlFOxBVwTpbiXqWIH0hamG45ddU4R3PQ0gYu+xgo0vdHXHli9sHIGb4w==", + "version": "1.5.262", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.262.tgz", + "integrity": "sha512-NlAsMteRHek05jRUxUR0a5jpjYq9ykk6+kO0yRaMi5moe7u0fVIOeQ3Y30A8dIiWFBNUoQGi1ljb1i5VtS9WQQ==", "license": "ISC" }, "node_modules/embla-carousel": { @@ -16314,9 +16384,9 @@ } }, "node_modules/srvx": { - "version": "0.8.16", - "resolved": "https://registry.npmjs.org/srvx/-/srvx-0.8.16.tgz", - "integrity": "sha512-hmcGW4CgroeSmzgF1Ihwgl+Ths0JqAJ7HwjP2X7e3JzY7u4IydLMcdnlqGQiQGUswz+PO9oh/KtCpOISIvs9QQ==", + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/srvx/-/srvx-0.9.6.tgz", + "integrity": "sha512-5L4rT6qQqqb+xcoDoklUgCNdmzqJ6vbcDRwPVGRXewF55IJH0pqh0lQlrJ266ZWTKJ4mfeioqHQJeAYesS+RrQ==", "license": "MIT", "bin": { "srvx": "bin/srvx.mjs" @@ -18179,9 +18249,9 @@ } }, "node_modules/vite-plugin-vue-tracer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/vite-plugin-vue-tracer/-/vite-plugin-vue-tracer-1.0.1.tgz", - "integrity": "sha512-L5/vAhT6oYbH4RSQYGLN9VfHexWe7SGzca1pJ7oPkL6KtxWA1jbGeb3Ri1JptKzqtd42HinOq4uEYqzhVWrzig==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/vite-plugin-vue-tracer/-/vite-plugin-vue-tracer-1.1.3.tgz", + "integrity": "sha512-fM7hfHELZvbPnSn8EKZwHfzxm5EfYFQIclz8rwcNXfodNbRkwNvh0AGMtaBfMxQ9HC5KVa3KitwHnmE4ezDemw==", "license": "MIT", "dependencies": { "estree-walker": "^3.0.3", diff --git a/package.json b/package.json index 276a6ed..c6c781c 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,9 @@ "postinstall": "nuxt prepare" }, "dependencies": { + "@fortawesome/free-brands-svg-icons": "^7.1.0", + "@fortawesome/free-regular-svg-icons": "^7.1.0", + "@fortawesome/free-solid-svg-icons": "^7.1.0", "@mdi/font": "^7.4.47", "@nuxt/content": "^2.7.2", "@nuxt/eslint": "^1.7.1", @@ -21,6 +24,7 @@ "@nuxt/ui": "^3.3.0", "@pinia/nuxt": "^0.11.2", "@unhead/vue": "^2.0.13", + "@vesp/nuxt-fontawesome": "^2.0.0", "better-sqlite3": "^12.2.0", "chart.js": "^4.5.0", "dayjs": "^1.11.18", diff --git a/pages/AdminKlinik.vue b/pages/AdminKlinik.vue index c708386..4ae89f6 100644 --- a/pages/AdminKlinik.vue +++ b/pages/AdminKlinik.vue @@ -1,97 +1,56 @@ - - \ No newline at end of file diff --git a/pages/AdminLoket.vue b/pages/AdminLoket.vue index 86199de..12f2ac5 100644 --- a/pages/AdminLoket.vue +++ b/pages/AdminLoket.vue @@ -1,96 +1,55 @@ @@ -410,42 +194,6 @@ const getStatusLabel = (status) => { padding: 16px; } -.page-header { - background: linear-gradient(135deg, var(--color-primary-600) 0%, var(--color-primary-700) 100%); - border-radius: 12px; - margin-bottom: 16px; - box-shadow: 0 4px 12px rgba(255, 155, 27, 0.2); -} - -.header-content { - padding: 20px 24px; -} - -.header-left { - display: flex; - align-items: center; - gap: 16px; -} - -.header-text { - color: var(--color-neutral-100); -} - -.page-title { - font-size: 24px; - font-weight: 700; - margin: 0; - line-height: 1.2; - color: var(--color-neutral-100); -} - -.page-subtitle { - font-size: 14px; - margin: 4px 0 0 0; - opacity: 0.9; - color: var(--color-neutral-100); -} - .content-grid { margin: 0 -8px; } @@ -454,261 +202,14 @@ const getStatusLabel = (status) => { padding: 8px; } -.current-patient-card, -.queue-actions-card, -.patient-table-card { - border-radius: 12px; - border: 1px solid var(--color-neutral-500); - background: var(--color-neutral-100); -} - -.section-label { - font-size: 11px; - font-weight: 700; - letter-spacing: 0.5px; - color: var(--color-neutral-600); - text-transform: uppercase; -} - -.patient-details { - background: linear-gradient(135deg, var(--color-primary-200) 0%, var(--color-primary-300) 100%); - border-radius: 8px; - padding: 16px; -} - -.patient-number { - font-size: 28px; - font-weight: 800; - color: var(--color-neutral-900); - line-height: 1; -} - -.patient-info-text { - font-size: 13px; - color: var(--color-neutral-700); - line-height: 1.5; -} - -.action-grid { - display: grid; - grid-template-columns: 1fr 1fr; - gap: 8px; - margin-top: 12px; -} - -.empty-state { - text-align: center; - padding: 32px 16px; -} - -.empty-text { - font-size: 13px; - color: var(--color-neutral-600); - margin-top: 8px; -} - -.quota-info { - display: grid; - grid-template-columns: 1fr 1fr; - gap: 12px; -} - -.quota-item { - background: var(--color-neutral-300); - border-radius: 8px; - padding: 12px; - text-align: center; -} - -.quota-item.full-width { - grid-column: 1 / -1; -} - -.quota-label { - display: block; - font-size: 11px; - color: var(--color-neutral-600); - margin-bottom: 4px; - font-weight: 600; -} - -.quota-value { - display: block; - font-size: 24px; - font-weight: 800; - color: var(--color-neutral-900); -} - -.quota-available { - color: var(--color-success-600); -} - -.quota-used { - display: block; - font-size: 11px; - color: var(--color-neutral-600); - margin-top: 4px; -} - -.call-buttons { - display: grid; - grid-template-columns: repeat(4, 1fr); - gap: 8px; -} - -.call-buttons .v-btn { - font-size: 16px; - font-weight: 700; - height: 44px; -} - .create-buttons .v-btn { text-transform: none; font-weight: 600; } -.table-header { - display: flex; - flex-direction: column; - gap: 12px; -} - -.filters { - display: flex; - gap: 12px; - align-items: center; - flex-wrap: wrap; -} - -.status-filter { - flex: 1; -} - -.status-filter .v-chip { - font-size: 12px; - font-weight: 600; - height: 32px; - border: 1px solid var(--color-neutral-500); - background: var(--color-neutral-100); - color: var(--color-neutral-600); -} - -.status-filter .v-chip.active-chip { - background: var(--color-secondary-600); - color: var(--color-neutral-100); - border-color: var(--color-secondary-600); -} - -.search-field { - max-width: 250px; -} - -:deep(.patient-table) { - border-radius: 8px; -} - -:deep(.patient-table .v-data-table__thead) { - background: var(--color-neutral-300); -} - -:deep(.patient-table th) { - font-size: 11px !important; - font-weight: 700 !important; - color: var(--color-neutral-600) !important; - text-transform: uppercase; - letter-spacing: 0.5px; - padding: 12px 8px !important; -} - -:deep(.patient-table td) { - font-size: 13px !important; - padding: 10px 8px !important; - border-bottom: 1px solid var(--color-neutral-400) !important; -} - -:deep(.patient-table tbody tr:hover) { - background: var(--color-neutral-300) !important; -} - -.queue-number { - font-weight: 700; - color: var(--color-neutral-900); -} - -.status-chip { - font-weight: 600; - font-size: 11px; -} - -.klinik-chip { - font-size: 11px; - font-weight: 600; -} - -.action-buttons-table .v-btn { - text-transform: none; - font-weight: 600; - font-size: 12px; - height: 32px; -} - -.dialog-header { - background: var(--color-neutral-300); - padding: 16px 20px; - display: flex; - align-items: center; - gap: 12px; - font-size: 18px; - font-weight: 700; - color: var(--color-neutral-900); -} - -.klinik-card, -.penunjang-card { - cursor: pointer; - transition: all 0.2s; - border: 2px solid var(--color-neutral-500); - background: var(--color-neutral-100); -} - -.klinik-card:hover, -.penunjang-card:hover { - border-color: var(--color-secondary-600); - background: var(--color-secondary-200); -} - -.klinik-name, -.penunjang-name { - font-size: 13px; - font-weight: 700; - color: var(--color-neutral-900); -} - -.v-btn { - text-transform: none !important; - letter-spacing: 0 !important; -} - @media (max-width: 960px) { .loket-container { padding: 12px; } - - .filters { - flex-direction: column; - align-items: stretch; - } - - .search-field { - max-width: 100%; - } - - .action-grid { - grid-template-columns: 1fr; - } - - .call-buttons { - grid-template-columns: repeat(2, 1fr); - } } \ No newline at end of file diff --git a/pages/Anjungan/Anjungan.vue b/pages/Anjungan/Anjungan.vue index 1f51995..186de69 100644 --- a/pages/Anjungan/Anjungan.vue +++ b/pages/Anjungan/Anjungan.vue @@ -12,15 +12,20 @@
- - mdi-information - Hijau: Tersedia | Merah: Tutup/Penuh - + + mdi-help-circle + Bantuan +
- + - - - -
- -
- -

+ + +

{{ clinic.name }}

-

- {{ clinic.subtitle }} -

+ +
+ + mdi-doctor + + {{ getDisplayDoctorInfo(clinic) }} +
-
- - {{ clinic.schedule }} - + +
+ + mdi-clock-outline + + {{ clinic.schedule || 'Tidak tersedia' }} +
+ + +
+
-
- mdi-hospital-marker-outline -

- Tidak ada klinik yang sesuai filter -

-

- Coba ubah filter pencarian Anda -

+
+ mdi-hospital-marker-outline +

Tidak ada klinik yang sesuai filter

+

Coba ubah filter pencarian Anda

+ + + + mdi-help-circle + Panduan Penggunaan Anjungan + + + +
+

Cara Menggunakan Anjungan Pendaftaran:

+ +
+
1
+
+

Pilih Klinik/Poliklinik

+

Sentuh card klinik yang Anda tuju. Card HIJAU menandakan klinik tersedia, card MERAH menandakan klinik tutup.

+
+
+ +
+
2
+
+

Pilih Jenis Kunjungan

+

SEKARANG: Untuk berobat hari ini
+ PESAN: Untuk membuat janji di hari lain
+ FAST TRACK: Untuk kasus mendesak

+
+
+ +
+
3
+
+

Pilih Jenis Pembayaran

+

Pilih BPJS atau UMUM/JKMM/SPM/DLL sesuai dengan kartu jaminan kesehatan Anda.

+
+
+ +
+
4
+
+

Lengkapi Formulir

+

Isi data yang diminta sesuai jenis kunjungan yang Anda pilih.

+
+
+ + + +
+ mdi-information +

Informasi Tambahan:
+ • Periksa ketersediaan dokter pada setiap card klinik
+ • Pastikan datang 15 menit sebelum jadwal yang dipilih
+ • Bawa kartu identitas dan kartu BPJS (jika menggunakan BPJS)

+
+
+
+ + + + Mengerti + + +
+
+ - - + + mdi-check-circle Konfirmasi Pilihan -
-
- +
+
+
-

- {{ selectedClinic.name }} -

-

+

{{ selectedClinic.name }}

+

{{ selectedClinic.subtitle }}

-
+
+
+

Dokter yang Tersedia:

+
    +
  • + {{ doctor }} +
  • +
+

Shift: {{ selectedClinic.shift }}

Jadwal: {{ selectedClinic.schedule }}

Status: - Tersedia + Tersedia

+ + - + SEKARANG - + PESAN - + FAST TRACK + - + Tutup @@ -189,37 +218,19 @@ - - Jenis Pembayaran + + Jenis Pembayaran - + BPJS - + UMUM / JKMM / SPM / DLL - + Tutup @@ -227,8 +238,8 @@ - - + + Pemesanan Antrian Poliklinik @@ -265,14 +276,10 @@ - + Tutup - + Simpan @@ -280,8 +287,8 @@ - - + + Form Fast Track @@ -334,26 +341,17 @@ - + Tutup - + Simpan - + {{ snackbarText }}