diff --git a/angular/src/app/appointment/view-appointment/view-appointment.component.html b/angular/src/app/appointment/view-appointment/view-appointment.component.html index 965d5f1..7fba824 100644 --- a/angular/src/app/appointment/view-appointment/view-appointment.component.html +++ b/angular/src/app/appointment/view-appointment/view-appointment.component.html @@ -1,8 +1,18 @@
-
@@ -24,9 +34,13 @@
- + +
@@ -63,7 +77,16 @@ {{ appointment.firstName }} {{ appointment.lastName }} {{ appointment.doctor }} - + + + {{ getGenderLabel(appointment.gender) }} + {{ appointment.dateOfAppointment | date }} {{ appointment.timeOfAppointment }} {{ appointment.mobile }} @@ -89,7 +112,6 @@ >
-
@@ -110,68 +132,127 @@
- + - +
- +
- Mobile number Required + Mobile number Required
- +
- +
- + - Email address Required + Email address Required
- +
- - DOB Required - -
- + + DOB Required +
+
- +
- +
- +
- +
- +
-
@@ -179,41 +260,92 @@
- - - + +
+
- - + +
- -
- - + +
diff --git a/angular/src/app/appointment/view-appointment/view-appointment.component.ts b/angular/src/app/appointment/view-appointment/view-appointment.component.ts index 9592289..5efccfb 100644 --- a/angular/src/app/appointment/view-appointment/view-appointment.component.ts +++ b/angular/src/app/appointment/view-appointment/view-appointment.component.ts @@ -2,11 +2,11 @@ import { ConfirmationService, ToasterService } from '@abp/ng.theme.shared'; import { HttpClient } from '@angular/common/http'; import { Component } from '@angular/core'; import { NgForm } from '@angular/forms'; -import { AppointmentDto } from '@proxy/appoinments/dto'; +import { AppointmentDto, CreateOrUpdateAppointmentDto } from '@proxy/appoinments/dto'; import { AppointmentService } from '@proxy/appointments'; import { DoctorService } from '@proxy/doctors'; import { PagingSortResultDto } from '@proxy/dto'; -import { Gender } from '@proxy/global-enum'; +import { appointmentStatus, Gender, paymentStatus, visitType } from '@proxy/global-enum'; @Component({ selector: 'app-view-appointment', @@ -21,11 +21,29 @@ export class ViewAppointmentComponent { isEditing = false; appointmentDialog = false; genders = Gender; + appointmentStatuses = Object.keys(appointmentStatus) + .filter(key => !isNaN(Number(key))) + .map(key => ({ + label: appointmentStatus[key as unknown as keyof typeof appointmentStatus], + value: Number(key), + })); + visitTypes = Object.keys(visitType) + .filter(key => !isNaN(Number(key))) + .map(key => ({ + label: visitType[key as unknown as keyof typeof visitType], + value: Number(key), + })); + paymentStatuses = Object.keys(paymentStatus) + .filter(key => !isNaN(Number(key))) + .map(key => ({ + label: paymentStatus[key as unknown as keyof typeof paymentStatus], + value: Number(key), + }));; isEditMode: boolean = false; loading: boolean = false; params: PagingSortResultDto; - appointment: AppointmentDto = { + appointment: CreateOrUpdateAppointmentDto = { id: '', firstName: '', lastName: '', @@ -39,6 +57,10 @@ export class ViewAppointmentComponent { timeOfAppointment: '', injuryORContion: '', note: '', + appointmentStatus: appointmentStatus.Scheduled, + visitType: visitType.NewPatient, + paymentStatus: paymentStatus.Unpaid, + insuranceProvider: '', }; appointments = []; @@ -46,20 +68,6 @@ export class ViewAppointmentComponent { doctors = []; doctorOptions = []; - appointmentStatuses = [ - { label: 'Scheduled', value: 'Scheduled' }, - { label: 'Completed', value: 'Completed' }, - { label: 'Canceled', value: 'Canceled' }, - ]; - visitTypes = [ - { label: 'New Patient', value: 'NewPatient' }, - { label: 'Follow-up', value: 'Follow-up' }, - ]; - paymentStatuses = [ - { label: 'Pending', value: 'Pending' }, - { label: 'Paid', value: 'Paid' }, - { label: 'Unpaid', value: 'Unpaid' }, - ]; createPermission = true; editPermission = true; @@ -83,6 +91,9 @@ export class ViewAppointmentComponent { globalFilter: null, }); } + getGenderLabel(gender: number): string { + return gender === Gender.Male ? 'Male' : gender === Gender.Female ? 'Female' : 'Unknown'; + } loadappointments(event: any) { this.loading = true; let order = event.sortOrder == 1 ? ' asc' : ' desc'; @@ -96,7 +107,7 @@ export class ViewAppointmentComponent { this.AppointmentService.getAppointmentList(this.params).subscribe(data => { this.appointments = data.items; - debugger + debugger; this.totalRecords = data.totalCount; this.loading = false; }); @@ -117,6 +128,10 @@ export class ViewAppointmentComponent { note: '', doctorId: '', address: '', + appointmentStatus: null, + visitType: null, + paymentStatus: null, + insuranceProvider: '', }; } @@ -161,17 +176,20 @@ export class ViewAppointmentComponent { () => { this.toaster.success('Appointment created successfully', 'Success'); this.AppointmentDialog = false; - // this.loadPatient({ - // first: 0, - // rows: 10, - // sortField: 'id', - // sortOrder: 1, - // globalFilter: null, - // }); + this.loadappointments({ + first: 0, + rows: 10, + sortField: 'id', + sortOrder: 1, + globalFilter: null, + }); + this.closeDialog(); + }, error => { console.log(error); - this.closeDialog(); + this.toaster.error(error.error.error.message, 'Error'); + } ); } diff --git a/angular/src/app/proxy/appoinments/dto/models.ts b/angular/src/app/proxy/appoinments/dto/models.ts index d34ae49..938e5cd 100644 --- a/angular/src/app/proxy/appoinments/dto/models.ts +++ b/angular/src/app/proxy/appoinments/dto/models.ts @@ -1,4 +1,7 @@ import type { Gender } from '../../global-enum/gender.enum'; +import type { appointmentStatus } from '../../global-enum/appointment-status.enum'; +import type { visitType } from '../../global-enum/visit-type.enum'; +import type { paymentStatus } from '../../global-enum/payment-status.enum'; export interface AppointmentDto { id?: string; @@ -30,4 +33,8 @@ export interface CreateOrUpdateAppointmentDto { timeOfAppointment?: string; injuryORContion?: string; note?: string; + insuranceProvider?: string; + appointmentStatus: appointmentStatus; + visitType: visitType; + paymentStatus: paymentStatus; } diff --git a/angular/src/app/proxy/generate-proxy.json b/angular/src/app/proxy/generate-proxy.json index 56e8925..63c2c06 100644 --- a/angular/src/app/proxy/generate-proxy.json +++ b/angular/src/app/proxy/generate-proxy.json @@ -4964,6 +4964,54 @@ "minimum": null, "maximum": null, "regex": null + }, + { + "name": "InsuranceProvider", + "jsonName": null, + "type": "System.String", + "typeSimple": "string", + "isRequired": false, + "minLength": null, + "maxLength": null, + "minimum": null, + "maximum": null, + "regex": null + }, + { + "name": "AppointmentStatus", + "jsonName": null, + "type": "HospitalManagementSystem.GlobalEnum.appointmentStatus", + "typeSimple": "HospitalManagementSystem.GlobalEnum.appointmentStatus", + "isRequired": false, + "minLength": null, + "maxLength": null, + "minimum": null, + "maximum": null, + "regex": null + }, + { + "name": "VisitType", + "jsonName": null, + "type": "HospitalManagementSystem.GlobalEnum.visitType", + "typeSimple": "HospitalManagementSystem.GlobalEnum.visitType", + "isRequired": false, + "minLength": null, + "maxLength": null, + "minimum": null, + "maximum": null, + "regex": null + }, + { + "name": "PaymentStatus", + "jsonName": null, + "type": "HospitalManagementSystem.GlobalEnum.paymentStatus", + "typeSimple": "HospitalManagementSystem.GlobalEnum.paymentStatus", + "isRequired": false, + "minLength": null, + "maxLength": null, + "minimum": null, + "maximum": null, + "regex": null } ] }, @@ -5567,6 +5615,22 @@ } ] }, + "HospitalManagementSystem.GlobalEnum.appointmentStatus": { + "baseType": "System.Enum", + "isEnum": true, + "enumNames": [ + "Scheduled", + "Completed", + "Canceled" + ], + "enumValues": [ + 1, + 2, + 3 + ], + "genericArguments": null, + "properties": null + }, "HospitalManagementSystem.GlobalEnum.Gender": { "baseType": "System.Enum", "isEnum": true, @@ -5581,6 +5645,22 @@ "genericArguments": null, "properties": null }, + "HospitalManagementSystem.GlobalEnum.paymentStatus": { + "baseType": "System.Enum", + "isEnum": true, + "enumNames": [ + "Paid", + "Pending", + "Unpaid" + ], + "enumValues": [ + 1, + 2, + 3 + ], + "genericArguments": null, + "properties": null + }, "HospitalManagementSystem.GlobalEnum.Status": { "baseType": "System.Enum", "isEnum": true, @@ -5597,6 +5677,20 @@ "genericArguments": null, "properties": null }, + "HospitalManagementSystem.GlobalEnum.visitType": { + "baseType": "System.Enum", + "isEnum": true, + "enumNames": [ + "NewPatient", + "Followup" + ], + "enumValues": [ + 1, + 2 + ], + "genericArguments": null, + "properties": null + }, "HospitalManagementSystem.Patients.Dto.CreateUpdatePatientDto": { "baseType": null, "isEnum": false, diff --git a/angular/src/app/proxy/global-enum/appointment-status.enum.ts b/angular/src/app/proxy/global-enum/appointment-status.enum.ts new file mode 100644 index 0000000..29ca6e1 --- /dev/null +++ b/angular/src/app/proxy/global-enum/appointment-status.enum.ts @@ -0,0 +1,9 @@ +import { mapEnumToOptions } from '@abp/ng.core'; + +export enum appointmentStatus { + Scheduled = 1, + Completed = 2, + Canceled = 3, +} + +export const appointmentStatusOptions = mapEnumToOptions(appointmentStatus); diff --git a/angular/src/app/proxy/global-enum/index.ts b/angular/src/app/proxy/global-enum/index.ts index 9c7d39a..2c8e9cf 100644 --- a/angular/src/app/proxy/global-enum/index.ts +++ b/angular/src/app/proxy/global-enum/index.ts @@ -1,2 +1,5 @@ +export * from './appointment-status.enum'; export * from './gender.enum'; +export * from './payment-status.enum'; export * from './status.enum'; +export * from './visit-type.enum'; diff --git a/angular/src/app/proxy/global-enum/payment-status.enum.ts b/angular/src/app/proxy/global-enum/payment-status.enum.ts new file mode 100644 index 0000000..05777e1 --- /dev/null +++ b/angular/src/app/proxy/global-enum/payment-status.enum.ts @@ -0,0 +1,9 @@ +import { mapEnumToOptions } from '@abp/ng.core'; + +export enum paymentStatus { + Paid = 1, + Pending = 2, + Unpaid = 3, +} + +export const paymentStatusOptions = mapEnumToOptions(paymentStatus); diff --git a/angular/src/app/proxy/global-enum/visit-type.enum.ts b/angular/src/app/proxy/global-enum/visit-type.enum.ts new file mode 100644 index 0000000..a490605 --- /dev/null +++ b/angular/src/app/proxy/global-enum/visit-type.enum.ts @@ -0,0 +1,8 @@ +import { mapEnumToOptions } from '@abp/ng.core'; + +export enum visitType { + NewPatient = 1, + Followup = 2, +} + +export const visitTypeOptions = mapEnumToOptions(visitType); diff --git a/aspnet-core/src/HospitalManagementSystem.Application.Contracts/Appoinments/Dto/CreateOrUpdateAppointmentDto.cs b/aspnet-core/src/HospitalManagementSystem.Application.Contracts/Appoinments/Dto/CreateOrUpdateAppointmentDto.cs index 39bce7f..425bd5d 100644 --- a/aspnet-core/src/HospitalManagementSystem.Application.Contracts/Appoinments/Dto/CreateOrUpdateAppointmentDto.cs +++ b/aspnet-core/src/HospitalManagementSystem.Application.Contracts/Appoinments/Dto/CreateOrUpdateAppointmentDto.cs @@ -24,5 +24,10 @@ namespace HospitalManagementSystem.Appoinments.Dto public string? TimeOfAppointment { get; set; } public string? InjuryORContion { get; set; } public string? Note { get; set; } + public string? InsuranceProvider { get; set; } + public appointmentStatus AppointmentStatus { get; set; } + public visitType VisitType { get; set; } + public paymentStatus PaymentStatus { get; set; } + } } diff --git a/aspnet-core/src/HospitalManagementSystem.Domain/Appointments/Appointment.cs b/aspnet-core/src/HospitalManagementSystem.Domain/Appointments/Appointment.cs index a6b690f..d435e2d 100644 --- a/aspnet-core/src/HospitalManagementSystem.Domain/Appointments/Appointment.cs +++ b/aspnet-core/src/HospitalManagementSystem.Domain/Appointments/Appointment.cs @@ -22,5 +22,9 @@ namespace HospitalManagementSystem.Appointments public string? TimeOfAppointment { get; set; } public string? InjuryORContion { get; set; } public string? Note { get; set; } + public string? InsuranceProvider { get; set; } + public appointmentStatus AppointmentStatus { get; set; } + public visitType VisitType { get; set; } + public paymentStatus PaymentStatus { get; set; } } }