Api-PWA/DocuMed.PWA/Pages/MedicalHistoryActionParts/MedicalHistoryActionStep1.r...

240 lines
10 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

@inject IRestWrapper RestWrapper
@inject IUserUtility UserUtility
<MudStack class="my-auto text-center font-iranyekan pb-20">
<p class="text-lg font-extrabold">افزودن شرح حال جدید</p>
<p class="text-center text-md">شرح حال بیمار را در مراحل مختلف و اطلاعات را با دقت وارد نمایید ، در مرحله اخر میتوانید شرحال کامل را مشاهده کنید
</p>
<BasePartDivider Index="1" Title="شکایت اصلی بیمار" />
<MudForm>
<MudFocusTrap>
<MudAutocomplete Value="@SelectedPatient"
CoerceValue="true"
class="text-sm my-5"
ToStringFunc="dto => dto.FullName"
SearchFunc="@SearchPatients"
ValueChanged="async dto => { SelectedPatient = dto; }"
T="PatientSDto"
Label="کد ملی بیمار"
Variant="Variant.Outlined">
<ProgressIndicatorInPopoverTemplate>
<MudList Clickable="false">
<MudListItem>
<div class="flex flex-row w-full mx-auto">
<MudProgressCircular class="my-auto mr-1 -ml-4" Size="Size.Small" Indeterminate="true"/>
<p class="font-bold my-1 mx-auto text-md">منتظر بمانید</p>
</div>
</MudListItem>
</MudList>
</ProgressIndicatorInPopoverTemplate>
<ItemTemplate Context="e">
<p>@e.FullName</p>
</ItemTemplate>
</MudAutocomplete>
<MudTextField Required="true" RequiredError="نام بیمار خود را وارد کنید" Value="@PatientFirstName"
ValueChanged="async detail => { PatientFirstName = detail; await PatientFirstNameChanged.InvokeAsync(detail); }"
T="string" Label="نام بیمار"
Variant="Variant.Outlined"
class="text-sm my-5"/>
<MudTextField Required="true"
RequiredError="نام خانوادگی بیمار خود را وارد کنید"
Value="@PatientLastName"
ValueChanged="async detail => { PatientLastName = detail; await PatientLastNameChanged.InvokeAsync(detail); }"
T="string"
Label="نام خانوادگی بیمار"
Variant="Variant.Outlined"
class="text-sm my-5"/>
<MudNumericField Required="true"
RequiredError="سن بیمار خود را وارد کنید" Value="@PatientAge"
ValueChanged="async detail => { PatientAge = detail; await PatientAgeChanged.InvokeAsync(detail); }"
Min="0"
T="int"
Label="سن بیمار"
Variant="Variant.Outlined"/>
<MudAutocomplete Required="true" RequiredError="بخش بیمار خود را وارد کنید" Value="@SelectedSection" ToStringFunc="dto => dto.Name"
SearchFunc="@SearchSection"
class="text-sm my-5"
ValueChanged="async dto => { SelectedSection = dto; await SelectedSectionChanged.InvokeAsync(SelectedSection); }"
T="SectionSDto" Label="بخش بیمار" Variant="Variant.Outlined">
<ProgressIndicatorInPopoverTemplate>
<MudList Clickable="false">
<MudListItem>
<div class="flex flex-row w-full mx-auto">
<MudProgressCircular class="my-auto mr-1 -ml-4" Size="Size.Small" Indeterminate="true"/>
<p class="font-bold my-1 mx-auto text-md">منتظر بمانید</p>
</div>
</MudListItem>
</MudList>
</ProgressIndicatorInPopoverTemplate>
<ItemTemplate Context="e">
<p>@e.Name</p>
</ItemTemplate>
</MudAutocomplete>
<MudTextField Required="true" RequiredError="شکایت اصلی بیمار را وارد کنید" Value="@ChiefComplaint" ValueChanged="async detail => { ChiefComplaint = detail; await ChiefComplaintChanged.InvokeAsync(detail); }"
T="string" Label="شکایت اصلی بیمار" Variant="Variant.Outlined" class="text-sm my-5"/>
<MudAutocomplete Value="@SelectedTemplate"
CoerceValue="true"
class="text-sm my-5"
ToStringFunc="dto => dto.ChiefComplaint"
SearchFunc="@SearchTemplates"
ValueChanged="async dto => { SelectedTemplate = dto; await SelectedTemplateChanged.InvokeAsync(SelectedTemplate); }"
T="MedicalHistoryTemplateSDto"
Label="انتخاب از پیش نویس ها"
Variant="Variant.Outlined">
<ProgressIndicatorInPopoverTemplate>
<MudList Clickable="false">
<MudListItem>
<div class="flex flex-row w-full mx-auto">
<MudProgressCircular class="my-auto mr-1 -ml-4" Size="Size.Small" Indeterminate="true"/>
<p class="font-bold my-1 mx-auto text-md">منتظر بمانید</p>
</div>
</MudListItem>
</MudList>
</ProgressIndicatorInPopoverTemplate>
<ItemTemplate Context="e">
<p>@e.ChiefComplaint</p>
</ItemTemplate>
</MudAutocomplete>
</MudFocusTrap>
</MudForm>
@if (IsEditing)
{
<BaseButtonUi Icon="@Icons.Material.TwoTone.Close"
@onclick="@DeleteClicked" Content="حذف شرح حال" Variant="Variant.Outlined" Color="Color.Error" />
}
</MudStack>
@code
{
[Parameter]
public string PatientFirstName { get; set; } = string.Empty;
[Parameter]
public EventCallback<string> PatientFirstNameChanged { get; set; }
[Parameter]
public string PatientLastName { get; set; } = string.Empty;
[Parameter]
public EventCallback<string> PatientLastNameChanged { get; set; }
[Parameter]
public int PatientAge { get; set; }
[Parameter]
public EventCallback<int> PatientAgeChanged { get; set; }
[Parameter]
public string ChiefComplaint { get; set; } = string.Empty;
[Parameter]
public EventCallback<string> ChiefComplaintChanged { get; set; }
[Parameter]
public SectionSDto SelectedSection { get; set; } = new();
[Parameter]
public EventCallback<SectionSDto> SelectedSectionChanged { get; set; }
[Parameter]
public MedicalHistoryTemplateSDto SelectedTemplate { get; set; } = new();
[Parameter]
public PatientSDto SelectedPatient { get; set; } = new();
[Parameter]
public EventCallback<MedicalHistoryTemplateSDto> SelectedTemplateChanged { get; set; }
[Parameter]
public EventCallback DeleteClicked { get; set; }
[Parameter]
public bool IsEditing { get; set; }
private MedicalHistoryTemplateLDto _editingTemplate = new();
public List<SectionSDto> Sections { get; private set; } = new List<SectionSDto>();
public List<MedicalHistoryTemplateSDto> Templates { get; private set; } = new List<MedicalHistoryTemplateSDto>();
public List<PatientSDto> Patients { get; private set; } = new List<PatientSDto>();
public async Task<IEnumerable<MedicalHistoryTemplateSDto>> SearchTemplates(string template)
{
try
{
var token = await UserUtility.GetBearerTokenAsync();
var list = await RestWrapper
.CrudDtoApiRest<MedicalHistoryTemplateLDto, MedicalHistoryTemplateSDto, Guid>(Address.MedicalHistoryTemplateController)
.ReadAll(0, token);
Templates = list;
if (template.IsNullOrEmpty())
return Templates;
return Templates.Where(c => c.ChiefComplaint.Contains(template));
}
catch (ApiException ex)
{
var exe = await ex.GetContentAsAsync<ApiResult>();
return Templates;
}
catch (Exception e)
{
return Templates;
}
}
public async Task<IEnumerable<PatientSDto>> SearchPatients(string name)
{
try
{
var token = await UserUtility.GetBearerTokenAsync();
var list = await RestWrapper.PatientRestApi.GetPatientsAsync(token,0,Refers.SizeM,null,name);
Patients = list;
return Patients;
}
catch (ApiException ex)
{
var exe = await ex.GetContentAsAsync<ApiResult>();
return Patients;
}
catch (Exception e)
{
return Patients;
}
}
public async Task<IEnumerable<SectionSDto>> SearchSection(string section)
{
try
{
var token = await UserUtility.GetBearerTokenAsync();
var user = await UserUtility.GetUserAsync();
Sections = await RestWrapper.SectionRestApi.GetByUniversityAsync(user.UniversityId, token);
if (section.IsNullOrEmpty())
return Sections;
return Sections.Where(c => c.Name.Contains(section));
}
catch (ApiException ex)
{
var exe = await ex.GetContentAsAsync<ApiResult>();
return Sections;
}
catch (Exception e)
{
return Sections;
}
}
}