From cc25ae1fe967cd577be9b2010f7d15c6560fbd0b Mon Sep 17 00:00:00 2001 From: "fazri.is" Date: Fri, 17 Apr 2026 13:28:22 +0700 Subject: [PATCH] update --- .gitignore | 3 +- src/controllers/currency.ts | 282 ++++++++++ src/helpers/orm.ts | 3 +- src/model/currencies.ts | 27 + src/routes/private.ts | 1001 ++++++++++++++++++----------------- src/swagger/builder.js | 981 +++++++++++++++++----------------- 6 files changed, 1309 insertions(+), 988 deletions(-) create mode 100644 src/controllers/currency.ts create mode 100644 src/model/currencies.ts diff --git a/.gitignore b/.gitignore index f2b1712..1cb41c1 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,5 @@ dist/ temp/ package-lock.json src/swagger/swagger.json -swagger.json \ No newline at end of file +swagger.json +.prettierrc \ No newline at end of file diff --git a/src/controllers/currency.ts b/src/controllers/currency.ts new file mode 100644 index 0000000..f5f06a6 --- /dev/null +++ b/src/controllers/currency.ts @@ -0,0 +1,282 @@ +import config from "config"; +import { Paging, Status, Currency } from "entity"; +import { NextFunction, Response } from "express"; +import { Request } from "express-jwt"; +import Joi from "joi"; +import { ILogObj, Logger } from "tslog"; +import CommonHelper from "../helpers/common"; +import { ReturnHelper } from "../helpers/express/return"; +import { OrmHelper } from "../helpers/orm"; +import { Language } from "../langs/lang"; +import fs from "fs"; +import { CurrencyModel } from "../model/currencies"; + +const log: Logger = new Logger({ + name: "[CurrencyController]", + type: "pretty", +}); + +export class CurrencyController { + static async list(req: Request, res: Response, next: NextFunction): Promise { + /* + #swagger.tags = ['Currency'] + #swagger.security = [{ + "bearerAuth": [] + }] + #swagger.parameters['filter'] = { + descriptionk:'', + in: 'query', + type: 'string' + } + #swagger.parameters['limit'] = { + in: 'query', + required: true, + type: 'number' + } + #swagger.parameters['page'] = { + in: 'query', + required: true, + type: 'number' + } + #swagger.parameters['with_deleted'] = { + in: 'query', + required: true, + type: 'boolean' + } + #swagger.parameters['order_field'] = { + in: 'query', + required: true, + type: 'string' + } + #swagger.parameters['order_direction'] = { + in: 'query', + required: true, + schema: { + '@enum': ['ASC', 'DESC'] + } + } + */ + + try { + const schema = Joi.object().keys({ + filter: Joi.string().allow("").optional().label("Filter"), + page: Joi.number().required().min(1).label("Page"), + limit: Joi.number().required().min(1).label("Limit"), + with_deleted: Joi.bool().required().label("With Deleted"), + order_field: Joi.string().required().label("Order Field"), + order_direction: Joi.string().allow("asc", "desc").required().label("Order Direction"), + }); + + const param: Paging = await schema.validateAsync(req.query); + const offset = (param.page - 1) * param.limit; + const filter = JSON.parse(param.filter); + const query = await CurrencyModel.list(filter); + const limit = param.limit; + + const res_count = query; + const res_list = query + .orderBy("Currency." + param.order_field, param.order_direction) + .offset(offset) + .limit(limit); + + if (param.with_deleted) { + res_count.withDeleted(); + res_list.withDeleted(); + } + + const current_page = param.page; + const total_count_data = await res_count.getCount(); + const list_data = await res_list.getMany(); + const count_data = CommonHelper.countObject(list_data); + + return ReturnHelper.successResponselist(res, 200, Language.lang.success_view, count_data, current_page, total_count_data, list_data); + } catch (e: unknown) { + log.error(e); + const err = e as Error; + + return ReturnHelper.errorResponse(res, 400, 401, Language.lang.failed_view, err.message); + } + } + + static async create(req: Request, res: Response, next: NextFunction): Promise { + /* + #swagger.tags = ['Currency'] + #swagger.security = [{ + "bearerAuth": [] + }] + #swagger.requestBody = { + required: true, + content: { + "application/json": { + schema: { + $ref: "#/components/schemas/currency" + } + } + } + } + */ + + try { + const schema = Joi.object().keys({ + name: Joi.string().required().label("Name"), + symbol: Joi.string().required().label("Symbol"), + status: Joi.string().uuid().required().valid("Y", "N").label("Status"), + }); + + const param = await schema.validateAsync(req.body); + + const data = new Currency(); + data.name = param.name; + data.symbol = param.symbol; + data.status = param.status; + data.created_by = req.auth.data.name; + + await OrmHelper.DB.manager.save(data); + + return ReturnHelper.successResponseAny(res, 200, Language.lang.success_insert, data); + } catch (e: unknown) { + log.error(e); + const err = e as Error; + + return ReturnHelper.errorResponse(res, 400, 401, Language.lang.failed_insert, err.message); + } + } + + static async detail(req: Request, res: Response, next: NextFunction): Promise { + /* + #swagger.tags = ['Currency'] + #swagger.security = [{ + "bearerAuth": [] + }] + #swagger.parameters['id'] = { + in: 'path', + description: 'Currency ID.', + required: true, + type: 'string' + } + */ + + try { + const schema = Joi.object().keys({ + id: Joi.string().required().label("ID"), + }); + + let param: any = await schema.validateAsync(req.params); + + let data = await CurrencyModel.list({ id: param.id }).then((q) => q.getOne()); + + if (!data) throw { message: "Currency " + Language.lang.failed_not_found }; + + return ReturnHelper.successResponseAny(res, 200, Language.lang.success_view, data); + } catch (e: unknown) { + log.error(e); + const err = e as Error; + + return ReturnHelper.errorResponse(res, 500, 402, Language.lang.failed_view, err.message); + } + } + + static async update(req: Request, res: Response, next: NextFunction): Promise { + /* + #swagger.tags = ['Currency'] + #swagger.security = [{ + "bearerAuth": [] + }] + #swagger.parameters['id'] = { + description:'', + in: 'path', + type: 'string' + } + #swagger.requestBody = { + required: true, + content: { + "application/json": { + schema: { + $ref: "#/components/schemas/currency" + } + } + } + } + */ + + const queryRunner = OrmHelper.DB.createQueryRunner(); + await queryRunner.startTransaction(); + + try { + req.body.id = req.params["id"]; + + const schema = Joi.object().keys({ + id: Joi.string().required().label("Bank ID"), + name: Joi.string().required().label("Name"), + symbol: Joi.string().required().label("Symbol"), + status: Joi.string().uuid().required().valid("Y", "N").label("Status"), + }); + + let param: any = await schema.validateAsync(req.body); + + let currency: Currency = await CurrencyModel.list({ id: param.currency_id }).then((q) => q.getOne()); + if (!currency) throw { message: "Currnecy " + Language.lang.failed_not_found }; + + currency.name = param.name; + currency.symbol = param.symbol; + currency.status = param.status; + + await queryRunner.manager.save(currency); + + await queryRunner.commitTransaction(); + + return ReturnHelper.successResponseAny(res, 200, Language.lang.success_update, currency); + } catch (e: unknown) { + await queryRunner.rollbackTransaction(); + log.error(e); + const err = e as Error; + return ReturnHelper.errorResponse(res, 400, 401, Language.lang.failed_view, err.message); + } finally { + await queryRunner.release(); + } + } + + static async delete(req: Request, res: Response, next: NextFunction): Promise { + /* + #swagger.tags = ['Currency'] + #swagger.security = [{ + "bearerAuth": [] + }] + #swagger.parameters['id'] = { + in: 'path', + description: 'Bank ID.', + required: true, + type: 'string' + } + #swagger.parameters['hard'] = { + in: 'path', + description: 'Is Hard Delete', + required: false, + type: 'boolean' + } + */ + try { + const schema = Joi.object().keys({ + id: Joi.string().uuid().required().label("ID"), + hard: Joi.bool().optional().allow("").label("Is hard delete?"), + }); + + const param: { id: string; hard: boolean } = await schema.validateAsync(req.params); + + const repo = OrmHelper.DB.getRepository(Currency); + + const affected = (!param.hard ? await repo.softDelete({ id: param.id }) : await repo.delete({ id: param.id })).affected; + + if (affected > 0) { + return ReturnHelper.successResponseAny(res, 200, Language.lang.success_delete, {}); + } else { + return ReturnHelper.errorResponse(res, 404, 401, Language.lang.failed_not_found, ""); + } + } catch (e: unknown) { + log.error(e); + const err = e as Error; + + return ReturnHelper.errorResponse(res, 500, 402, Language.lang.failed_delete, err.message); + } + } +} diff --git a/src/helpers/orm.ts b/src/helpers/orm.ts index 7b8b4a0..0ac4c7b 100644 --- a/src/helpers/orm.ts +++ b/src/helpers/orm.ts @@ -1,7 +1,7 @@ import config from "config"; import { DataSource } from "typeorm"; import { ILogObj, Logger } from "tslog"; -import { ResponsiblePartyConsent, Province, City, Subdistrict, Ward, RefferalHospital, RegistrationFee, FareType, RoomStock, Administrativu, Aldeia, District, Menu, Munisipo, Suco, Application, Nationality, Diagnosis, DiagnosticProcedure, Room, ServiceType, ServiceClass, Service, ServiceFare, ServicePackage, Department, DoctorSchedule, MeasurementUnit, ReferenceRange, QueueMonitoring, QueueMonitoringRooms, ExaminationDetail, ExaminationType, User, UserRole, HrmsEmployee, HrmsDepartment, HrmsPosition, HrmsShift, HospitalInformation, ItemOrigin, ItemType, ItemTypeDetail, Unit, ItemCategory, ItemStatus, UsageInstructions, UsageTime, ItemClass, ItemClassDetail, GenericName, Factory, Supplier, FactoryToSupplier, ItemMaster, ItemGroup, PharmacyInfo, ItemPrice, SellingPricePercentage, PatientGroup, PatientGuarantor, InitialStock, DoctorItem, DoctorItemPackage, UserToRoom, RoomToPharmacy, PlanningVerificator, ScheduleSeries, ScheduleException, CardType, PaymentMethod } from "entity"; +import { ResponsiblePartyConsent, Province, City, Subdistrict, Ward, RefferalHospital, RegistrationFee, FareType, RoomStock, Administrativu, Aldeia, District, Menu, Munisipo, Suco, Application, Nationality, Diagnosis, DiagnosticProcedure, Room, ServiceType, ServiceClass, Service, ServiceFare, ServicePackage, Department, DoctorSchedule, MeasurementUnit, ReferenceRange, QueueMonitoring, QueueMonitoringRooms, ExaminationDetail, ExaminationType, User, UserRole, HrmsEmployee, HrmsDepartment, HrmsPosition, HrmsShift, HospitalInformation, ItemOrigin, ItemType, ItemTypeDetail, Unit, ItemCategory, ItemStatus, UsageInstructions, UsageTime, ItemClass, ItemClassDetail, GenericName, Factory, Supplier, FactoryToSupplier, ItemMaster, ItemGroup, PharmacyInfo, ItemPrice, SellingPricePercentage, PatientGroup, Currency, PatientGuarantor, InitialStock, DoctorItem, DoctorItemPackage, UserToRoom, RoomToPharmacy, PlanningVerificator, ScheduleSeries, ScheduleException, CardType, PaymentMethod } from "entity"; export class OrmHelper { static DB: DataSource = null; @@ -58,6 +58,7 @@ export class OrmHelper { ItemType, ItemTypeDetail, Unit, + Currency, ItemCategory, ItemStatus, UsageInstructions, diff --git a/src/model/currencies.ts b/src/model/currencies.ts new file mode 100644 index 0000000..b16d9b4 --- /dev/null +++ b/src/model/currencies.ts @@ -0,0 +1,27 @@ +import { Currency } from "entity"; +import { SelectQueryBuilder } from "typeorm"; +import CommonHelper from "../helpers/common"; +import { OrmHelper } from "../helpers/orm"; + +export class CurrencyModel { + static async list(filter = {}): Promise> { + const repo = OrmHelper.DB.getRepository(Currency); + let whereAttr = []; + let whereVal: any = {}; + if (filter) { + whereAttr = [...whereAttr, ...CommonHelper.handleQueryFilter(filter).whereAttr]; + whereVal = { + ...whereVal, + ...CommonHelper.handleQueryFilter(filter).whereVal, + }; + } + + var query = null; + query = repo.createQueryBuilder(); + if (whereAttr.length != 0) { + query = query.where(whereAttr.join(" and "), whereVal); + } + + return query; + } +} diff --git a/src/routes/private.ts b/src/routes/private.ts index d49a5d0..0fa86dd 100644 --- a/src/routes/private.ts +++ b/src/routes/private.ts @@ -1,501 +1,506 @@ -import express from 'express'; -import { Language } from '../langs/lang'; -import JwtHelper from '../helpers/jwt'; -import { MenuController } from '../controllers/menu'; -import { AdministrativuController } from '../controllers/administrativu'; -import { AldeiaController } from '../controllers/aldeia'; -import { DistrictController } from '../controllers/district'; -import { MunisipoController } from '../controllers/munisipo'; -import { SucoController } from '../controllers/suco'; -import { ApplicationController } from '../controllers/application'; -import { NationalityController } from '../controllers/nationality'; -import { DiagnosisController } from '../controllers/diagnosis'; -import { DiagnosticProcedureController } from '../controllers/diagnostic_procedure'; -import { RoomController } from '../controllers/room'; -import { RoomServicesController } from '../controllers/room_services'; -import { ServiceTypeController } from '../controllers/service_type'; -import { ServiceClassController } from '../controllers/service_class'; -import { ServiceController } from '../controllers/service'; -import { ServiceFareController } from '../controllers/service_fare'; -import { ServicePackageController } from '../controllers/service_package'; -import { DepartmentController } from '../controllers/department'; -import { DoctorScheduleController } from '../controllers/doctor_schedule'; -import { DoctorItemPackageController } from '../controllers/doctor_item_package'; -import { MeasurementUnitController } from '../controllers/measurement_unit'; -import { ReferenceRangeController } from '../controllers/reference_range'; -import { QueueMonitoringController } from '../controllers/queue_monitoring'; -import { ExaminationDetailController } from '../controllers/examination_detail'; -import { ExaminationTypeController } from '../controllers/examination_type'; -import { ServiceExaminationController } from '../controllers/service_examination'; -import { LaboratoryController } from '../controllers/laboratory'; -import { PharmacyController } from '../controllers/pharmacy'; -import { HospitalInformationController } from '../controllers/hospital_information'; -import { ItemCategoryController } from '../controllers/pharmacy/item_category'; -import { ItemStatusController } from '../controllers/pharmacy/item_status'; -import { UnitController } from '../controllers/pharmacy/unit'; -import { ItemTypeDetailController } from '../controllers/pharmacy/item_type_detail'; -import { ItemTypeController } from '../controllers/pharmacy/item_type'; -import { ItemOriginController } from '../controllers/pharmacy/item_origin'; -import { ItemGroupController } from '../controllers/pharmacy/item_group'; -import { UsageInstructionsController } from '../controllers/pharmacy/usage_instructions'; -import { UsageTimeController } from '../controllers/pharmacy/usage_time'; -import { ItemClassController } from '../controllers/pharmacy/item_class'; -import { ItemClassDetailController } from '../controllers/pharmacy/item_class_detail'; -import { FactoryController } from '../controllers/pharmacy/factory'; -import { SupplierController } from '../controllers/pharmacy/supplier'; -import { ItemMasterController } from '../controllers/pharmacy/item_master'; -import { PharmacyInfoController } from '../controllers/pharmacy/pharmacy_info'; -import { ItemPriceController } from '../controllers/pharmacy/item_price'; -import { SellingPricePercentageController } from '../controllers/pharmacy/selling_price_percentage'; -import { FactorytoSupplierController } from '../controllers/pharmacy/factory_to_supplier'; -import { PatientGroupController } from '../controllers/patient_group'; -import { PatientGuarantorController } from '../controllers/patient_guarantor'; -import { GenericNameController } from '../controllers/pharmacy/generic_name'; -import { RefferalHospital } from 'entity'; -import { RefferalHospitalController } from '../controllers/refferal_hospital'; -import { InitialStockController } from '../controllers/pharmacy/initial_stock'; -import { DoctorItemController } from '../controllers/doctor_item'; -import { UserToRoomController } from '../controllers/user_to_room'; -import { RoomToPharmacyController } from '../controllers/room_to_pharmacy'; -import { PlanningVerificatorController } from '../controllers/pharmacy/planning_verificator'; -import { ScheduleController } from '../controllers/schedule'; -import { FareTypeController } from '../controllers/faretype'; -import { CardTypeController } from '../controllers/card_type'; -import { PaymentMethodController } from '../controllers/payment-method'; -import { RegistrationFeeController } from '../controllers/registrationfee'; -import { RegionController } from '../controllers/region'; -import { ResponsiblePartyConsentController } from '../controllers/responsiblepartyconsent'; +import express from "express"; +import { Language } from "../langs/lang"; +import JwtHelper from "../helpers/jwt"; +import { MenuController } from "../controllers/menu"; +import { AdministrativuController } from "../controllers/administrativu"; +import { AldeiaController } from "../controllers/aldeia"; +import { DistrictController } from "../controllers/district"; +import { MunisipoController } from "../controllers/munisipo"; +import { SucoController } from "../controllers/suco"; +import { ApplicationController } from "../controllers/application"; +import { NationalityController } from "../controllers/nationality"; +import { DiagnosisController } from "../controllers/diagnosis"; +import { DiagnosticProcedureController } from "../controllers/diagnostic_procedure"; +import { RoomController } from "../controllers/room"; +import { RoomServicesController } from "../controllers/room_services"; +import { ServiceTypeController } from "../controllers/service_type"; +import { ServiceClassController } from "../controllers/service_class"; +import { ServiceController } from "../controllers/service"; +import { ServiceFareController } from "../controllers/service_fare"; +import { ServicePackageController } from "../controllers/service_package"; +import { DepartmentController } from "../controllers/department"; +import { DoctorScheduleController } from "../controllers/doctor_schedule"; +import { DoctorItemPackageController } from "../controllers/doctor_item_package"; +import { MeasurementUnitController } from "../controllers/measurement_unit"; +import { ReferenceRangeController } from "../controllers/reference_range"; +import { QueueMonitoringController } from "../controllers/queue_monitoring"; +import { ExaminationDetailController } from "../controllers/examination_detail"; +import { ExaminationTypeController } from "../controllers/examination_type"; +import { ServiceExaminationController } from "../controllers/service_examination"; +import { LaboratoryController } from "../controllers/laboratory"; +import { PharmacyController } from "../controllers/pharmacy"; +import { HospitalInformationController } from "../controllers/hospital_information"; +import { ItemCategoryController } from "../controllers/pharmacy/item_category"; +import { ItemStatusController } from "../controllers/pharmacy/item_status"; +import { UnitController } from "../controllers/pharmacy/unit"; +import { ItemTypeDetailController } from "../controllers/pharmacy/item_type_detail"; +import { ItemTypeController } from "../controllers/pharmacy/item_type"; +import { ItemOriginController } from "../controllers/pharmacy/item_origin"; +import { ItemGroupController } from "../controllers/pharmacy/item_group"; +import { UsageInstructionsController } from "../controllers/pharmacy/usage_instructions"; +import { UsageTimeController } from "../controllers/pharmacy/usage_time"; +import { ItemClassController } from "../controllers/pharmacy/item_class"; +import { ItemClassDetailController } from "../controllers/pharmacy/item_class_detail"; +import { FactoryController } from "../controllers/pharmacy/factory"; +import { SupplierController } from "../controllers/pharmacy/supplier"; +import { ItemMasterController } from "../controllers/pharmacy/item_master"; +import { PharmacyInfoController } from "../controllers/pharmacy/pharmacy_info"; +import { ItemPriceController } from "../controllers/pharmacy/item_price"; +import { SellingPricePercentageController } from "../controllers/pharmacy/selling_price_percentage"; +import { FactorytoSupplierController } from "../controllers/pharmacy/factory_to_supplier"; +import { PatientGroupController } from "../controllers/patient_group"; +import { PatientGuarantorController } from "../controllers/patient_guarantor"; +import { GenericNameController } from "../controllers/pharmacy/generic_name"; +import { RefferalHospital } from "entity"; +import { RefferalHospitalController } from "../controllers/refferal_hospital"; +import { InitialStockController } from "../controllers/pharmacy/initial_stock"; +import { DoctorItemController } from "../controllers/doctor_item"; +import { UserToRoomController } from "../controllers/user_to_room"; +import { RoomToPharmacyController } from "../controllers/room_to_pharmacy"; +import { PlanningVerificatorController } from "../controllers/pharmacy/planning_verificator"; +import { ScheduleController } from "../controllers/schedule"; +import { FareTypeController } from "../controllers/faretype"; +import { CardTypeController } from "../controllers/card_type"; +import { PaymentMethodController } from "../controllers/payment-method"; +import { RegistrationFeeController } from "../controllers/registrationfee"; +import { RegionController } from "../controllers/region"; +import { ResponsiblePartyConsentController } from "../controllers/responsiblepartyconsent"; +import { CurrencyController } from "../controllers/currency"; export class RoutePrivate { - static setup(app: express.Application) { - - app.use(Language.apply) - - JwtHelper.secure(app); - - app.get('/api/menu/list', MenuController.list) - app.get('/api/menu/export', MenuController.export) - app.post('/api/menu/create', MenuController.create) - app.put('/api/menu/update/:id', MenuController.update) - app.delete('/api/menu/delete/:id/:hard', MenuController.delete) - app.put('/api/menu/restore/:id', MenuController.restore) - - app.get('/api/administrativu/list', AdministrativuController.list) - app.get('/api/administrativu/export', AdministrativuController.export) - app.post('/api/administrativu/create', AdministrativuController.create) - app.put('/api/administrativu/update/:id', AdministrativuController.update) - app.delete('/api/administrativu/delete/:id/:hard', AdministrativuController.delete) - app.put('/api/administrativu/restore/:id', AdministrativuController.restore) - - app.get('/api/aldeia/list', AldeiaController.list) - app.get('/api/aldeia/export', AldeiaController.export) - app.post('/api/aldeia/create', AldeiaController.create) - app.put('/api/aldeia/update/:id', AldeiaController.update) - app.delete('/api/aldeia/delete/:id/:hard', AldeiaController.delete) - app.put('/api/aldeia/restore/:id', AldeiaController.restore) - - app.get('/api/district/list', DistrictController.list) - app.get('/api/district/export', DistrictController.export) - app.post('/api/district/create', DistrictController.create) - app.put('/api/district/update/:id', DistrictController.update) - app.delete('/api/district/delete/:id/:hard', DistrictController.delete) - app.put('/api/district/restore/:id', DistrictController.restore) - - app.get('/api/munisipo/list', MunisipoController.list) - app.get('/api/munisipo/export', MunisipoController.export) - app.post('/api/munisipo/create', MunisipoController.create) - app.put('/api/munisipo/update/:id', MunisipoController.update) - app.delete('/api/munisipo/delete/:id/:hard', MunisipoController.delete) - app.put('/api/munisipo/restore/:id', MunisipoController.restore) - - app.get('/api/suco/list', SucoController.list) - app.get('/api/suco/export', SucoController.export) - app.post('/api/suco/create', SucoController.create) - app.put('/api/suco/update/:id', SucoController.update) - app.delete('/api/suco/delete/:id/:hard', SucoController.delete) - app.put('/api/suco/restore/:id', SucoController.restore) - - app.get('/api/application/list', ApplicationController.list) - app.get('/api/application/export', ApplicationController.export) - app.post('/api/application/create', ApplicationController.create) - app.put('/api/application/update/:id', ApplicationController.update) - app.delete('/api/application/delete/:id/:hard', ApplicationController.delete) - app.put('/api/application/restore/:id', ApplicationController.restore) - - app.get('/api/nationality/list', NationalityController.list) - app.get('/api/nationality/export', NationalityController.export) - app.post('/api/nationality/create', NationalityController.create) - app.put('/api/nationality/update/:id', NationalityController.update) - app.delete('/api/nationality/delete/:id/:hard', NationalityController.delete) - app.put('/api/nationality/restore/:id', NationalityController.restore) - - app.get('/api/diagnosis/list', DiagnosisController.list) - app.post('/api/diagnosis/create', DiagnosisController.create) - app.get('/api/diagnosis/detail/:id', DiagnosisController.detail) - app.put('/api/diagnosis/update/:id', DiagnosisController.update) - app.delete('/api/diagnosis/delete/:id/:hard', DiagnosisController.delete) - app.put('/api/diagnosis/restore/:id', DiagnosisController.restore) - - app.get('/api/diagnostic-procedure/list', DiagnosticProcedureController.list) - app.post('/api/diagnostic-procedure/create', DiagnosticProcedureController.create) - app.get('/api/diagnostic-procedure/detail/:id', DiagnosticProcedureController.detail) - app.put('/api/diagnostic-procedure/update/:id', DiagnosticProcedureController.update) - app.delete('/api/diagnostic-procedure/delete/:id/:hard', DiagnosticProcedureController.delete) - app.put('/api/diagnostic-procedure/restore/:id', DiagnosticProcedureController.restore) - - app.get('/api/room/list', RoomController.list) - app.get('/api/room/option', RoomController.option); - app.post('/api/room/create', RoomController.create) - app.get('/api/room/detail/:id', RoomController.detail) - app.put('/api/room/update/:id', RoomController.update) - app.delete('/api/room/delete/:id/:hard', RoomController.delete) - app.put('/api/room/restore/:id', RoomController.restore) - app.post('/api/room/upload-picture', RoomController.uploadpicture) - app.delete('/api/room/delete-picture', RoomController.deletepicture) - app.get('/api/room/get-template-picture', RoomController.gettemplatepicture) - - app.get('/api/laboratory/list', LaboratoryController.list) - - app.get('/api/pharmacy/list', PharmacyController.list) - - app.get('/api/room-services/list', RoomServicesController.list) - app.get('/api/room-services/list-by-service', RoomServicesController.listByService) - app.get('/api/room-services/detail/:id', RoomServicesController.detail) - app.put('/api/room-services/:id', RoomServicesController.update) - - app.get('/api/service-type/list', ServiceTypeController.list) - app.post('/api/service-type/create', ServiceTypeController.create) - app.get('/api/service-type/detail/:id', ServiceTypeController.detail) - app.put('/api/service-type/update/:id', ServiceTypeController.update) - app.delete('/api/service-type/delete/:id/:hard', ServiceTypeController.delete) - app.put('/api/service-type/restore/:id', ServiceTypeController.restore) - - app.get('/api/service-class/list', ServiceClassController.list) - app.post('/api/service-class/create', ServiceClassController.create) - app.get('/api/service-class/detail/:id', ServiceClassController.detail) - app.put('/api/service-class/update/:id', ServiceClassController.update) - app.delete('/api/service-class/delete/:id/:hard', ServiceClassController.delete) - app.put('/api/service-class/restore/:id', ServiceClassController.restore) - - app.get('/api/service/list', ServiceController.list) - app.post('/api/service/create', ServiceController.create) - app.get('/api/service/detail/:id', ServiceController.detail) - app.put('/api/service/update/:id', ServiceController.update) - app.delete('/api/service/delete/:id/:hard', ServiceController.delete) - app.put('/api/service/restore/:id', ServiceController.restore) - - app.get('/api/service-fare/list', ServiceFareController.list) - app.get('/api/service-fare/option', ServiceFareController.option) - app.post('/api/service-fare/create', ServiceFareController.create) - app.get('/api/service-fare/detail/:id', ServiceFareController.detail) - app.put('/api/service-fare/update/:id', ServiceFareController.update) - app.delete('/api/service-fare/delete/:id/:hard', ServiceFareController.delete) - app.put('/api/service-fare/restore/:id', ServiceFareController.restore) - - app.get('/api/service-package/list', ServicePackageController.list) - app.post('/api/service-package/create', ServicePackageController.create) - app.get('/api/service-package/detail/:id', ServicePackageController.detail) - app.put('/api/service-package/update/:id', ServicePackageController.update) - app.delete('/api/service-package/delete/:id/:hard', ServicePackageController.delete) - app.put('/api/service-package/restore/:id', ServicePackageController.restore) - - app.get('/api/department/list', DepartmentController.list) - app.post('/api/department/create', DepartmentController.create) - app.get('/api/department/detail/:id', DepartmentController.detail) - app.put('/api/department/update/:id', DepartmentController.update) - app.delete('/api/department/delete/:id/:hard', DepartmentController.delete) - app.put('/api/department/restore/:id', DepartmentController.restore) - - app.get('/api/doctor-schedule/list', DoctorScheduleController.list) - app.post('/api/doctor-schedule/create', DoctorScheduleController.create) - app.get('/api/doctor-schedule/detail/:id', DoctorScheduleController.detail) - app.put('/api/doctor-schedule/update/:id', DoctorScheduleController.update) - app.delete('/api/doctor-schedule/delete/:id/:hard', DoctorScheduleController.delete) - app.put('/api/doctor-schedule/restore/:id', DoctorScheduleController.restore) - - app.get('/api/schedule/list', ScheduleController.list) - app.post('/api/schedule/create', ScheduleController.create) - app.get('/api/schedule/detail/:id', ScheduleController.detail) - app.put('/api/schedule/update/:id', ScheduleController.update) - app.get('/api/schedule/options', ScheduleController.options) - app.get('/api/schedule/calendar', ScheduleController.calendar) - app.post('/api/schedule/:id/create-exception', ScheduleController.createException) - app.delete('/api/schedule/delete/:id/:hard', ScheduleController.delete) - - app.get('/api/doctor-item/list', DoctorItemController.listAll) - app.get('/api/doctor-item/list-fav', DoctorItemController.listFav) - app.post('/api/doctor-item/select-fav', DoctorItemController.selectFav) - app.delete('/api/doctor-item/remove-fav/:fav_id', DoctorItemController.removeFav) - - app.get('/api/doctor-item-package/list', DoctorItemPackageController.list) - app.post('/api/doctor-item-package/create', DoctorItemPackageController.create) - app.get('/api/doctor-item-package/detail/:id', DoctorItemPackageController.detail) - app.put('/api/doctor-item-package/update/:id', DoctorItemPackageController.update) - app.delete('/api/doctor-item-package/delete/:id', DoctorItemPackageController.delete) - - app.get('/api/measurement-unit/list', MeasurementUnitController.list) - app.post('/api/measurement-unit/create', MeasurementUnitController.create) - app.get('/api/measurement-unit/detail/:id', MeasurementUnitController.detail) - app.put('/api/measurement-unit/update/:id', MeasurementUnitController.update) - app.delete('/api/measurement-unit/delete/:id/:hard', MeasurementUnitController.delete) - app.put('/api/measurement-unit/restore/:id', MeasurementUnitController.restore) - - app.get('/api/reference-range/list', ReferenceRangeController.list) - app.post('/api/reference-range/create', ReferenceRangeController.create) - app.get('/api/reference-range/detail/:id', ReferenceRangeController.detail) - app.put('/api/reference-range/update/:id', ReferenceRangeController.update) - app.delete('/api/reference-range/delete/:id/:hard', ReferenceRangeController.delete) - app.put('/api/reference-range/restore/:id', ReferenceRangeController.restore) - - app.get('/api/queue-monitoring/list', QueueMonitoringController.list) - app.post('/api/queue-monitoring/create', QueueMonitoringController.create) - app.get('/api/queue-monitoring/detail/:id', QueueMonitoringController.detail) - app.get('/api/queue-monitoring/:slug', QueueMonitoringController.detailBySlug) - app.put('/api/queue-monitoring/update/:id', QueueMonitoringController.update) - app.delete('/api/queue-monitoring/delete/:id/:hard', QueueMonitoringController.delete) - app.put('/api/queue-monitoring/restore/:id', QueueMonitoringController.restore) - - app.get('/api/examination-detail/list', ExaminationDetailController.list) - app.post('/api/examination-detail/create', ExaminationDetailController.create) - app.get('/api/examination-detail/detail/:id', ExaminationDetailController.detail) - app.put('/api/examination-detail/update/:id', ExaminationDetailController.update) - app.delete('/api/examination-detail/delete/:id/:hard', ExaminationDetailController.delete) - app.put('/api/examination-detail/restore/:id', ExaminationDetailController.restore) - - app.get('/api/examination-type/list', ExaminationTypeController.list) - app.post('/api/examination-type/create', ExaminationTypeController.create) - app.get('/api/examination-type/detail/:id', ExaminationTypeController.detail) - app.put('/api/examination-type/update/:id', ExaminationTypeController.update) - app.delete('/api/examination-type/delete/:id/:hard', ExaminationTypeController.delete) - app.put('/api/examination-type/restore/:id', ExaminationTypeController.restore) - - app.get('/api/service-examination/list', ServiceExaminationController.list) - app.post('/api/service-examination/create', ServiceExaminationController.create) - app.put('/api/service-examination/:id', ServiceExaminationController.update) - - app.get('/api/hospital-information/view', HospitalInformationController.view) - app.post('/api/hospital-information/create', HospitalInformationController.create) - app.put('/api/hospital-information/update/:id', HospitalInformationController.update) - app.post('/api/hospital-information/upload-logo', HospitalInformationController.uploadlogo) - app.delete('/api/hospital-information/delete-logo', HospitalInformationController.deletelogo) - - app.get('/api/pharmacy/item-group/list', ItemGroupController.list) - app.get('/api/pharmacy/item-group/export', ItemGroupController.export) - app.post('/api/pharmacy/item-group/create', ItemGroupController.create) - app.put('/api/pharmacy/item-group/update/:id', ItemGroupController.update) - app.delete('/api/pharmacy/item-group/delete/:id/:hard', ItemGroupController.delete) - app.put('/api/pharmacy/item-group/restore/:id', ItemGroupController.restore) - - app.get('/api/pharmacy/item-origin/list', ItemOriginController.list) - app.get('/api/pharmacy/item-origin/option', ItemOriginController.option) - app.get('/api/pharmacy/item-origin/export', ItemOriginController.export) - app.post('/api/pharmacy/item-origin/create', ItemOriginController.create) - app.put('/api/pharmacy/item-origin/update/:id', ItemOriginController.update) - app.delete('/api/pharmacy/item-origin/delete/:id/:hard', ItemOriginController.delete) - app.put('/api/pharmacy/item-origin/restore/:id', ItemOriginController.restore) - - app.get('/api/pharmacy/item-type/list', ItemTypeController.list) - app.get('/api/pharmacy/item-type/export', ItemTypeController.export) - app.post('/api/pharmacy/item-type/create', ItemTypeController.create) - app.put('/api/pharmacy/item-type/update/:id', ItemTypeController.update) - app.delete('/api/pharmacy/item-type/delete/:id/:hard', ItemTypeController.delete) - app.put('/api/pharmacy/item-type/restore/:id', ItemTypeController.restore) - - app.get('/api/pharmacy/item-type-detail/list', ItemTypeDetailController.list) - app.get('/api/pharmacy/item-type-detail/export', ItemTypeDetailController.export) - app.post('/api/pharmacy/item-type-detail/create', ItemTypeDetailController.create) - app.put('/api/pharmacy/item-type-detail/update/:id', ItemTypeDetailController.update) - app.delete('/api/pharmacy/item-type-detail/delete/:id/:hard', ItemTypeDetailController.delete) - app.put('/api/pharmacy/item-type-detail/restore/:id', ItemTypeDetailController.restore) - - app.get('/api/pharmacy/unit/list', UnitController.list) - app.get('/api/pharmacy/unit/export', UnitController.export) - app.post('/api/pharmacy/unit/create', UnitController.create) - app.put('/api/pharmacy/unit/update/:id', UnitController.update) - app.delete('/api/pharmacy/unit/delete/:id/:hard', UnitController.delete) - app.put('/api/pharmacy/unit/restore/:id', UnitController.restore) - - app.get('/api/pharmacy/item-category/list', ItemCategoryController.list) - app.get('/api/pharmacy/item-category/export', ItemCategoryController.export) - app.post('/api/pharmacy/item-category/create', ItemCategoryController.create) - app.put('/api/pharmacy/item-category/update/:id', ItemCategoryController.update) - app.delete('/api/pharmacy/item-category/delete/:id/:hard', ItemCategoryController.delete) - app.put('/api/pharmacy/item-category/restore/:id', ItemCategoryController.restore) - - app.get('/api/pharmacy/item-status/list', ItemStatusController.list) - app.get('/api/pharmacy/item-status/export', ItemStatusController.export) - app.post('/api/pharmacy/item-status/create', ItemStatusController.create) - app.put('/api/pharmacy/item-status/update/:id', ItemStatusController.update) - app.delete('/api/pharmacy/item-status/delete/:id/:hard', ItemStatusController.delete) - app.put('/api/pharmacy/item-status/restore/:id', ItemStatusController.restore) - - app.get('/api/pharmacy/usage-instructions/list', UsageInstructionsController.list) - app.get('/api/pharmacy/usage-instructions/export', UsageInstructionsController.export) - app.post('/api/pharmacy/usage-instructions/create', UsageInstructionsController.create) - app.put('/api/pharmacy/usage-instructions/update/:id', UsageInstructionsController.update) - app.delete('/api/pharmacy/usage-instructions/delete/:id/:hard', UsageInstructionsController.delete) - app.put('/api/pharmacy/usage-instructions/restore/:id', UsageInstructionsController.restore) - - app.get('/api/pharmacy/usage-time/list', UsageTimeController.list) - app.get('/api/pharmacy/usage-time/export', UsageTimeController.export) - app.post('/api/pharmacy/usage-time/create', UsageTimeController.create) - app.put('/api/pharmacy/usage-time/update/:id', UsageTimeController.update) - app.delete('/api/pharmacy/usage-time/delete/:id/:hard', UsageTimeController.delete) - app.put('/api/pharmacy/usage-time/restore/:id', UsageTimeController.restore) - - app.get('/api/pharmacy/item-class/list', ItemClassController.list) - app.get('/api/pharmacy/item-class/export', ItemClassController.export) - app.post('/api/pharmacy/item-class/create', ItemClassController.create) - app.put('/api/pharmacy/item-class/update/:id', ItemClassController.update) - app.delete('/api/pharmacy/item-class/delete/:id/:hard', ItemClassController.delete) - app.put('/api/pharmacy/item-class/restore/:id', ItemClassController.restore) - - app.get('/api/pharmacy/item-class-detail/list', ItemClassDetailController.list) - app.get('/api/pharmacy/item-class-detail/export', ItemClassDetailController.export) - app.post('/api/pharmacy/item-class-detail/create', ItemClassDetailController.create) - app.put('/api/pharmacy/item-class-detail/update/:id', ItemClassDetailController.update) - app.delete('/api/pharmacy/item-class-detail/delete/:id/:hard', ItemClassDetailController.delete) - app.put('/api/pharmacy/item-class-detail/restore/:id', ItemClassDetailController.restore) - - app.get('/api/pharmacy/generic-name/list', GenericNameController.list) - app.get('/api/pharmacy/generic-name/export', GenericNameController.export) - app.post('/api/pharmacy/generic-name/create', GenericNameController.create) - app.put('/api/pharmacy/generic-name/update/:id', GenericNameController.update) - app.delete('/api/pharmacy/generic-name/delete/:id/:hard', GenericNameController.delete) - app.put('/api/pharmacy/generic-name/restore/:id', GenericNameController.restore) - - app.get('/api/pharmacy/factory/list', FactoryController.list) - app.get('/api/pharmacy/factory/export', FactoryController.export) - app.post('/api/pharmacy/factory/create', FactoryController.create) - app.put('/api/pharmacy/factory/update/:id', FactoryController.update) - app.delete('/api/pharmacy/factory/delete/:id/:hard', FactoryController.delete) - app.put('/api/pharmacy/factory/restore/:id', FactoryController.restore) - - app.get('/api/pharmacy/supplier/list', SupplierController.list) - app.get('/api/pharmacy/supplier/option', SupplierController.option) - app.get('/api/pharmacy/supplier/export', SupplierController.export) - app.post('/api/pharmacy/supplier/create', SupplierController.create) - app.put('/api/pharmacy/supplier/update/:id', SupplierController.update) - app.delete('/api/pharmacy/supplier/delete/:id/:hard', SupplierController.delete) - app.put('/api/pharmacy/supplier/restore/:id', SupplierController.restore) - - app.get('/api/pharmacy/factory-to-supplier/list', FactorytoSupplierController.list) - app.get('/api/pharmacy/factory-to-supplier/export', FactorytoSupplierController.export) - app.post('/api/pharmacy/factory-to-supplier/create', FactorytoSupplierController.create) - // app.put('/api/pharmacy/factory-to-supplier/update/:supplier_id', FactorytoSupplierController.update) - // app.delete('/api/pharmacy/factory-to-supplier/delete/:supplier_id/:hard', FactorytoSupplierController.delete) - // app.put('/api/pharmacy/factory-to-supplier/restore/:supplier_id', FactorytoSupplierController.restore) - - app.get('/api/pharmacy/item-master/list', ItemMasterController.list) - app.get('/api/pharmacy/item-master/option', ItemMasterController.option) - app.get('/api/pharmacy/item-master/export', ItemMasterController.export) - app.post('/api/pharmacy/item-master/create', ItemMasterController.create) - app.put('/api/pharmacy/item-master/update/:id', ItemMasterController.update) - app.delete('/api/pharmacy/item-master/delete/:id/:hard', ItemMasterController.delete) - app.put('/api/pharmacy/item-master/restore/:id', ItemMasterController.restore) - - app.get('/api/pharmacy/pharmacy-info/list', PharmacyInfoController.list) - app.get('/api/pharmacy/pharmacy-info/export', PharmacyInfoController.export) - app.post('/api/pharmacy/pharmacy-info/create', PharmacyInfoController.create) - app.put('/api/pharmacy/pharmacy-info/update/:id', PharmacyInfoController.update) - app.delete('/api/pharmacy/pharmacy-info/delete/:id/:hard', PharmacyInfoController.delete) - app.put('/api/pharmacy/pharmacy-info/restore/:id', PharmacyInfoController.restore) - app.post('/api/pharmacy/pharmacy-info/upload-logo', PharmacyInfoController.uploadlogo) - app.delete('/api/pharmacy/pharmacy-info/delete-logo', PharmacyInfoController.deletelogo) - app.get('/api/pharmacy/pharmacy-info/view/:id', PharmacyInfoController.detail) - - app.get('/api/pharmacy/item-price/list', ItemPriceController.list) - app.get('/api/pharmacy/item-price/export', ItemPriceController.export) - app.post('/api/pharmacy/item-price/create', ItemPriceController.create) - app.put('/api/pharmacy/item-price/update/:id', ItemPriceController.update) - app.delete('/api/pharmacy/item-price/delete/:id/:hard', ItemPriceController.delete) - app.put('/api/pharmacy/item-price/restore/:id', ItemPriceController.restore) - - app.get('/api/pharmacy/selling-price-percentage/list', SellingPricePercentageController.list) - app.get('/api/pharmacy/selling-price-percentage/export', SellingPricePercentageController.export) - app.post('/api/pharmacy/selling-price-percentage/create', SellingPricePercentageController.create) - app.put('/api/pharmacy/selling-price-percentage/update/:id', SellingPricePercentageController.update) - app.delete('/api/pharmacy/selling-price-percentage/delete/:id/:hard', SellingPricePercentageController.delete) - app.put('/api/pharmacy/selling-price-percentage/restore/:id', SellingPricePercentageController.restore) - - app.get('/api/patient-group/list', PatientGroupController.list) - app.get('/api/patient-group/export', PatientGroupController.export) - app.post('/api/patient-group/create', PatientGroupController.create) - app.put('/api/patient-group/update/:id', PatientGroupController.update) - app.delete('/api/patient-group/delete/:id/:hard', PatientGroupController.delete) - app.put('/api/patient-group/restore/:id', PatientGroupController.restore) - app.get('/api/patient-group/view/:id', PatientGroupController.detail) - - app.get('/api/patient-guarantor/list', PatientGuarantorController.list) - app.get('/api/patient-guarantor/export', PatientGuarantorController.export) - app.post('/api/patient-guarantor/create', PatientGuarantorController.create) - app.put('/api/patient-guarantor/update/:id', PatientGuarantorController.update) - app.delete('/api/patient-guarantor/delete/:id/:hard', PatientGuarantorController.delete) - app.put('/api/patient-guarantor/restore/:id', PatientGuarantorController.restore) - app.get('/api/patient-guarantor/view/:id', PatientGuarantorController.detail) - - app.get('/api/refferal-hospital/list', RefferalHospitalController.list) - app.get('/api/refferal-hospital/option', RefferalHospitalController.option) - app.get('/api/refferal-hospital/export', RefferalHospitalController.export) - app.post('/api/refferal-hospital/create', RefferalHospitalController.create) - app.put('/api/refferal-hospital/update/:id', RefferalHospitalController.update) - app.delete('/api/refferal-hospital/delete/:id/:hard', RefferalHospitalController.delete) - app.put('/api/refferal-hospital/restore/:id', RefferalHospitalController.restore) - - app.get('/api/initial-stock/list', InitialStockController.list) - app.post('/api/initial-stock/create', InitialStockController.create) - - app.get('/api/user-to-room/list', UserToRoomController.list) - app.get('/api/user-to-room/export', UserToRoomController.export) - // app.post('/api/user-to-room/create', UserToRoomController.create) - app.put('/api/user-to-room/update/:user_id', UserToRoomController.update) - app.get('/api/user-to-room/view/:id', UserToRoomController.detail) - - app.get('/api/room-to-pharmacy/list', RoomToPharmacyController.list) - app.get('/api/room-to-pharmacy/export', RoomToPharmacyController.export) - // app.post('/api/room-to-pharmacy/create', RoomToPharmacyController.create) - app.put('/api/room-to-pharmacy/update/:room_id', RoomToPharmacyController.update) - app.get('/api/room-to-pharmacy/view/:id', RoomToPharmacyController.detail) - - app.get('/api/pharmacy/planning-verificator/list', PlanningVerificatorController.list) - app.get('/api/pharmacy/planning-verificator/export', PlanningVerificatorController.export) - app.post('/api/pharmacy/planning-verificator/create', PlanningVerificatorController.create) - app.delete('/api/pharmacy/planning-verificator/delete/:id/:hard', PlanningVerificatorController.delete) - app.put('/api/pharmacy/planning-verificator/restore/:id', PlanningVerificatorController.restore) - - app.get('/api/fare-type/list', FareTypeController.list) - app.get('/api/fare-type/option', FareTypeController.option) - app.get('/api/fare-type/detail/:id', FareTypeController.detail) - app.post('/api/fare-type/create', FareTypeController.create) - app.put('/api/fare-type/update/:id', FareTypeController.update) - app.delete('/api/fare-type/delete/:id/:hard', FareTypeController.delete) - app.put('/api/fare-type/restore/:id', FareTypeController.restore) - - app.get('/api/card-type/list', CardTypeController.list) - app.post('/api/card-type/create', CardTypeController.create) - app.get('/api/card-type/detail/:id', CardTypeController.detail) - app.put('/api/card-type/update/:id', CardTypeController.update) - app.delete('/api/card-type/delete/:id/:hard', CardTypeController.delete) - app.put('/api/card-type/restore/:id', CardTypeController.restore) - - app.get('/api/payment-method/list', PaymentMethodController.list) - app.post('/api/payment-method/create', PaymentMethodController.create) - app.get('/api/payment-method/detail/:id', PaymentMethodController.detail) - app.put('/api/payment-method/update/:id', PaymentMethodController.update) - app.delete('/api/payment-method/delete/:id/:hard', PaymentMethodController.delete) - app.put('/api/payment-method/restore/:id', PaymentMethodController.restore) - - app.get('/api/registration-fee/detail', RegistrationFeeController.detail) - app.post('/api/registration-fee/create', RegistrationFeeController.create) - app.put('/api/registration-fee/update/:id', RegistrationFeeController.update) - - app.get('/api/region/province', RegionController.province) - app.get('/api/region/city/:province_code', RegionController.city) - app.get('/api/region/subdistrict/:city_code', RegionController.subdistrict) - app.get('/api/region/ward/:subdistric_code', RegionController.ward) - - app.get('/api/responsible-party-consent/body', ResponsiblePartyConsentController.body) - app.post('/api/responsible-party-consent/create', ResponsiblePartyConsentController.create) - app.put('/api/responsible-party-consent/update/:id', ResponsiblePartyConsentController.update) - } + static setup(app: express.Application) { + app.use(Language.apply); + + JwtHelper.secure(app); + + app.get("/api/menu/list", MenuController.list); + app.get("/api/menu/export", MenuController.export); + app.post("/api/menu/create", MenuController.create); + app.put("/api/menu/update/:id", MenuController.update); + app.delete("/api/menu/delete/:id/:hard", MenuController.delete); + app.put("/api/menu/restore/:id", MenuController.restore); + + app.get("/api/administrativu/list", AdministrativuController.list); + app.get("/api/administrativu/export", AdministrativuController.export); + app.post("/api/administrativu/create", AdministrativuController.create); + app.put("/api/administrativu/update/:id", AdministrativuController.update); + app.delete("/api/administrativu/delete/:id/:hard", AdministrativuController.delete); + app.put("/api/administrativu/restore/:id", AdministrativuController.restore); + + app.get("/api/aldeia/list", AldeiaController.list); + app.get("/api/aldeia/export", AldeiaController.export); + app.post("/api/aldeia/create", AldeiaController.create); + app.put("/api/aldeia/update/:id", AldeiaController.update); + app.delete("/api/aldeia/delete/:id/:hard", AldeiaController.delete); + app.put("/api/aldeia/restore/:id", AldeiaController.restore); + + app.get("/api/district/list", DistrictController.list); + app.get("/api/district/export", DistrictController.export); + app.post("/api/district/create", DistrictController.create); + app.put("/api/district/update/:id", DistrictController.update); + app.delete("/api/district/delete/:id/:hard", DistrictController.delete); + app.put("/api/district/restore/:id", DistrictController.restore); + + app.get("/api/munisipo/list", MunisipoController.list); + app.get("/api/munisipo/export", MunisipoController.export); + app.post("/api/munisipo/create", MunisipoController.create); + app.put("/api/munisipo/update/:id", MunisipoController.update); + app.delete("/api/munisipo/delete/:id/:hard", MunisipoController.delete); + app.put("/api/munisipo/restore/:id", MunisipoController.restore); + + app.get("/api/suco/list", SucoController.list); + app.get("/api/suco/export", SucoController.export); + app.post("/api/suco/create", SucoController.create); + app.put("/api/suco/update/:id", SucoController.update); + app.delete("/api/suco/delete/:id/:hard", SucoController.delete); + app.put("/api/suco/restore/:id", SucoController.restore); + + app.get("/api/application/list", ApplicationController.list); + app.get("/api/application/export", ApplicationController.export); + app.post("/api/application/create", ApplicationController.create); + app.put("/api/application/update/:id", ApplicationController.update); + app.delete("/api/application/delete/:id/:hard", ApplicationController.delete); + app.put("/api/application/restore/:id", ApplicationController.restore); + + app.get("/api/nationality/list", NationalityController.list); + app.get("/api/nationality/export", NationalityController.export); + app.post("/api/nationality/create", NationalityController.create); + app.put("/api/nationality/update/:id", NationalityController.update); + app.delete("/api/nationality/delete/:id/:hard", NationalityController.delete); + app.put("/api/nationality/restore/:id", NationalityController.restore); + + app.get("/api/diagnosis/list", DiagnosisController.list); + app.post("/api/diagnosis/create", DiagnosisController.create); + app.get("/api/diagnosis/detail/:id", DiagnosisController.detail); + app.put("/api/diagnosis/update/:id", DiagnosisController.update); + app.delete("/api/diagnosis/delete/:id/:hard", DiagnosisController.delete); + app.put("/api/diagnosis/restore/:id", DiagnosisController.restore); + + app.get("/api/diagnostic-procedure/list", DiagnosticProcedureController.list); + app.post("/api/diagnostic-procedure/create", DiagnosticProcedureController.create); + app.get("/api/diagnostic-procedure/detail/:id", DiagnosticProcedureController.detail); + app.put("/api/diagnostic-procedure/update/:id", DiagnosticProcedureController.update); + app.delete("/api/diagnostic-procedure/delete/:id/:hard", DiagnosticProcedureController.delete); + app.put("/api/diagnostic-procedure/restore/:id", DiagnosticProcedureController.restore); + + app.get("/api/room/list", RoomController.list); + app.get("/api/room/option", RoomController.option); + app.post("/api/room/create", RoomController.create); + app.get("/api/room/detail/:id", RoomController.detail); + app.put("/api/room/update/:id", RoomController.update); + app.delete("/api/room/delete/:id/:hard", RoomController.delete); + app.put("/api/room/restore/:id", RoomController.restore); + app.post("/api/room/upload-picture", RoomController.uploadpicture); + app.delete("/api/room/delete-picture", RoomController.deletepicture); + app.get("/api/room/get-template-picture", RoomController.gettemplatepicture); + + app.get("/api/laboratory/list", LaboratoryController.list); + + app.get("/api/pharmacy/list", PharmacyController.list); + + app.get("/api/room-services/list", RoomServicesController.list); + app.get("/api/room-services/list-by-service", RoomServicesController.listByService); + app.get("/api/room-services/detail/:id", RoomServicesController.detail); + app.put("/api/room-services/:id", RoomServicesController.update); + + app.get("/api/service-type/list", ServiceTypeController.list); + app.post("/api/service-type/create", ServiceTypeController.create); + app.get("/api/service-type/detail/:id", ServiceTypeController.detail); + app.put("/api/service-type/update/:id", ServiceTypeController.update); + app.delete("/api/service-type/delete/:id/:hard", ServiceTypeController.delete); + app.put("/api/service-type/restore/:id", ServiceTypeController.restore); + + app.get("/api/service-class/list", ServiceClassController.list); + app.post("/api/service-class/create", ServiceClassController.create); + app.get("/api/service-class/detail/:id", ServiceClassController.detail); + app.put("/api/service-class/update/:id", ServiceClassController.update); + app.delete("/api/service-class/delete/:id/:hard", ServiceClassController.delete); + app.put("/api/service-class/restore/:id", ServiceClassController.restore); + + app.get("/api/service/list", ServiceController.list); + app.post("/api/service/create", ServiceController.create); + app.get("/api/service/detail/:id", ServiceController.detail); + app.put("/api/service/update/:id", ServiceController.update); + app.delete("/api/service/delete/:id/:hard", ServiceController.delete); + app.put("/api/service/restore/:id", ServiceController.restore); + + app.get("/api/service-fare/list", ServiceFareController.list); + app.get("/api/service-fare/option", ServiceFareController.option); + app.post("/api/service-fare/create", ServiceFareController.create); + app.get("/api/service-fare/detail/:id", ServiceFareController.detail); + app.put("/api/service-fare/update/:id", ServiceFareController.update); + app.delete("/api/service-fare/delete/:id/:hard", ServiceFareController.delete); + app.put("/api/service-fare/restore/:id", ServiceFareController.restore); + + app.get("/api/service-package/list", ServicePackageController.list); + app.post("/api/service-package/create", ServicePackageController.create); + app.get("/api/service-package/detail/:id", ServicePackageController.detail); + app.put("/api/service-package/update/:id", ServicePackageController.update); + app.delete("/api/service-package/delete/:id/:hard", ServicePackageController.delete); + app.put("/api/service-package/restore/:id", ServicePackageController.restore); + + app.get("/api/department/list", DepartmentController.list); + app.post("/api/department/create", DepartmentController.create); + app.get("/api/department/detail/:id", DepartmentController.detail); + app.put("/api/department/update/:id", DepartmentController.update); + app.delete("/api/department/delete/:id/:hard", DepartmentController.delete); + app.put("/api/department/restore/:id", DepartmentController.restore); + + app.get("/api/doctor-schedule/list", DoctorScheduleController.list); + app.post("/api/doctor-schedule/create", DoctorScheduleController.create); + app.get("/api/doctor-schedule/detail/:id", DoctorScheduleController.detail); + app.put("/api/doctor-schedule/update/:id", DoctorScheduleController.update); + app.delete("/api/doctor-schedule/delete/:id/:hard", DoctorScheduleController.delete); + app.put("/api/doctor-schedule/restore/:id", DoctorScheduleController.restore); + + app.get("/api/schedule/list", ScheduleController.list); + app.post("/api/schedule/create", ScheduleController.create); + app.get("/api/schedule/detail/:id", ScheduleController.detail); + app.put("/api/schedule/update/:id", ScheduleController.update); + app.get("/api/schedule/options", ScheduleController.options); + app.get("/api/schedule/calendar", ScheduleController.calendar); + app.post("/api/schedule/:id/create-exception", ScheduleController.createException); + app.delete("/api/schedule/delete/:id/:hard", ScheduleController.delete); + + app.get("/api/doctor-item/list", DoctorItemController.listAll); + app.get("/api/doctor-item/list-fav", DoctorItemController.listFav); + app.post("/api/doctor-item/select-fav", DoctorItemController.selectFav); + app.delete("/api/doctor-item/remove-fav/:fav_id", DoctorItemController.removeFav); + + app.get("/api/doctor-item-package/list", DoctorItemPackageController.list); + app.post("/api/doctor-item-package/create", DoctorItemPackageController.create); + app.get("/api/doctor-item-package/detail/:id", DoctorItemPackageController.detail); + app.put("/api/doctor-item-package/update/:id", DoctorItemPackageController.update); + app.delete("/api/doctor-item-package/delete/:id", DoctorItemPackageController.delete); + + app.get("/api/measurement-unit/list", MeasurementUnitController.list); + app.post("/api/measurement-unit/create", MeasurementUnitController.create); + app.get("/api/measurement-unit/detail/:id", MeasurementUnitController.detail); + app.put("/api/measurement-unit/update/:id", MeasurementUnitController.update); + app.delete("/api/measurement-unit/delete/:id/:hard", MeasurementUnitController.delete); + app.put("/api/measurement-unit/restore/:id", MeasurementUnitController.restore); + + app.get("/api/reference-range/list", ReferenceRangeController.list); + app.post("/api/reference-range/create", ReferenceRangeController.create); + app.get("/api/reference-range/detail/:id", ReferenceRangeController.detail); + app.put("/api/reference-range/update/:id", ReferenceRangeController.update); + app.delete("/api/reference-range/delete/:id/:hard", ReferenceRangeController.delete); + app.put("/api/reference-range/restore/:id", ReferenceRangeController.restore); + + app.get("/api/queue-monitoring/list", QueueMonitoringController.list); + app.post("/api/queue-monitoring/create", QueueMonitoringController.create); + app.get("/api/queue-monitoring/detail/:id", QueueMonitoringController.detail); + app.get("/api/queue-monitoring/:slug", QueueMonitoringController.detailBySlug); + app.put("/api/queue-monitoring/update/:id", QueueMonitoringController.update); + app.delete("/api/queue-monitoring/delete/:id/:hard", QueueMonitoringController.delete); + app.put("/api/queue-monitoring/restore/:id", QueueMonitoringController.restore); + + app.get("/api/examination-detail/list", ExaminationDetailController.list); + app.post("/api/examination-detail/create", ExaminationDetailController.create); + app.get("/api/examination-detail/detail/:id", ExaminationDetailController.detail); + app.put("/api/examination-detail/update/:id", ExaminationDetailController.update); + app.delete("/api/examination-detail/delete/:id/:hard", ExaminationDetailController.delete); + app.put("/api/examination-detail/restore/:id", ExaminationDetailController.restore); + + app.get("/api/examination-type/list", ExaminationTypeController.list); + app.post("/api/examination-type/create", ExaminationTypeController.create); + app.get("/api/examination-type/detail/:id", ExaminationTypeController.detail); + app.put("/api/examination-type/update/:id", ExaminationTypeController.update); + app.delete("/api/examination-type/delete/:id/:hard", ExaminationTypeController.delete); + app.put("/api/examination-type/restore/:id", ExaminationTypeController.restore); + + app.get("/api/service-examination/list", ServiceExaminationController.list); + app.post("/api/service-examination/create", ServiceExaminationController.create); + app.put("/api/service-examination/:id", ServiceExaminationController.update); + + app.get("/api/hospital-information/view", HospitalInformationController.view); + app.post("/api/hospital-information/create", HospitalInformationController.create); + app.put("/api/hospital-information/update/:id", HospitalInformationController.update); + app.post("/api/hospital-information/upload-logo", HospitalInformationController.uploadlogo); + app.delete("/api/hospital-information/delete-logo", HospitalInformationController.deletelogo); + + app.get("/api/pharmacy/item-group/list", ItemGroupController.list); + app.get("/api/pharmacy/item-group/export", ItemGroupController.export); + app.post("/api/pharmacy/item-group/create", ItemGroupController.create); + app.put("/api/pharmacy/item-group/update/:id", ItemGroupController.update); + app.delete("/api/pharmacy/item-group/delete/:id/:hard", ItemGroupController.delete); + app.put("/api/pharmacy/item-group/restore/:id", ItemGroupController.restore); + + app.get("/api/pharmacy/item-origin/list", ItemOriginController.list); + app.get("/api/pharmacy/item-origin/option", ItemOriginController.option); + app.get("/api/pharmacy/item-origin/export", ItemOriginController.export); + app.post("/api/pharmacy/item-origin/create", ItemOriginController.create); + app.put("/api/pharmacy/item-origin/update/:id", ItemOriginController.update); + app.delete("/api/pharmacy/item-origin/delete/:id/:hard", ItemOriginController.delete); + app.put("/api/pharmacy/item-origin/restore/:id", ItemOriginController.restore); + + app.get("/api/pharmacy/item-type/list", ItemTypeController.list); + app.get("/api/pharmacy/item-type/export", ItemTypeController.export); + app.post("/api/pharmacy/item-type/create", ItemTypeController.create); + app.put("/api/pharmacy/item-type/update/:id", ItemTypeController.update); + app.delete("/api/pharmacy/item-type/delete/:id/:hard", ItemTypeController.delete); + app.put("/api/pharmacy/item-type/restore/:id", ItemTypeController.restore); + + app.get("/api/pharmacy/item-type-detail/list", ItemTypeDetailController.list); + app.get("/api/pharmacy/item-type-detail/export", ItemTypeDetailController.export); + app.post("/api/pharmacy/item-type-detail/create", ItemTypeDetailController.create); + app.put("/api/pharmacy/item-type-detail/update/:id", ItemTypeDetailController.update); + app.delete("/api/pharmacy/item-type-detail/delete/:id/:hard", ItemTypeDetailController.delete); + app.put("/api/pharmacy/item-type-detail/restore/:id", ItemTypeDetailController.restore); + + app.get("/api/pharmacy/unit/list", UnitController.list); + app.get("/api/pharmacy/unit/export", UnitController.export); + app.post("/api/pharmacy/unit/create", UnitController.create); + app.put("/api/pharmacy/unit/update/:id", UnitController.update); + app.delete("/api/pharmacy/unit/delete/:id/:hard", UnitController.delete); + app.put("/api/pharmacy/unit/restore/:id", UnitController.restore); + + app.get("/api/currency/list", CurrencyController.list); + app.post("/api/currency/create", CurrencyController.create); + app.put("/api/currency/update/:id", CurrencyController.update); + app.delete("/api/currency/delete/:id/:hard", CurrencyController.delete); + + app.get("/api/pharmacy/item-category/list", ItemCategoryController.list); + app.get("/api/pharmacy/item-category/export", ItemCategoryController.export); + app.post("/api/pharmacy/item-category/create", ItemCategoryController.create); + app.put("/api/pharmacy/item-category/update/:id", ItemCategoryController.update); + app.delete("/api/pharmacy/item-category/delete/:id/:hard", ItemCategoryController.delete); + app.put("/api/pharmacy/item-category/restore/:id", ItemCategoryController.restore); + + app.get("/api/pharmacy/item-status/list", ItemStatusController.list); + app.get("/api/pharmacy/item-status/export", ItemStatusController.export); + app.post("/api/pharmacy/item-status/create", ItemStatusController.create); + app.put("/api/pharmacy/item-status/update/:id", ItemStatusController.update); + app.delete("/api/pharmacy/item-status/delete/:id/:hard", ItemStatusController.delete); + app.put("/api/pharmacy/item-status/restore/:id", ItemStatusController.restore); + + app.get("/api/pharmacy/usage-instructions/list", UsageInstructionsController.list); + app.get("/api/pharmacy/usage-instructions/export", UsageInstructionsController.export); + app.post("/api/pharmacy/usage-instructions/create", UsageInstructionsController.create); + app.put("/api/pharmacy/usage-instructions/update/:id", UsageInstructionsController.update); + app.delete("/api/pharmacy/usage-instructions/delete/:id/:hard", UsageInstructionsController.delete); + app.put("/api/pharmacy/usage-instructions/restore/:id", UsageInstructionsController.restore); + + app.get("/api/pharmacy/usage-time/list", UsageTimeController.list); + app.get("/api/pharmacy/usage-time/export", UsageTimeController.export); + app.post("/api/pharmacy/usage-time/create", UsageTimeController.create); + app.put("/api/pharmacy/usage-time/update/:id", UsageTimeController.update); + app.delete("/api/pharmacy/usage-time/delete/:id/:hard", UsageTimeController.delete); + app.put("/api/pharmacy/usage-time/restore/:id", UsageTimeController.restore); + + app.get("/api/pharmacy/item-class/list", ItemClassController.list); + app.get("/api/pharmacy/item-class/export", ItemClassController.export); + app.post("/api/pharmacy/item-class/create", ItemClassController.create); + app.put("/api/pharmacy/item-class/update/:id", ItemClassController.update); + app.delete("/api/pharmacy/item-class/delete/:id/:hard", ItemClassController.delete); + app.put("/api/pharmacy/item-class/restore/:id", ItemClassController.restore); + + app.get("/api/pharmacy/item-class-detail/list", ItemClassDetailController.list); + app.get("/api/pharmacy/item-class-detail/export", ItemClassDetailController.export); + app.post("/api/pharmacy/item-class-detail/create", ItemClassDetailController.create); + app.put("/api/pharmacy/item-class-detail/update/:id", ItemClassDetailController.update); + app.delete("/api/pharmacy/item-class-detail/delete/:id/:hard", ItemClassDetailController.delete); + app.put("/api/pharmacy/item-class-detail/restore/:id", ItemClassDetailController.restore); + + app.get("/api/pharmacy/generic-name/list", GenericNameController.list); + app.get("/api/pharmacy/generic-name/export", GenericNameController.export); + app.post("/api/pharmacy/generic-name/create", GenericNameController.create); + app.put("/api/pharmacy/generic-name/update/:id", GenericNameController.update); + app.delete("/api/pharmacy/generic-name/delete/:id/:hard", GenericNameController.delete); + app.put("/api/pharmacy/generic-name/restore/:id", GenericNameController.restore); + + app.get("/api/pharmacy/factory/list", FactoryController.list); + app.get("/api/pharmacy/factory/export", FactoryController.export); + app.post("/api/pharmacy/factory/create", FactoryController.create); + app.put("/api/pharmacy/factory/update/:id", FactoryController.update); + app.delete("/api/pharmacy/factory/delete/:id/:hard", FactoryController.delete); + app.put("/api/pharmacy/factory/restore/:id", FactoryController.restore); + + app.get("/api/pharmacy/supplier/list", SupplierController.list); + app.get("/api/pharmacy/supplier/option", SupplierController.option); + app.get("/api/pharmacy/supplier/export", SupplierController.export); + app.post("/api/pharmacy/supplier/create", SupplierController.create); + app.put("/api/pharmacy/supplier/update/:id", SupplierController.update); + app.delete("/api/pharmacy/supplier/delete/:id/:hard", SupplierController.delete); + app.put("/api/pharmacy/supplier/restore/:id", SupplierController.restore); + + app.get("/api/pharmacy/factory-to-supplier/list", FactorytoSupplierController.list); + app.get("/api/pharmacy/factory-to-supplier/export", FactorytoSupplierController.export); + app.post("/api/pharmacy/factory-to-supplier/create", FactorytoSupplierController.create); + // app.put('/api/pharmacy/factory-to-supplier/update/:supplier_id', FactorytoSupplierController.update) + // app.delete('/api/pharmacy/factory-to-supplier/delete/:supplier_id/:hard', FactorytoSupplierController.delete) + // app.put('/api/pharmacy/factory-to-supplier/restore/:supplier_id', FactorytoSupplierController.restore) + + app.get("/api/pharmacy/item-master/list", ItemMasterController.list); + app.get("/api/pharmacy/item-master/option", ItemMasterController.option); + app.get("/api/pharmacy/item-master/export", ItemMasterController.export); + app.post("/api/pharmacy/item-master/create", ItemMasterController.create); + app.put("/api/pharmacy/item-master/update/:id", ItemMasterController.update); + app.delete("/api/pharmacy/item-master/delete/:id/:hard", ItemMasterController.delete); + app.put("/api/pharmacy/item-master/restore/:id", ItemMasterController.restore); + + app.get("/api/pharmacy/pharmacy-info/list", PharmacyInfoController.list); + app.get("/api/pharmacy/pharmacy-info/export", PharmacyInfoController.export); + app.post("/api/pharmacy/pharmacy-info/create", PharmacyInfoController.create); + app.put("/api/pharmacy/pharmacy-info/update/:id", PharmacyInfoController.update); + app.delete("/api/pharmacy/pharmacy-info/delete/:id/:hard", PharmacyInfoController.delete); + app.put("/api/pharmacy/pharmacy-info/restore/:id", PharmacyInfoController.restore); + app.post("/api/pharmacy/pharmacy-info/upload-logo", PharmacyInfoController.uploadlogo); + app.delete("/api/pharmacy/pharmacy-info/delete-logo", PharmacyInfoController.deletelogo); + app.get("/api/pharmacy/pharmacy-info/view/:id", PharmacyInfoController.detail); + + app.get("/api/pharmacy/item-price/list", ItemPriceController.list); + app.get("/api/pharmacy/item-price/export", ItemPriceController.export); + app.post("/api/pharmacy/item-price/create", ItemPriceController.create); + app.put("/api/pharmacy/item-price/update/:id", ItemPriceController.update); + app.delete("/api/pharmacy/item-price/delete/:id/:hard", ItemPriceController.delete); + app.put("/api/pharmacy/item-price/restore/:id", ItemPriceController.restore); + + app.get("/api/pharmacy/selling-price-percentage/list", SellingPricePercentageController.list); + app.get("/api/pharmacy/selling-price-percentage/export", SellingPricePercentageController.export); + app.post("/api/pharmacy/selling-price-percentage/create", SellingPricePercentageController.create); + app.put("/api/pharmacy/selling-price-percentage/update/:id", SellingPricePercentageController.update); + app.delete("/api/pharmacy/selling-price-percentage/delete/:id/:hard", SellingPricePercentageController.delete); + app.put("/api/pharmacy/selling-price-percentage/restore/:id", SellingPricePercentageController.restore); + + app.get("/api/patient-group/list", PatientGroupController.list); + app.get("/api/patient-group/export", PatientGroupController.export); + app.post("/api/patient-group/create", PatientGroupController.create); + app.put("/api/patient-group/update/:id", PatientGroupController.update); + app.delete("/api/patient-group/delete/:id/:hard", PatientGroupController.delete); + app.put("/api/patient-group/restore/:id", PatientGroupController.restore); + app.get("/api/patient-group/view/:id", PatientGroupController.detail); + + app.get("/api/patient-guarantor/list", PatientGuarantorController.list); + app.get("/api/patient-guarantor/export", PatientGuarantorController.export); + app.post("/api/patient-guarantor/create", PatientGuarantorController.create); + app.put("/api/patient-guarantor/update/:id", PatientGuarantorController.update); + app.delete("/api/patient-guarantor/delete/:id/:hard", PatientGuarantorController.delete); + app.put("/api/patient-guarantor/restore/:id", PatientGuarantorController.restore); + app.get("/api/patient-guarantor/view/:id", PatientGuarantorController.detail); + + app.get("/api/refferal-hospital/list", RefferalHospitalController.list); + app.get("/api/refferal-hospital/option", RefferalHospitalController.option); + app.get("/api/refferal-hospital/export", RefferalHospitalController.export); + app.post("/api/refferal-hospital/create", RefferalHospitalController.create); + app.put("/api/refferal-hospital/update/:id", RefferalHospitalController.update); + app.delete("/api/refferal-hospital/delete/:id/:hard", RefferalHospitalController.delete); + app.put("/api/refferal-hospital/restore/:id", RefferalHospitalController.restore); + + app.get("/api/initial-stock/list", InitialStockController.list); + app.post("/api/initial-stock/create", InitialStockController.create); + + app.get("/api/user-to-room/list", UserToRoomController.list); + app.get("/api/user-to-room/export", UserToRoomController.export); + // app.post('/api/user-to-room/create', UserToRoomController.create) + app.put("/api/user-to-room/update/:user_id", UserToRoomController.update); + app.get("/api/user-to-room/view/:id", UserToRoomController.detail); + + app.get("/api/room-to-pharmacy/list", RoomToPharmacyController.list); + app.get("/api/room-to-pharmacy/export", RoomToPharmacyController.export); + // app.post('/api/room-to-pharmacy/create', RoomToPharmacyController.create) + app.put("/api/room-to-pharmacy/update/:room_id", RoomToPharmacyController.update); + app.get("/api/room-to-pharmacy/view/:id", RoomToPharmacyController.detail); + + app.get("/api/pharmacy/planning-verificator/list", PlanningVerificatorController.list); + app.get("/api/pharmacy/planning-verificator/export", PlanningVerificatorController.export); + app.post("/api/pharmacy/planning-verificator/create", PlanningVerificatorController.create); + app.delete("/api/pharmacy/planning-verificator/delete/:id/:hard", PlanningVerificatorController.delete); + app.put("/api/pharmacy/planning-verificator/restore/:id", PlanningVerificatorController.restore); + + app.get("/api/fare-type/list", FareTypeController.list); + app.get("/api/fare-type/option", FareTypeController.option); + app.get("/api/fare-type/detail/:id", FareTypeController.detail); + app.post("/api/fare-type/create", FareTypeController.create); + app.put("/api/fare-type/update/:id", FareTypeController.update); + app.delete("/api/fare-type/delete/:id/:hard", FareTypeController.delete); + app.put("/api/fare-type/restore/:id", FareTypeController.restore); + + app.get("/api/card-type/list", CardTypeController.list); + app.post("/api/card-type/create", CardTypeController.create); + app.get("/api/card-type/detail/:id", CardTypeController.detail); + app.put("/api/card-type/update/:id", CardTypeController.update); + app.delete("/api/card-type/delete/:id/:hard", CardTypeController.delete); + app.put("/api/card-type/restore/:id", CardTypeController.restore); + + app.get("/api/payment-method/list", PaymentMethodController.list); + app.post("/api/payment-method/create", PaymentMethodController.create); + app.get("/api/payment-method/detail/:id", PaymentMethodController.detail); + app.put("/api/payment-method/update/:id", PaymentMethodController.update); + app.delete("/api/payment-method/delete/:id/:hard", PaymentMethodController.delete); + app.put("/api/payment-method/restore/:id", PaymentMethodController.restore); + + app.get("/api/registration-fee/detail", RegistrationFeeController.detail); + app.post("/api/registration-fee/create", RegistrationFeeController.create); + app.put("/api/registration-fee/update/:id", RegistrationFeeController.update); + + app.get("/api/region/province", RegionController.province); + app.get("/api/region/city/:province_code", RegionController.city); + app.get("/api/region/subdistrict/:city_code", RegionController.subdistrict); + app.get("/api/region/ward/:subdistric_code", RegionController.ward); + + app.get("/api/responsible-party-consent/body", ResponsiblePartyConsentController.body); + app.post("/api/responsible-party-consent/create", ResponsiblePartyConsentController.create); + app.put("/api/responsible-party-consent/update/:id", ResponsiblePartyConsentController.update); + } } diff --git a/src/swagger/builder.js b/src/swagger/builder.js index 7f74bc7..7d9faaa 100644 --- a/src/swagger/builder.js +++ b/src/swagger/builder.js @@ -2,494 +2,499 @@ const swaggerAutogen = require("swagger-autogen")({ openapi: "3.0.0" }); const config = require("config"); const doc = { - info: { - title: config.get("app.name"), - description: config.get("app.description"), - version: config.get("app.version"), - }, - servers: [ - { - url: config.get("server.host_swagger"), - description: "Environtment " + config.get("app.env"), - }, - ], - components: { - schemas: { - product: { - $code: "123456", - $name: "Product name", - $description: "Product description", - $source: "trialBalanceBranch / cifAccount / lnkolek", - $status: "Y", - }, - branch: { - $code: "123456", - $name: "Branch name", - $status: "Y", - }, - menu: { - $module: "Dashboard", - $name: "Dashboard", - $link: "/", - $id_parent: "", - $order_number: 1, - $icon: "", - $application: "ukln", - $status: "Y", - }, - administrativu: { - $code: "123456", - $name: "Administrativu name", - $status: "Y", - $munisipo_id: "uuid-string", - }, - application: { - $id: "ukln", - $name: "Dashboard Performance Business", - $reset_password_url: "https://brilianapps.britimorleste.tl/ukln/auth/reset-password/", - $status: "Y", - }, - aldeia: { - $code: "123456", - $name: "Aldeia name", - $status: "Y", - $suco_id: "uuid-string", - }, - class_economi: { - $code: "123456", - $name: "Class economi name", - $status: "Y", - }, - district: { - $code: "123456", - $name: "District name", - $status: "Y", - }, - income_tier: { - $code: "123456", - $name: "Income tier name", - $status: "Y", - }, - munisipo: { - $code: "123456", - $name: "Munisipo name", - $status: "Y", - }, - suco: { - $code: "123456", - $name: "Suco name", - $status: "Y", - $administrativu_id: "uuid-string", - }, - nationality: { - $code: "123456", - $name: "Nationality name", - $status: "Y", - }, - classEconomi: { - $code: "123456", - $name: "Class Economi name", - $status: "Y", - }, - incomeTier: { - $code: "123456", - $name: "Income Tier name", - $status: "Y", - }, - diagnosis: { - $diagnosis: "Diagnosis name (ICD-11)", - $code: "ABC123", - $status: "Y", - }, - diagnostic_procedure: { - $diagnosticProcedure: "Procedure name (ICD-9)", - $code: "XYZ789", - $status: "Y", - }, - room: { - $room: "Room name", - $code: "R001", - $description: "Optional description", - $department_id: "uuid-string", - $serviceclass: "uuid-string", - $status: "Y", - $location: "Room location", - $picture: "Room picture name", - }, - laboratory: { - $room: "Room name", - $code: "R001", - $description: "Optional description", - $department_id: "uuid-string", - $status: "Y", - }, - // pharmacy: { - // $room: "Room name", - // $code: "R001", - // $description: "Optional description", - // $department_id: "uuid-string", - // $status: "Y" - // }, - serviceType: { - $name: "Registration & Tickets", - $status: { "@enum": ["Y", "N"] }, - }, - serviceClass: { - $name: "Class name", - }, - service: { - $name: "e.g. ER Registration", - $service_type_id: "uuid-string", - $status: { "@enum": ["Y", "N"] }, - }, - roomServices: { - $service_ids: ["uuid-string"], - }, - serviceFare: { - $service_id: "uuid-string", - $faretype: [ - { - $faretype_id: "uuid-string", - $service_class: [ - { - $service_class_id: "uuid-string", - $fare: 100000, - } - ] - } - ] - }, - servicePackage: { - $name: "Package name", - $service_class_id: "uuid-string", - $fare: 500000, - $service_ids: ["uuid-string"], - }, - department: { - $name: "igd", - $status: { "@enum": ["Y", "N"] }, - }, - doctorSchedule: { - $day: "Senin", - $start_time: "08:00", - $end_time: "12:00", - $doctor_id: "uuid-string", - $room_id: "uuid-string", - $quota: "20", - $status: { "@enum": ["Y", "N"] }, - }, - doctorItem: { - $doctor_id: "uuid-string", - $item_master_id: "uuid-string", - }, - doctorItemPackage: { - $doctor_id: "uuid-string", - $name: "Paket Obat Harian", - $description: "Optional description", - $item_master_ids: ["uuid-string"], - $active: true, - }, - measurementUnit: { - $unit: "Milligram", - $status: { "@enum": ["Y", "N"] }, - }, - referenceRange: { - $gender: { "@enum": ["male", "female"] }, - $age_range_min: "0 | (days)", - $age_range_max: "20 | (days)", - $value_min: "13.7", - $value_max: "17.5", - $status: { "@enum": ["Y", "N"] }, - }, - queueMonitoring: { - $name: "Ground Floor Queue", - $slug: "ground-floor-queue", - $room_ids: ["uuid-string"], - $status: { "@enum": ["Y", "N"] }, - }, - examinationType: { - $name: "Examination Type name", - $status: { "@enum": ["Y", "N"] }, - $service_ids: ["uuid-string"], - }, - examinationDetail: { - $name: "Examination Detail name", - $order_no: "Order number", - $measurement_unit_id: "uuid-string", - $reference_range_ids: "[] array uuid-string", - $status: { "@enum": ["Y", "N"] }, - }, - serviceExamination: { - $examination_detail_ids: ["uuid-string"], - }, - serviceExaminationCreate: { - $examination_detail_ids: ["uuid-string"], - $service_id: "uuid-string", - }, - hospitalinformation: { - $name: "Hospital Name", - $address: "Hospital Address", - $phone: "Hospital Phone", - $logo: "Hospital Logo", - }, - files: { - $file_name: "File Name", - }, - item_group: { - $group_name: "ItemGroup name", - }, - item_origin: { - $origin_name: "ItemOrigin name", - $origin_description: "ItemOrigin Desc", - $department: "Department name", - $account: "Account name", - }, - item_type: { - $type_name: "ItemType name", - $item_group_id: "ItemGroup Id", - }, - item_type_detail: { - $type_detail_name: "ItemTypeDetail name", - $item_type_id: "ItemType Id", - }, - unit: { - $unit_name: "Unit name", - $small_unit: "Small unit name", - $large_unit: "Large unit name", - }, - item_category: { - $category_name: "ItemCategory name", - }, - item_status: { - $status_name: "Itemstatus name", - }, - item_class: { - $item_class_name: "ItemClass name", - }, - item_class_detail: { - $class_detail_name: "ItemClassDetail name", - }, - usage_instructions: { - $usage_instructions_name: "UsageInstructions name", - $usage_instructions_abbreviation: "UsageInstructions Abbreviation", - }, - usage_time: { - $usage_time_name: "UsageInstructions name", - $usage_time_abbreviation: "UsageInstructions Abbreviation", - }, - generic_name: { - $generic_name: "Generic name", - }, - factory: { - $factory_name: "factory name", - $address: "Factory address", - $web: "Factory url web", - $phone: "Factory phone", - $email: "Factory email", - }, - supplier: { - $supplier_name: "supplier name", - $address: "supplier address", - $phone: "supplier phone", - $email: "supplier email", - }, - factory_to_supplier: { - $supplier_id: "Supplier ID (required, UUID)", - $factory_ids: "Array [factory-uuid-1, factory-uuid-2]", - }, - item_master: { - $item_name: "Item name", - $generic_name_id: "Generic name ID (UUID)", - $item_type_detail_id: "Item type detail ID (UUID)", - $item_category_id: "Item category ID (UUID)", - $item_class_id: "Item class ID (UUID)", - $item_class_detail_id: "Item class Detail ID (UUID)", - $item_status_id: "Item status ID (UUID)", - $factory_id: "Factory ID (UUID)", - // $unit_id: "Unit ID (UUID)", - $smallunit:"string", - $largeunit:"string", - $pack_size: "Pack size (integer, minimum 0)", - $minimum_quantity: "Minimum quantity (integer, minimum 0)", - $minimum_sales_quantity: "Minimum sales quantity (integer, minimum 0)", - $strength: "Strength value (number, minimum 0)", - $active: "Active status (boolean)", - }, - pharmacy_info: { - $logo: "Logo (string, max 256)", - $name: "Name (string, max 256)", - $address: "Address (string, max 500)", - $munisipiu: "Munisipiu ID (UUID)", - $postu_admin: "Postu Admin ID (UUID)", - $suco: "Suco ID (UUID)", - $aldeia: "Aldeia ID (UUID)", - $phone: "Phone (string, max 30, optional)", - $default_room_id: "Default Room ID (UUID)", - $province: "Province Code", - $city: "City Code", - $subdistrict: "Subdistrict Code", - $ward: "Ward Code", - }, - item_price: { - $item_master_id: "Item Master ID (required, UUID)", - $purchase_price: "Purchase Price (required, number, minimum 0)", - $selling_price: "Selling Price (required, number, minimum 0)", - $expired_date: "Expired Date (required, date)", - }, - initial_stock: { - $itemmaster: "Item Master uuid", - $room: "Room uuid", - $itemorigin: "Item Origin uuid", - $batch: "Batch", - $exp_date: "Exp Date", - $stock: "Stock", - }, - selling_price_percentage: { - $item_master_id: "Item Master ID (required, UUID)", - $item_origin_id: "Item Origin ID (required, UUID)", - $percentage: "Percentage (required, number, min 0, max 999.99, 2 decimal places)", - }, - patient_group: { - $patient_group_name: "PatientGroup name", - }, - patient_guarantor: { - $guarantor_name: "PatientGuarantor name", - $phone: "08123456789", // Nomor telepon - $province: "West Java", // Provinsi - $city: "Bandung", // Kota - $zip_code: "40123", // Kode Pos - $agreement_no: "AG123456789", // Nomor Perjanjian - $agreement_desc: "Health Insurance Agreement", // Deskripsi Perjanjian (opsional) - $patient_group_id: "2e1a1b33-bbb2-4f33-b2c4-cff5976f3f95", // Patient Group (UUID) - $faretype: "3f1a1b33-bbb2-4f33-b2c4-cff5976f3f95", // Fare Type (UUID) - $maximalliability: 1000000, // Maximal Liability (opsional) - }, - refferal_hospital: { - $refferal_hospital_name: "RefferalHospital name", - }, - user_to_room: { - $user_id: "user ID (required, UUID)", - $room_id: "Room ID (required, UUID)", - }, - user_to_room_update: { - $user_id: "user ID (required, UUID)", - $room_ids: "Array [room-uuid-1, room-uuid-2]", - }, - room_to_pharmacy: { - $room_id: "room ID (required, UUID)", - $pharmacy_room_id: "Pharmacy Room ID (required, UUID)", - }, - planning_verificator: { - $user_id: "User ID (required, UUID)", - }, - scheduleRecurrence: { - $type: { "@enum": ["daily", "weekly", "monthly"] }, - $interval: 1, - $daysOfWeek: ["MO", "WE", "FR"], - }, - scheduleSeriesCreate: { - $roomId: "uuid-string", - $doctorId: "uuid-string", - $title: "Practice Schedule", - $timezone: "Asia/Jakarta", - $quota: 20, - $startDate: "2026-03-20", - $untilDate: "2026-06-30", - $startTimeLocal: "09:00:00", - $endTimeLocal: "12:00:00", - $recurrence: { $ref: "#/components/schemas/scheduleRecurrence" }, - }, - scheduleSeriesUpdate: { - $roomId: "uuid-string", - $doctorId: "uuid-string", - $title: "Practice Schedule Updated", - $timezone: "Asia/Jakarta", - $quota: 25, - $startDate: "2026-03-20", - $untilDate: "2026-07-31", - $startTimeLocal: "10:00:00", - $endTimeLocal: "13:00:00", - $recurrence: { $ref: "#/components/schemas/scheduleRecurrence" }, - }, - scheduleSeriesDetail: { - $id: "uuid-string", - $room_id: "uuid-string", - $doctor_id: "uuid-string", - $title: "Practice Schedule", - $timezone: "Asia/Jakarta", - $quota: 20, - $start_date: "2026-03-20", - $until_date: "2026-06-30", - $start_time_local: "09:00:00", - $end_time_local: "12:00:00", - $recurrence: { $ref: "#/components/schemas/scheduleRecurrence" }, - $status: "Active", - $room: { id: "uuid-string", room: "Room 1" }, - $doctor: { id: "uuid-string", name: "Dr A" }, - }, - scheduleExceptionCreate: { - $occurrenceDate: "2026-03-24", - $isCancelled: false, - $overrideRoomId: "uuid-string", - $overrideDoctorId: "uuid-string", - $overrideTitle: "Override Practice", - $overrideStartAt: "2026-03-24T10:00:00.000Z", - $overrideEndAt: "2026-03-24T12:30:00.000Z", - }, - scheduleCalendarResource: { - $id: "room-1:doctor-1", - $roomId: "room-1", - $roomName: "Room 1", - $doctorId: "doctor-1", - $doctorName: "Dr A", - }, - scheduleCalendarEvent: { - $id: "occ:series-101:2026-03-20", - $seriesId: "series-101", - $resourceId: "room-1:doctor-1", - $title: "Practice", - $startAt: "2026-03-20T09:00:00+07:00", - $endAt: "2026-03-20T12:00:00+07:00", - $quota: 20, - $usedQuota: 7, - $leftQuota: 13, - $isRecurring: true, - $isException: false, - $status: "confirmed", - }, - scheduleCalendarMeta: { - $total_count: 24, - $page: 1, - $limit: 20, - }, - faretype: { - $name: "Name (string)", - }, - card_type: { - $name: "Name (string)", - }, - payment_method: { - $name: "Name (string)", - }, - registration_fee: { - type: "emergency | outpatient", - service: ["uuid-string-1", "uuid-string-2"] - }, - serviceFareUpdate: { - $fare: 100000, - }, - responsiblepartyconsent:{ - $bodytext: "string" - } - }, - parameters: {}, - securitySchemes: { - bearerAuth: { - type: "http", - scheme: "bearer", - }, - }, - }, + info: { + title: config.get("app.name"), + description: config.get("app.description"), + version: config.get("app.version"), + }, + servers: [ + { + url: config.get("server.host_swagger"), + description: "Environtment " + config.get("app.env"), + }, + ], + components: { + schemas: { + product: { + $code: "123456", + $name: "Product name", + $description: "Product description", + $source: "trialBalanceBranch / cifAccount / lnkolek", + $status: "Y", + }, + branch: { + $code: "123456", + $name: "Branch name", + $status: "Y", + }, + currency: { + $name: "Dolar", + $symbol: "$", + $status: "Y", + }, + menu: { + $module: "Dashboard", + $name: "Dashboard", + $link: "/", + $id_parent: "", + $order_number: 1, + $icon: "", + $application: "ukln", + $status: "Y", + }, + administrativu: { + $code: "123456", + $name: "Administrativu name", + $status: "Y", + $munisipo_id: "uuid-string", + }, + application: { + $id: "ukln", + $name: "Dashboard Performance Business", + $reset_password_url: "https://brilianapps.britimorleste.tl/ukln/auth/reset-password/", + $status: "Y", + }, + aldeia: { + $code: "123456", + $name: "Aldeia name", + $status: "Y", + $suco_id: "uuid-string", + }, + class_economi: { + $code: "123456", + $name: "Class economi name", + $status: "Y", + }, + district: { + $code: "123456", + $name: "District name", + $status: "Y", + }, + income_tier: { + $code: "123456", + $name: "Income tier name", + $status: "Y", + }, + munisipo: { + $code: "123456", + $name: "Munisipo name", + $status: "Y", + }, + suco: { + $code: "123456", + $name: "Suco name", + $status: "Y", + $administrativu_id: "uuid-string", + }, + nationality: { + $code: "123456", + $name: "Nationality name", + $status: "Y", + }, + classEconomi: { + $code: "123456", + $name: "Class Economi name", + $status: "Y", + }, + incomeTier: { + $code: "123456", + $name: "Income Tier name", + $status: "Y", + }, + diagnosis: { + $diagnosis: "Diagnosis name (ICD-11)", + $code: "ABC123", + $status: "Y", + }, + diagnostic_procedure: { + $diagnosticProcedure: "Procedure name (ICD-9)", + $code: "XYZ789", + $status: "Y", + }, + room: { + $room: "Room name", + $code: "R001", + $description: "Optional description", + $department_id: "uuid-string", + $serviceclass: "uuid-string", + $status: "Y", + $location: "Room location", + $picture: "Room picture name", + }, + laboratory: { + $room: "Room name", + $code: "R001", + $description: "Optional description", + $department_id: "uuid-string", + $status: "Y", + }, + // pharmacy: { + // $room: "Room name", + // $code: "R001", + // $description: "Optional description", + // $department_id: "uuid-string", + // $status: "Y" + // }, + serviceType: { + $name: "Registration & Tickets", + $status: { "@enum": ["Y", "N"] }, + }, + serviceClass: { + $name: "Class name", + }, + service: { + $name: "e.g. ER Registration", + $service_type_id: "uuid-string", + $status: { "@enum": ["Y", "N"] }, + }, + roomServices: { + $service_ids: ["uuid-string"], + }, + serviceFare: { + $service_id: "uuid-string", + $faretype: [ + { + $faretype_id: "uuid-string", + $service_class: [ + { + $service_class_id: "uuid-string", + $fare: 100000, + }, + ], + }, + ], + }, + servicePackage: { + $name: "Package name", + $service_class_id: "uuid-string", + $fare: 500000, + $service_ids: ["uuid-string"], + }, + department: { + $name: "igd", + $status: { "@enum": ["Y", "N"] }, + }, + doctorSchedule: { + $day: "Senin", + $start_time: "08:00", + $end_time: "12:00", + $doctor_id: "uuid-string", + $room_id: "uuid-string", + $quota: "20", + $status: { "@enum": ["Y", "N"] }, + }, + doctorItem: { + $doctor_id: "uuid-string", + $item_master_id: "uuid-string", + }, + doctorItemPackage: { + $doctor_id: "uuid-string", + $name: "Paket Obat Harian", + $description: "Optional description", + $item_master_ids: ["uuid-string"], + $active: true, + }, + measurementUnit: { + $unit: "Milligram", + $status: { "@enum": ["Y", "N"] }, + }, + referenceRange: { + $gender: { "@enum": ["male", "female"] }, + $age_range_min: "0 | (days)", + $age_range_max: "20 | (days)", + $value_min: "13.7", + $value_max: "17.5", + $status: { "@enum": ["Y", "N"] }, + }, + queueMonitoring: { + $name: "Ground Floor Queue", + $slug: "ground-floor-queue", + $room_ids: ["uuid-string"], + $status: { "@enum": ["Y", "N"] }, + }, + examinationType: { + $name: "Examination Type name", + $status: { "@enum": ["Y", "N"] }, + $service_ids: ["uuid-string"], + }, + examinationDetail: { + $name: "Examination Detail name", + $order_no: "Order number", + $measurement_unit_id: "uuid-string", + $reference_range_ids: "[] array uuid-string", + $status: { "@enum": ["Y", "N"] }, + }, + serviceExamination: { + $examination_detail_ids: ["uuid-string"], + }, + serviceExaminationCreate: { + $examination_detail_ids: ["uuid-string"], + $service_id: "uuid-string", + }, + hospitalinformation: { + $name: "Hospital Name", + $address: "Hospital Address", + $phone: "Hospital Phone", + $logo: "Hospital Logo", + }, + files: { + $file_name: "File Name", + }, + item_group: { + $group_name: "ItemGroup name", + }, + item_origin: { + $origin_name: "ItemOrigin name", + $origin_description: "ItemOrigin Desc", + $department: "Department name", + $account: "Account name", + }, + item_type: { + $type_name: "ItemType name", + $item_group_id: "ItemGroup Id", + }, + item_type_detail: { + $type_detail_name: "ItemTypeDetail name", + $item_type_id: "ItemType Id", + }, + unit: { + $unit_name: "Unit name", + $small_unit: "Small unit name", + $large_unit: "Large unit name", + }, + item_category: { + $category_name: "ItemCategory name", + }, + item_status: { + $status_name: "Itemstatus name", + }, + item_class: { + $item_class_name: "ItemClass name", + }, + item_class_detail: { + $class_detail_name: "ItemClassDetail name", + }, + usage_instructions: { + $usage_instructions_name: "UsageInstructions name", + $usage_instructions_abbreviation: "UsageInstructions Abbreviation", + }, + usage_time: { + $usage_time_name: "UsageInstructions name", + $usage_time_abbreviation: "UsageInstructions Abbreviation", + }, + generic_name: { + $generic_name: "Generic name", + }, + factory: { + $factory_name: "factory name", + $address: "Factory address", + $web: "Factory url web", + $phone: "Factory phone", + $email: "Factory email", + }, + supplier: { + $supplier_name: "supplier name", + $address: "supplier address", + $phone: "supplier phone", + $email: "supplier email", + }, + factory_to_supplier: { + $supplier_id: "Supplier ID (required, UUID)", + $factory_ids: "Array [factory-uuid-1, factory-uuid-2]", + }, + item_master: { + $item_name: "Item name", + $generic_name_id: "Generic name ID (UUID)", + $item_type_detail_id: "Item type detail ID (UUID)", + $item_category_id: "Item category ID (UUID)", + $item_class_id: "Item class ID (UUID)", + $item_class_detail_id: "Item class Detail ID (UUID)", + $item_status_id: "Item status ID (UUID)", + $factory_id: "Factory ID (UUID)", + // $unit_id: "Unit ID (UUID)", + $smallunit: "string", + $largeunit: "string", + $pack_size: "Pack size (integer, minimum 0)", + $minimum_quantity: "Minimum quantity (integer, minimum 0)", + $minimum_sales_quantity: "Minimum sales quantity (integer, minimum 0)", + $strength: "Strength value (number, minimum 0)", + $active: "Active status (boolean)", + }, + pharmacy_info: { + $logo: "Logo (string, max 256)", + $name: "Name (string, max 256)", + $address: "Address (string, max 500)", + $munisipiu: "Munisipiu ID (UUID)", + $postu_admin: "Postu Admin ID (UUID)", + $suco: "Suco ID (UUID)", + $aldeia: "Aldeia ID (UUID)", + $phone: "Phone (string, max 30, optional)", + $default_room_id: "Default Room ID (UUID)", + $province: "Province Code", + $city: "City Code", + $subdistrict: "Subdistrict Code", + $ward: "Ward Code", + }, + item_price: { + $item_master_id: "Item Master ID (required, UUID)", + $purchase_price: "Purchase Price (required, number, minimum 0)", + $selling_price: "Selling Price (required, number, minimum 0)", + $expired_date: "Expired Date (required, date)", + }, + initial_stock: { + $itemmaster: "Item Master uuid", + $room: "Room uuid", + $itemorigin: "Item Origin uuid", + $batch: "Batch", + $exp_date: "Exp Date", + $stock: "Stock", + }, + selling_price_percentage: { + $item_master_id: "Item Master ID (required, UUID)", + $item_origin_id: "Item Origin ID (required, UUID)", + $percentage: "Percentage (required, number, min 0, max 999.99, 2 decimal places)", + }, + patient_group: { + $patient_group_name: "PatientGroup name", + }, + patient_guarantor: { + $guarantor_name: "PatientGuarantor name", + $phone: "08123456789", // Nomor telepon + $province: "West Java", // Provinsi + $city: "Bandung", // Kota + $zip_code: "40123", // Kode Pos + $agreement_no: "AG123456789", // Nomor Perjanjian + $agreement_desc: "Health Insurance Agreement", // Deskripsi Perjanjian (opsional) + $patient_group_id: "2e1a1b33-bbb2-4f33-b2c4-cff5976f3f95", // Patient Group (UUID) + $faretype: "3f1a1b33-bbb2-4f33-b2c4-cff5976f3f95", // Fare Type (UUID) + $maximalliability: 1000000, // Maximal Liability (opsional) + }, + refferal_hospital: { + $refferal_hospital_name: "RefferalHospital name", + }, + user_to_room: { + $user_id: "user ID (required, UUID)", + $room_id: "Room ID (required, UUID)", + }, + user_to_room_update: { + $user_id: "user ID (required, UUID)", + $room_ids: "Array [room-uuid-1, room-uuid-2]", + }, + room_to_pharmacy: { + $room_id: "room ID (required, UUID)", + $pharmacy_room_id: "Pharmacy Room ID (required, UUID)", + }, + planning_verificator: { + $user_id: "User ID (required, UUID)", + }, + scheduleRecurrence: { + $type: { "@enum": ["daily", "weekly", "monthly"] }, + $interval: 1, + $daysOfWeek: ["MO", "WE", "FR"], + }, + scheduleSeriesCreate: { + $roomId: "uuid-string", + $doctorId: "uuid-string", + $title: "Practice Schedule", + $timezone: "Asia/Jakarta", + $quota: 20, + $startDate: "2026-03-20", + $untilDate: "2026-06-30", + $startTimeLocal: "09:00:00", + $endTimeLocal: "12:00:00", + $recurrence: { $ref: "#/components/schemas/scheduleRecurrence" }, + }, + scheduleSeriesUpdate: { + $roomId: "uuid-string", + $doctorId: "uuid-string", + $title: "Practice Schedule Updated", + $timezone: "Asia/Jakarta", + $quota: 25, + $startDate: "2026-03-20", + $untilDate: "2026-07-31", + $startTimeLocal: "10:00:00", + $endTimeLocal: "13:00:00", + $recurrence: { $ref: "#/components/schemas/scheduleRecurrence" }, + }, + scheduleSeriesDetail: { + $id: "uuid-string", + $room_id: "uuid-string", + $doctor_id: "uuid-string", + $title: "Practice Schedule", + $timezone: "Asia/Jakarta", + $quota: 20, + $start_date: "2026-03-20", + $until_date: "2026-06-30", + $start_time_local: "09:00:00", + $end_time_local: "12:00:00", + $recurrence: { $ref: "#/components/schemas/scheduleRecurrence" }, + $status: "Active", + $room: { id: "uuid-string", room: "Room 1" }, + $doctor: { id: "uuid-string", name: "Dr A" }, + }, + scheduleExceptionCreate: { + $occurrenceDate: "2026-03-24", + $isCancelled: false, + $overrideRoomId: "uuid-string", + $overrideDoctorId: "uuid-string", + $overrideTitle: "Override Practice", + $overrideStartAt: "2026-03-24T10:00:00.000Z", + $overrideEndAt: "2026-03-24T12:30:00.000Z", + }, + scheduleCalendarResource: { + $id: "room-1:doctor-1", + $roomId: "room-1", + $roomName: "Room 1", + $doctorId: "doctor-1", + $doctorName: "Dr A", + }, + scheduleCalendarEvent: { + $id: "occ:series-101:2026-03-20", + $seriesId: "series-101", + $resourceId: "room-1:doctor-1", + $title: "Practice", + $startAt: "2026-03-20T09:00:00+07:00", + $endAt: "2026-03-20T12:00:00+07:00", + $quota: 20, + $usedQuota: 7, + $leftQuota: 13, + $isRecurring: true, + $isException: false, + $status: "confirmed", + }, + scheduleCalendarMeta: { + $total_count: 24, + $page: 1, + $limit: 20, + }, + faretype: { + $name: "Name (string)", + }, + card_type: { + $name: "Name (string)", + }, + payment_method: { + $name: "Name (string)", + }, + registration_fee: { + type: "emergency | outpatient", + service: ["uuid-string-1", "uuid-string-2"], + }, + serviceFareUpdate: { + $fare: 100000, + }, + responsiblepartyconsent: { + $bodytext: "string", + }, + }, + parameters: {}, + securitySchemes: { + bearerAuth: { + type: "http", + scheme: "bearer", + }, + }, + }, }; const outputFile = "./swagger.json";