From e1cb7f5a051b8dc18b7237488acef261f0875ca9 Mon Sep 17 00:00:00 2001 From: Mohammed Nihal <57055998+nihal467@users.noreply.github.com> Date: Sat, 12 Oct 2024 03:55:15 +0200 Subject: [PATCH 01/25] fix the resource update width (#8757) --- src/Components/Resource/ResourceDetails.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Components/Resource/ResourceDetails.tsx b/src/Components/Resource/ResourceDetails.tsx index de024f46f41..50e572f5680 100644 --- a/src/Components/Resource/ResourceDetails.tsx +++ b/src/Components/Resource/ResourceDetails.tsx @@ -253,7 +253,7 @@ export default function ResourceDetails(props: { id: string }) {
{data.title || "--"}
Update Status/Details From 401514802322c6fafd56b33b802810c1f9c0b444 Mon Sep 17 00:00:00 2001 From: Mohammed Nihal <57055998+nihal467@users.noreply.github.com> Date: Sat, 12 Oct 2024 03:57:33 +0200 Subject: [PATCH 02/25] Fixed the type issue in the cypress test file (#8766) --- cypress/e2e/assets_spec/AssetHomepage.cy.ts | 4 +- cypress/e2e/assets_spec/AssetsCreation.cy.ts | 2 +- cypress/e2e/patient_spec/PatientFileUpload.ts | 5 +- .../sample_test_spec/SampleTestHomepage.cy.ts | 8 +-- cypress/pageobject/Asset/AssetCreation.ts | 20 +++---- cypress/pageobject/Asset/AssetFilters.ts | 8 +-- .../pageobject/Facility/FacilityCreation.ts | 24 ++++----- cypress/pageobject/Facility/FacilityHome.ts | 4 +- cypress/pageobject/Facility/FacilityManage.ts | 23 ++++---- .../pageobject/Patient/PatientConsultation.ts | 7 +-- cypress/pageobject/Patient/PatientCreation.ts | 34 ++++++------ cypress/pageobject/Patient/PatientHome.ts | 6 +-- .../pageobject/Patient/PatientInsurance.ts | 10 ++-- .../pageobject/Patient/PatientLogupdate.ts | 8 +-- .../Patient/PatientMedicalHistory.ts | 22 ++++---- cypress/pageobject/Resource/ResourcePage.ts | 14 ++--- cypress/pageobject/Users/ManageUserPage.ts | 26 ++++----- cypress/support/commands.ts | 54 +++++++++++-------- cypress/tsconfig.json | 6 +-- package-lock.json | 9 +++- package.json | 3 +- 21 files changed, 151 insertions(+), 146 deletions(-) diff --git a/cypress/e2e/assets_spec/AssetHomepage.cy.ts b/cypress/e2e/assets_spec/AssetHomepage.cy.ts index f462bda4327..57c315bb0c4 100644 --- a/cypress/e2e/assets_spec/AssetHomepage.cy.ts +++ b/cypress/e2e/assets_spec/AssetHomepage.cy.ts @@ -99,9 +99,9 @@ describe("Asset Tab", () => { it("Export asset", () => { assetPage.selectassetimportbutton(); cy.wait(2000); - assetPage.selectjsonexportbutton(); + assetPage.selectJsonExportButton(); assetPage.selectassetimportbutton(); - assetPage.selectcsvexportbutton(); + assetPage.selectCsvExportButton(); }); afterEach(() => { diff --git a/cypress/e2e/assets_spec/AssetsCreation.cy.ts b/cypress/e2e/assets_spec/AssetsCreation.cy.ts index 1bcd984a7a3..6d94108b362 100644 --- a/cypress/e2e/assets_spec/AssetsCreation.cy.ts +++ b/cypress/e2e/assets_spec/AssetsCreation.cy.ts @@ -129,7 +129,7 @@ describe("Asset", () => { "d5694af2-21e2-4a39-9bad-2fb98d9818bd", ); assetPage.clickConfigureAsset(); - assetPage.verifyAssetConfiguration(200); + assetPage.verifyAssetConfiguration(); }); it("Add an vital monitor asset and configure it", () => { diff --git a/cypress/e2e/patient_spec/PatientFileUpload.ts b/cypress/e2e/patient_spec/PatientFileUpload.ts index 9d6852d16e7..7e5a3073179 100644 --- a/cypress/e2e/patient_spec/PatientFileUpload.ts +++ b/cypress/e2e/patient_spec/PatientFileUpload.ts @@ -5,7 +5,10 @@ const loginPage = new LoginPage(); const patientPage = new PatientPage(); const patientFileUpload = new PatientFileUpload(); -function runTests(testDescription, visitPatientFileUploadSection) { +function runTests( + testDescription: string, + visitPatientFileUploadSection: () => void, +) { describe(testDescription, () => { const cypressAudioName = "cypress audio"; const cypressFileName = "cypress name"; diff --git a/cypress/e2e/sample_test_spec/SampleTestHomepage.cy.ts b/cypress/e2e/sample_test_spec/SampleTestHomepage.cy.ts index 1af1cfc5cb4..98d69ccff41 100644 --- a/cypress/e2e/sample_test_spec/SampleTestHomepage.cy.ts +++ b/cypress/e2e/sample_test_spec/SampleTestHomepage.cy.ts @@ -13,18 +13,14 @@ describe("Sample List", () => { it("Search by District name", () => { cy.intercept(/\/api\/v1\/test_sample/).as("test_sample"); cy.get("[name='district_name']").type("Test"); - cy.wait("@test_sample").then((interception) => { - expect(interception.response.statusCode).to.equal(200); - }); + cy.wait("@test_sample").its("response.statusCode").should("eq", 200); cy.url().should("include", "Test"); }); it("Search by Patient Name", () => { cy.intercept(/\/api\/v1\/test_sample/).as("test_sample"); cy.get("[name='patient_name']").type("Test"); - cy.wait("@test_sample").then((interception) => { - expect(interception.response.statusCode).to.equal(200); - }); + cy.wait("@test_sample").its("response.statusCode").should("eq", 200); cy.url().should("include", "Test"); }); diff --git a/cypress/pageobject/Asset/AssetCreation.ts b/cypress/pageobject/Asset/AssetCreation.ts index 41d3c4ca8d0..d6991e82ff0 100644 --- a/cypress/pageobject/Asset/AssetCreation.ts +++ b/cypress/pageobject/Asset/AssetCreation.ts @@ -149,10 +149,8 @@ export class AssetPage { cy.intercept(/\/api\/v1\/asset/).as("asset"); } - verifyAssetConfiguration(statusCode: number) { - cy.wait("@asset").then((interception) => { - expect(interception.response.statusCode).to.equal(statusCode); - }); + verifyAssetConfiguration() { + cy.wait("@asset").its("response.statusCode").should("eq", 200); } clickConfigureAsset() { @@ -222,22 +220,16 @@ export class AssetPage { cy.get("[data-testid=import-asset-button]").click(); } - selectjsonexportbutton() { + selectJsonExportButton() { cy.intercept("GET", "**/api/v1/asset/?**json=true**").as("getJsonexport"); cy.get("#export-json-option").click(); - cy.wait("@getJsonexport").then(({ request, response }) => { - expect(response.statusCode).to.eq(200); - expect(request.url).to.include("json=true"); - }); + cy.wait("@getJsonexport").its("response.statusCode").should("eq", 200); } - selectcsvexportbutton() { + selectCsvExportButton() { cy.intercept("GET", "**/api/v1/asset/?**csv=true**").as("getCsvexport"); cy.get("#export-csv-option").click(); - cy.wait("@getCsvexport").then(({ request, response }) => { - expect(response.statusCode).to.eq(200); - expect(request.url).to.include("csv=true"); - }); + cy.wait("@getCsvexport").its("response.statusCode").should("eq", 200); } selectImportOption() { diff --git a/cypress/pageobject/Asset/AssetFilters.ts b/cypress/pageobject/Asset/AssetFilters.ts index ac83ca97c0b..5a942b22f47 100644 --- a/cypress/pageobject/Asset/AssetFilters.ts +++ b/cypress/pageobject/Asset/AssetFilters.ts @@ -56,16 +56,16 @@ export class AssetFilters { cy.get("#close-slide-over").click(); } // Assertions - assertFacilityText(text) { + assertFacilityText(text: string) { cy.get("[data-testid=Facility]").should("contain", text); } - assertAssetClassText(text) { + assertAssetClassText(text: string) { cy.get("[data-testid='Asset Class']").should("contain", text); } - assertStatusText(text) { + assertStatusText(text: string) { cy.get("[data-testid=Status]").should("contain", text); } - assertLocationText(text) { + assertLocationText(text: string) { cy.get("[data-testid=Location]").should("contain", text); } } diff --git a/cypress/pageobject/Facility/FacilityCreation.ts b/cypress/pageobject/Facility/FacilityCreation.ts index a1676e625dd..26f387935ac 100644 --- a/cypress/pageobject/Facility/FacilityCreation.ts +++ b/cypress/pageobject/Facility/FacilityCreation.ts @@ -9,7 +9,7 @@ class FacilityPage { .should("eq", 200); } - typeFacilitySearch(facilityName) { + typeFacilitySearch(facilityName: string) { cy.get("#search").click().clear(); cy.get("#search").click().type(facilityName); } @@ -21,7 +21,7 @@ class FacilityPage { cy.get("#manage-facility-dropdown button").should("be.visible"); } - clickUpdateFacilityType(facilityType) { + clickUpdateFacilityType(facilityType: string) { cy.get("#facility_type") .click() .then(() => { @@ -225,11 +225,11 @@ class FacilityPage { } fillTriageEntryFields( - visited, - homeQuarantine, - isolation, - referred, - confirmedPositive, + visited: string, + homeQuarantine: string, + isolation: string, + referred: string, + confirmedPositive: string, ) { cy.get("#num_patients_visited").clear().click().type(visited); cy.get("#num_patients_home_quarantine") @@ -244,7 +244,7 @@ class FacilityPage { .type(confirmedPositive); } - fillEntryDate(date) { + fillEntryDate(date: string) { cy.get("#entry_date").click(); cy.get("#date-input").click().type(date); } @@ -253,13 +253,13 @@ class FacilityPage { cy.get("#edit-button").click(); } - clickButtonsMultipleTimes(selector) { + clickButtonsMultipleTimes(selector: string) { cy.get(selector).each(($button) => { cy.wrap($button).click(); }); } - verifyTriageTableContains(value) { + verifyTriageTableContains(value: string) { cy.get("#triage-table").contains(value); } @@ -430,7 +430,7 @@ class FacilityPage { return cy.get("#district"); } - selectStateOnPincode(stateName) { + selectStateOnPincode(stateName: string) { this.getStateElement() .scrollIntoView() .wait(2000) @@ -444,7 +444,7 @@ class FacilityPage { }); } - selectDistrictOnPincode(districtName) { + selectDistrictOnPincode(districtName: string) { this.getDistrictElement() .scrollIntoView() .wait(2000) diff --git a/cypress/pageobject/Facility/FacilityHome.ts b/cypress/pageobject/Facility/FacilityHome.ts index 956c374ada4..e021171ff0a 100644 --- a/cypress/pageobject/Facility/FacilityHome.ts +++ b/cypress/pageobject/Facility/FacilityHome.ts @@ -53,7 +53,7 @@ class FacilityHome { cy.get("#facility-detailspage-cns").click(); } - selectLocation(location) { + selectLocation(location: string) { cy.get("#location").click().type(location); cy.get("li[role=option]").contains(location).click(); } @@ -99,7 +99,7 @@ class FacilityHome { return cy.url(); } - verifyURLContains(searchText) { + verifyURLContains(searchText: string) { const encodedText = encodeURIComponent(searchText).replace(/%20/g, "+"); this.getURL().should("include", `search=${encodedText}`); } diff --git a/cypress/pageobject/Facility/FacilityManage.ts b/cypress/pageobject/Facility/FacilityManage.ts index 9e41d5d0290..52a432abe59 100644 --- a/cypress/pageobject/Facility/FacilityManage.ts +++ b/cypress/pageobject/Facility/FacilityManage.ts @@ -7,17 +7,17 @@ class FacilityManage { cy.get("#upload-cover-image").should("be.visible"); } - uploadCoverImage(fileName) { + uploadCoverImage(fileName: string) { cy.get("#upload-cover-image") .selectFile(`cypress/fixtures/${fileName}`, { force: true }) .wait(100); // Adjust the wait time as needed } - verifyTotalDoctorCapacity(expectedCapacity) { + verifyTotalDoctorCapacity(expectedCapacity: string) { cy.get("#facility-doctor-totalcapacity").contains(expectedCapacity); } - verifyFacilityBedCapacity(expectedCapacity) { + verifyFacilityBedCapacity(expectedCapacity: string) { cy.get("#facility-bed-capacity-details").contains(expectedCapacity); } @@ -51,15 +51,15 @@ class FacilityManage { cy.get("#middleware_address").should("be.visible"); } - clickButtonWithText(text) { + clickButtonWithText(text: string) { cy.get("button#submit").contains(text).click(); } - checkErrorMessageVisibility(text) { + checkErrorMessageVisibility(text: string) { cy.get(".error-text").contains(text).should("be.visible"); } - typeMiddlewareAddress(address) { + typeMiddlewareAddress(address: string) { cy.get("#middleware_address").click().clear().click().type(address); } @@ -67,11 +67,14 @@ class FacilityManage { cy.get("#hf_id").click().clear(); } - typeHfrId(address) { + typeHfrId(address: string) { cy.get("#hf_id").click().clear().click().type(address); } - verifySuccessMessageVisibilityAndContent(text, isRegex = false) { + verifySuccessMessageVisibilityAndContent( + text: string | RegExp, + isRegex = false, + ) { if (isRegex) { cy.get(".pnotify-text").should("be.visible").contains(text); } else { @@ -79,11 +82,11 @@ class FacilityManage { } } - verifyMiddlewareAddressValue(expectedValue) { + verifyMiddlewareAddressValue(expectedValue: string) { cy.get("#middleware_address").should("have.value", expectedValue); } - verifyHfrIdValue(expectedValue) { + verifyHfrIdValue(expectedValue: string) { cy.get("#hf_id").should("have.value", expectedValue); } diff --git a/cypress/pageobject/Patient/PatientConsultation.ts b/cypress/pageobject/Patient/PatientConsultation.ts index cc5b8e19465..21da5243500 100644 --- a/cypress/pageobject/Patient/PatientConsultation.ts +++ b/cypress/pageobject/Patient/PatientConsultation.ts @@ -6,9 +6,10 @@ export class PatientConsultationPage { cy.clickAndSelectOption("#route_to_facility", status); } - typeAndMultiSelectSymptoms(input, symptoms) { + typeAndMultiSelectSymptoms(input: string, symptoms: string[]) { cy.typeAndMultiSelectOption("#additional_symptoms", input, symptoms); } + selectSymptomsDate(date: string) { cy.clickAndTypeDate("#symptoms_onset_date", date); } @@ -48,7 +49,7 @@ export class PatientConsultationPage { cy.get("#death_confirmed_doctor").click().type(doctor); } - selectPatientDiagnosis(icdCode, statusId) { + selectPatientDiagnosis(icdCode: string, statusId: string) { cy.searchAndSelectOption("#icd11-search", icdCode); cy.get("#diagnosis-list") .contains("Add as") @@ -92,7 +93,7 @@ export class PatientConsultationPage { cy.clickAndSelectOption("#principal-diagnosis-select", diagnosis); } - verifyTextInConsultation(selector, text) { + verifyTextInConsultation(selector: string, text: string) { cy.get(selector).scrollIntoView(); cy.get(selector).contains(text).should("be.visible"); } diff --git a/cypress/pageobject/Patient/PatientCreation.ts b/cypress/pageobject/Patient/PatientCreation.ts index e037f0888f0..0ec505a47a0 100644 --- a/cypress/pageobject/Patient/PatientCreation.ts +++ b/cypress/pageobject/Patient/PatientCreation.ts @@ -10,7 +10,7 @@ export class PatientPage { cy.wait("@getFacilities").its("response.statusCode").should("eq", 200); } - visitPatient(patientName) { + visitPatient(patientName: string) { cy.get("#name").click().type(patientName); cy.intercept("GET", "**/api/v1/consultation/**").as("getPatient"); cy.get("#patient-name-list").contains(patientName).click(); @@ -165,16 +165,16 @@ export class PatientPage { } verifyPatientDashboardDetails( - gender, - age, - patientName, - phoneNumber, - emergencyPhoneNumber, - yearOfBirth, - bloodGroup, - occupation, - socioeconomicStatus = null, - domesticHealthcareSupport = null, + gender: string, + age: number, + patientName: string, + phoneNumber: string, + emergencyPhoneNumber: string, + yearOfBirth: string, + bloodGroup: string, + occupation: string, + socioeconomicStatus: string | null = null, + domesticHealthcareSupport: string | null = null, isAntenatal = false, isPostPartum = false, ) { @@ -202,12 +202,12 @@ export class PatientPage { } verifyPatientLocationDetails( - patientAddress, - patientPincode, - patientState, - patientDistrict, - patientLocalbody, - patientWard, + patientAddress: string, + patientPincode: number, + patientState: string, + patientDistrict: string, + patientLocalbody: string, + patientWard: string, ) { cy.get("[data-testid=patient-details]").then(($dashboard) => { cy.url().should("include", "/facility/"); diff --git a/cypress/pageobject/Patient/PatientHome.ts b/cypress/pageobject/Patient/PatientHome.ts index d2f4efdc877..4f953adf78b 100644 --- a/cypress/pageobject/Patient/PatientHome.ts +++ b/cypress/pageobject/Patient/PatientHome.ts @@ -27,11 +27,7 @@ class PatientHome { } verifyPatientExportRequest() { - cy.wait("@getPatients").then((interception) => { - expect(interception.request.url).to.include("/api/v1/patient/"); - expect(interception.request.url).to.include("&csv"); - expect(interception.response.statusCode).to.eq(200); - }); + cy.wait("@getPatients").its("response.statusCode").should("eq", 200); } typePatientModifiedBeforeDate(startDate: string) { diff --git a/cypress/pageobject/Patient/PatientInsurance.ts b/cypress/pageobject/Patient/PatientInsurance.ts index bdd571e9d0c..1b91d27b629 100644 --- a/cypress/pageobject/Patient/PatientInsurance.ts +++ b/cypress/pageobject/Patient/PatientInsurance.ts @@ -47,11 +47,11 @@ class PatientInsurance { } verifyPatientPolicyDetails( - subscriberId, - policyId, - insurerId, - insurerName, - isHcxEnabled, + subscriberId: string, + policyId: string, + insurerId: string, + insurerName: string, + isHcxEnabled: string, ) { cy.get("[data-testid=patient-details]").then(($dashboard) => { cy.url().should("include", "/facility/"); diff --git a/cypress/pageobject/Patient/PatientLogupdate.ts b/cypress/pageobject/Patient/PatientLogupdate.ts index add3fbb0590..b2822d03353 100644 --- a/cypress/pageobject/Patient/PatientLogupdate.ts +++ b/cypress/pageobject/Patient/PatientLogupdate.ts @@ -32,7 +32,7 @@ class PatientLogupdate { cy.get("#other_details").click().type(details); } - typeAndMultiSelectSymptoms(input, symptoms) { + typeAndMultiSelectSymptoms(input: string, symptoms: string[]) { cy.typeAndMultiSelectOption("#additional_symptoms", input, symptoms); } selectSymptomsDate(date: string) { @@ -74,14 +74,14 @@ class PatientLogupdate { cy.get("#rhythm_detail").click().type(rhythm); } - clickLogUpdateViewDetails(element, patientCategory) { + clickLogUpdateViewDetails(element: string, patientCategory: string) { cy.get(element).scrollIntoView(); cy.verifyContentPresence(element, [patientCategory]); cy.get(element).first().contains("View Details").click(); cy.wait(3000); } - clickLogUpdateUpdateLog(element, patientCategory) { + clickLogUpdateUpdateLog(element: string, patientCategory: string) { cy.get(element).scrollIntoView(); cy.verifyContentPresence(element, [patientCategory]); cy.get(element).first().contains("Update Log").click(); @@ -93,7 +93,7 @@ class PatientLogupdate { cy.wait(3000); } - clickClearButtonInElement(elementId) { + clickClearButtonInElement(elementId: string) { cy.get(elementId).find("#clear-button").click(); } diff --git a/cypress/pageobject/Patient/PatientMedicalHistory.ts b/cypress/pageobject/Patient/PatientMedicalHistory.ts index a0dbdd0131a..93fdd1b38b3 100644 --- a/cypress/pageobject/Patient/PatientMedicalHistory.ts +++ b/cypress/pageobject/Patient/PatientMedicalHistory.ts @@ -11,7 +11,7 @@ class PatientMedicalHistory { cy.get("#allergies").click().type(allergies); } - typeMedicalHistory(index, text) { + typeMedicalHistory(index: number, text: string) { cy.get(`#medical_history_check_${index}`).click(); cy.get(`#medical_history_${index}`).click().type(text); } @@ -22,16 +22,16 @@ class PatientMedicalHistory { } verifyPatientMedicalDetails( - patientPresentHealth, - patientOngoingMedication, - patientAllergies, - patientSymptoms1, - patientSymptoms2, - patientSymptoms3, - patientSymptoms4, - patientSymptoms5, - patientSymptoms6, - patientSymptoms7, + patientPresentHealth: string, + patientOngoingMedication: string, + patientAllergies: string, + patientSymptoms1: string, + patientSymptoms2: string, + patientSymptoms3: string, + patientSymptoms4: string, + patientSymptoms5: string, + patientSymptoms6: string, + patientSymptoms7: string, ) { cy.get("[data-testid=patient-details]").then(($dashboard) => { cy.url().should("include", "/facility/"); diff --git a/cypress/pageobject/Resource/ResourcePage.ts b/cypress/pageobject/Resource/ResourcePage.ts index e4078fcb317..730d3dd9148 100644 --- a/cypress/pageobject/Resource/ResourcePage.ts +++ b/cypress/pageobject/Resource/ResourcePage.ts @@ -4,9 +4,9 @@ class ResourcePage { cy.get("svg.care-svg-icon__baseline.care-l-export").each(($button) => { cy.intercept(/\/api\/v1\/resource/).as("resource_download"); cy.wrap($button).click({ force: true }); - cy.wait("@resource_download").then((interception) => { - expect(interception.response.statusCode).to.equal(200); - }); + cy.wait("@resource_download") + .its("response.statusCode") + .should("eq", 200); }); } @@ -19,9 +19,7 @@ class ResourcePage { } verifyCompletedResources() { - cy.wait("@resource").then((interception) => { - expect(interception.response.statusCode).to.equal(200); - }); + cy.wait("@resource").its("response.statusCode").should("eq", 200); cy.contains("button", "Active").should("have.class", "text-primary-500"); cy.contains("button", "Completed").should("have.class", "text-white"); } @@ -31,9 +29,7 @@ class ResourcePage { } verifyActiveResources() { - cy.wait("@resource").then((interception) => { - expect(interception.response.statusCode).to.equal(200); - }); + cy.wait("@resource").its("response.statusCode").should("eq", 200); cy.contains("button", "Active").should("have.class", "text-white"); cy.contains("button", "Completed").should("have.class", "text-primary-500"); } diff --git a/cypress/pageobject/Users/ManageUserPage.ts b/cypress/pageobject/Users/ManageUserPage.ts index f3e0deca53b..a9ac1374085 100644 --- a/cypress/pageobject/Users/ManageUserPage.ts +++ b/cypress/pageobject/Users/ManageUserPage.ts @@ -1,5 +1,5 @@ export class ManageUserPage { - assertHomeFacility(expectedText) { + assertHomeFacility(expectedText: string) { cy.get("#home_facility").should("contain.text", expectedText); } @@ -7,11 +7,11 @@ export class ManageUserPage { cy.get("#facilities").click(); } - selectFacilityFromDropdown(facilityName) { + selectFacilityFromDropdown(facilityName: string) { cy.searchAndSelectOption("input[name='facility']", facilityName); } - selectSkillFromDropdown(skill) { + selectSkillFromDropdown(skill: string) { cy.searchAndSelectOption("input[name='skill']", skill); } @@ -19,11 +19,11 @@ export class ManageUserPage { cy.get("#link-facility").click(); } - assertLinkedFacility(facilityName) { + assertLinkedFacility(facilityName: string) { cy.get("#linked-facility-list").should("contain.text", facilityName); } - assertnotLinkedFacility(facilityName) { + assertnotLinkedFacility(facilityName: string) { cy.get("#linked-facility-list").should("not.contain", facilityName); } @@ -31,11 +31,11 @@ export class ManageUserPage { cy.get("#linked-facility-list").should("not.exist"); } - assertHomeFacilitylink(facilityName) { + assertHomeFacilitylink(facilityName: string) { cy.get("#home-facility").should("contain.text", facilityName); } - assertFacilityNotInDropdown(facilityName) { + assertFacilityNotInDropdown(facilityName: string) { cy.get("input[name='facility']").click().type(facilityName); cy.get("[role='option']").should("not.exist"); } @@ -93,12 +93,12 @@ export class ManageUserPage { cy.visit("/facility"); } - typeFacilitySearch(facilityName) { + typeFacilitySearch(facilityName: string) { cy.get("#search").click().clear(); cy.get("#search").click().type(facilityName); } - assertFacilityInCard(facilityName) { + assertFacilityInCard(facilityName: string) { cy.get("#facility-name-card").should("contain", facilityName); } @@ -117,13 +117,13 @@ export class ManageUserPage { cy.wait("@getSkills").its("response.statusCode").should("eq", 200); } - assertSkillInAlreadyLinkedSkills(skillName) { + assertSkillInAlreadyLinkedSkills(skillName: string) { cy.get("#already-linked-skills") .contains(skillName) .should("have.length", 1); } - assertSkillIndoctorconnect(skillName) { + assertSkillIndoctorconnect(skillName: string) { cy.get("#doctor-connect-home-doctor") .contains(skillName) .should("have.length", 1); @@ -137,11 +137,11 @@ export class ManageUserPage { cy.get("#unlink-skill").click(); } - assertSkillInAddedUserSkills(skillName) { + assertSkillInAddedUserSkills(skillName: string) { cy.get("#added-user-skills").should("contain", skillName); } - assertDoctorConnectVisibility(realName) { + assertDoctorConnectVisibility(realName: string) { cy.get('*[id="doctor-connect-home-doctor"]').should( "contain.text", realName, diff --git a/cypress/support/commands.ts b/cypress/support/commands.ts index 86d048e5f41..320f19d8b0e 100644 --- a/cypress/support/commands.ts +++ b/cypress/support/commands.ts @@ -38,8 +38,8 @@ Cypress.Commands.add("refreshApiLogin", (username, password) => { Cypress.Commands.add("loginByApi", (username, password) => { cy.log(`Logging in the user: ${username}:${password}`); cy.task("readFileMaybe", "cypress/fixtures/token.json").then( - (tkn: string) => { - const token = JSON.parse(tkn); + (tkn: unknown) => { + const token = JSON.parse(tkn as string); // Cast tkn to string if (tkn && token.access && token.username === username) { cy.request({ method: "POST", @@ -66,21 +66,6 @@ Cypress.Commands.add("loginByApi", (username, password) => { ); }); -Cypress.Commands.add( - "awaitUrl", - (url: string, disableLoginVerification = false) => { - cy.intercept(/getcurrentuser/).as("currentuser"); - cy.visit(url); - disableLoginVerification - ? cy.wait("@currentuser") - : cy.wait("@currentuser").its("response.statusCode").should("eq", 200); - }, -); - -Cypress.Commands.add("verifyNotification", (text) => { - return cy.get(".pnotify-container").should("exist").contains(text); -}); - Cypress.on("uncaught:exception", () => { // returning false here prevents Cypress from // failing the test @@ -94,19 +79,44 @@ Cypress.on("uncaught:exception", () => { * Waits until the selector finds an attached element, then yields it (wrapped). * selectorFn, if provided, is passed $(document). Don't use cy methods inside selectorFn. */ -Cypress.Commands.add("getAttached", (selector) => { +Cypress.Commands.add("getAttached", (selector: string) => { const getElement = - typeof selector === "function" ? selector : ($d) => $d.find(selector); - let $el = null; + typeof selector === "function" + ? selector + : ($d: JQuery) => + $d.find(selector) as unknown as JQuery; + + let $el: JQuery | null = null; + return cy .document() - .should(($d) => { + .should(($d: Document) => { $el = getElement(Cypress.$($d)); - expect(Cypress.dom.isDetached($el)).to.be.false; + // Ensure $el is an HTMLElement before checking if it is detached + if ($el.length && $el[0] instanceof HTMLElement) { + expect(Cypress.dom.isDetached($el[0])).to.be.false; // Access the first HTMLElement + } else { + throw new Error("Element is not an HTMLElement or is detached."); + } }) .then(() => cy.wrap($el)); }); +Cypress.Commands.add( + "awaitUrl", + (url: string, disableLoginVerification = false) => { + cy.intercept(/getcurrentuser/).as("currentuser"); + cy.visit(url); + disableLoginVerification + ? cy.wait("@currentuser") + : cy.wait("@currentuser").its("response.statusCode").should("eq", 200); + }, +); + +Cypress.Commands.add("verifyNotification", (text) => { + return cy.get(".pnotify-container").should("exist").contains(text); +}); + Cypress.Commands.add("clearAllFilters", () => { return cy.get("#clear-all-filters").click(); }); diff --git a/cypress/tsconfig.json b/cypress/tsconfig.json index 9c019786170..0fd7f9e340b 100644 --- a/cypress/tsconfig.json +++ b/cypress/tsconfig.json @@ -1,11 +1,11 @@ { "compilerOptions": { - "baseUrl": "../node_modules", + "baseUrl": "./", "target": "es5", "lib": ["es5", "dom", "es2015", "es2016", "es2017", "es2018", "es2019", "es2020"], "types": ["cypress"], "typeRoots": ["./support"], "resolveJsonModule": true }, - "include": ["**/*.ts", "support/commands.js"], -} + "include": ["**/*.cy.ts", "support/commands.ts","**/*.ts"], +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 59a22853fd5..6d2da7a4750 100644 --- a/package-lock.json +++ b/package-lock.json @@ -76,10 +76,11 @@ "@types/react-csv": "^1.1.10", "@types/react-dom": "^18.3.0", "@types/react-google-recaptcha": "^2.1.9", + "@types/uuid": "^10.0.0", "@typescript-eslint/eslint-plugin": "^7.18.0", "@vitejs/plugin-react-swc": "^3.6.0", "autoprefixer": "^10.4.19", - "cypress": "^13.14.2", + "cypress": "^13.15.0", "cypress-localstorage-commands": "^2.2.5", "cypress-split": "^1.23.2", "eslint-config-prettier": "^9.1.0", @@ -4709,6 +4710,12 @@ "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==" }, + "node_modules/@types/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==", + "dev": true + }, "node_modules/@types/yauzl": { "version": "2.10.3", "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", diff --git a/package.json b/package.json index 68de432e82e..eb1c851bc0d 100644 --- a/package.json +++ b/package.json @@ -111,10 +111,11 @@ "@types/react-csv": "^1.1.10", "@types/react-dom": "^18.3.0", "@types/react-google-recaptcha": "^2.1.9", + "@types/uuid": "^10.0.0", "@typescript-eslint/eslint-plugin": "^7.18.0", "@vitejs/plugin-react-swc": "^3.6.0", "autoprefixer": "^10.4.19", - "cypress": "^13.14.2", + "cypress": "^13.15.0", "cypress-localstorage-commands": "^2.2.5", "cypress-split": "^1.23.2", "eslint-config-prettier": "^9.1.0", From 31c41ae637e1358944b329cd2cdfbe3c598c0810 Mon Sep 17 00:00:00 2001 From: Mohammed Nihal <57055998+nihal467@users.noreply.github.com> Date: Sat, 12 Oct 2024 04:10:58 +0200 Subject: [PATCH 03/25] New Cypress Test | Patient Details Advance Filters (#8750) --- .../e2e/patient_spec/PatientHomepage.cy.ts | 128 +++++++++++ .../pageobject/Patient/PatientConsultation.ts | 10 +- cypress/pageobject/Patient/PatientCreation.ts | 4 +- .../pageobject/Patient/PatientDischarge.ts | 2 +- cypress/pageobject/Patient/PatientHome.ts | 214 ++++++++++++++++++ .../pageobject/Patient/PatientLogupdate.ts | 14 +- .../pageobject/Patient/PatientPrescription.ts | 2 +- .../Patient/PatientTreatmentPlan.ts | 4 +- cypress/pageobject/Users/ManageUserPage.ts | 4 +- cypress/pageobject/Users/UserSearch.ts | 6 +- cypress/support/commands.ts | 2 +- cypress/support/index.ts | 2 +- src/Components/Patient/DiagnosesFilter.tsx | 1 + src/Components/Patient/ManagePatients.tsx | 2 +- src/Components/Patient/PatientFilter.tsx | 13 +- 15 files changed, 380 insertions(+), 28 deletions(-) diff --git a/cypress/e2e/patient_spec/PatientHomepage.cy.ts b/cypress/e2e/patient_spec/PatientHomepage.cy.ts index 0cf5936594d..188b6bc9457 100644 --- a/cypress/e2e/patient_spec/PatientHomepage.cy.ts +++ b/cypress/e2e/patient_spec/PatientHomepage.cy.ts @@ -4,6 +4,24 @@ import PatientHome from "../../pageobject/Patient/PatientHome"; describe("Patient Homepage present functionalities", () => { const loginPage = new LoginPage(); const patientHome = new PatientHome(); + const patientGender = "Male"; + const patientCategory = "Moderate"; + const patientMinimumAge = "18"; + const patientMaximumAge = "24"; + const patientLastAdmittedBed = "No bed assigned"; + const PatientLastConsentType = "No consents"; + const patientTelemedicinePerference = "No"; + const patientReviewStatus = "No"; + const patientMedicoStatus = "Non-Medico-Legal"; + const patientIcdDiagnosis = "1A00"; + const facilityName = "Dummy Facility 40"; + const facilityType = "Private Hospital"; + const facilityLsgBody = "Aikaranad Grama Panchayat, Ernakulam District"; + const facilityDistrict = "Ernakulam"; + const patientFromDate = "01122023"; + const patientToDate = "07122023"; + const patientFromDateBadge = "2023-12-01"; + const patientToDateBadge = "2023-12-07"; before(() => { loginPage.loginAsDisctrictAdmin(); @@ -16,6 +34,116 @@ describe("Patient Homepage present functionalities", () => { cy.awaitUrl("/patients"); }); + it("Date based advance filters applied in the patient tab", () => { + patientHome.clickPatientAdvanceFilters(); + patientHome.typePatientCreatedBeforeDate(patientFromDate); + patientHome.typePatientCreatedAfterDate(patientToDate); + patientHome.typePatientModifiedBeforeDate(patientFromDate); + patientHome.typePatientModifiedAfterDate(patientToDate); + patientHome.typePatientAdmitedBeforeDate(patientFromDate); + patientHome.typePatientAdmitedAfterDate(patientToDate); + patientHome.clickPatientFilterApply(); + patientHome.verifyTotalPatientCount("1"); + // verify the badge and clear the count + patientHome.verifyPatientCreatedBeforeDate(patientToDateBadge); + patientHome.verifyPatientCreatedAfterDate(patientFromDateBadge); + patientHome.verifyPatientModifiedBeforeDate(patientToDateBadge); + patientHome.verifyPatientModifiedAfterDate(patientFromDateBadge); + patientHome.verifyPatientAdmittedBeforeDate(patientToDateBadge); + patientHome.verifyPatientAdmittedAfterDate(patientFromDateBadge); + cy.clearAllFilters(); + patientHome.verifyTotalPatientCount("1"); + }); + + it("Facility Geography based advance filters applied in the patient tab", () => { + patientHome.clickPatientAdvanceFilters(); + patientHome.typeFacilityName(facilityName); + patientHome.selectFacilityType(facilityType); + patientHome.typeFacilityLsgBody(facilityLsgBody); + patientHome.typeFacilityDistrict(facilityDistrict); + patientHome.clickPatientFilterApply(); + patientHome.verifyTotalPatientCount("1"); + // Clear the badges and verify the patient count along with badges + patientHome.verifyFacilityNameBadgeContent(facilityName); + patientHome.verifyFacilityTypeBadgeContent(facilityType); + patientHome.verifyFacilityLsgBadgeContent(facilityLsgBody); + patientHome.verifyFacilityDistrictContent(facilityDistrict); + cy.clearAllFilters(); + patientHome.verifyTotalPatientCount("1"); + }); + + it("Patient diagnosis based advance filters applied in the patient tab", () => { + // Patient Filtering based on icd-11 data + patientHome.clickPatientAdvanceFilters(); + patientHome.selectAnyIcdDiagnosis(patientIcdDiagnosis, patientIcdDiagnosis); + patientHome.selectConfirmedIcdDiagnosis( + patientIcdDiagnosis, + patientIcdDiagnosis, + ); + patientHome.selectUnconfirmedIcdDiagnosis( + patientIcdDiagnosis, + patientIcdDiagnosis, + ); + patientHome.selectProvisionalIcdDiagnosis( + patientIcdDiagnosis, + patientIcdDiagnosis, + ); + patientHome.selectDifferentialIcdDiagnosis( + patientIcdDiagnosis, + patientIcdDiagnosis, + ); + patientHome.clickPatientFilterApply(); + patientHome.verifyTotalPatientCount("0"); + // verify the badges presence in the platform + patientHome.verifyAnyDiagnosisBadgeContent(patientIcdDiagnosis); + patientHome.verifyConfirmedDiagnosisBadgeContent(patientIcdDiagnosis); + patientHome.verifyUnconfirmedDiagnosisBadgeContent(patientIcdDiagnosis); + patientHome.verifyProvisionalDiagnosisBadgeContent(patientIcdDiagnosis); + patientHome.verifyDifferentialDiagnosisBadgeContent(patientIcdDiagnosis); + // Clear the badges and verify the patient count along with badges + cy.clearAllFilters(); + patientHome.verifyTotalPatientCount("1"); + // Apply Any and confirmed diagonsis to verify patient count 17 + patientHome.clickPatientAdvanceFilters(); + patientHome.selectAnyIcdDiagnosis(patientIcdDiagnosis, patientIcdDiagnosis); + patientHome.selectConfirmedIcdDiagnosis( + patientIcdDiagnosis, + patientIcdDiagnosis, + ); + patientHome.clickPatientFilterApply(); + patientHome.verifyTotalPatientCount("1"); + }); + + it("Patient Details based advance filters applied in the patient tab", () => { + // Patient Filtering based on patient details + patientHome.clickPatientAdvanceFilters(); + patientHome.selectPatientGenderfilter(patientGender); + patientHome.selectPatientCategoryfilter(patientCategory); + patientHome.typePatientMinimumAgeFilter(patientMinimumAge); + patientHome.typePatientMaximumAgeFilter(patientMaximumAge); + patientHome.selectPatientLastAdmittedBed(patientLastAdmittedBed); + patientHome.selectPatientLastConsentType(PatientLastConsentType); + patientHome.selectPatientTelemedicineFilter(patientTelemedicinePerference); + patientHome.selectPatientReviewFilter(patientReviewStatus); + patientHome.selectPatientMedicoFilter(patientMedicoStatus); + patientHome.clickPatientFilterApply(); + cy.get("a[data-cy='patient']").should("contain.text", "Dummy Patient"); + patientHome.verifyTotalPatientCount("1"); + // Verify the presence of badges + patientHome.verifyGenderBadgeContent(patientGender); + patientHome.verifyCategoryBadgeContent(patientCategory); + patientHome.verifyMinAgeBadgeContent(patientMinimumAge); + patientHome.verifyMaxAgeBadgeContent(patientMaximumAge); + patientHome.verifyLastAdmittedBedBadgeContent(patientLastAdmittedBed); + patientHome.verifyLastConsentTypeBadgeContent("No Consents"); + patientHome.verifyTelemedicineBadgeContent("false"); + patientHome.verifyReviewMissedBadgeContent("false"); + patientHome.verifyMedicoBadgeContent("false"); + // Clear the badges and verify the patient count along with badges + cy.clearAllFilters(); + patientHome.verifyTotalPatientCount("1"); + }); + it("Export the live patient list based on a date range", () => { patientHome.clickPatientExport(); cy.verifyNotification("Please select a seven day period"); diff --git a/cypress/pageobject/Patient/PatientConsultation.ts b/cypress/pageobject/Patient/PatientConsultation.ts index 21da5243500..71a0fbb3909 100644 --- a/cypress/pageobject/Patient/PatientConsultation.ts +++ b/cypress/pageobject/Patient/PatientConsultation.ts @@ -26,15 +26,15 @@ export class PatientConsultationPage { } selectPatientReferance(referance: string) { - cy.searchAndSelectOption("#referred_to", referance); + cy.typeAndSelectOption("#referred_to", referance); } selectBed(bedNo: string) { - cy.searchAndSelectOption("#bed", bedNo); + cy.typeAndSelectOption("#bed", bedNo); } selectPatientWard(ward: string) { - cy.searchAndSelectOption("#transferred_from_location", ward); + cy.typeAndSelectOption("#transferred_from_location", ward); } selectPatientSuggestion(suggestion: string) { @@ -50,7 +50,7 @@ export class PatientConsultationPage { } selectPatientDiagnosis(icdCode: string, statusId: string) { - cy.searchAndSelectOption("#icd11-search", icdCode); + cy.typeAndSelectOption("#icd11-search", icdCode); cy.get("#diagnosis-list") .contains("Add as") .scrollIntoView() @@ -99,7 +99,7 @@ export class PatientConsultationPage { } typeReferringFacility(referringFacility: string) { - cy.searchAndSelectOption("#referred_from_facility", referringFacility); + cy.typeAndSelectOption("#referred_from_facility", referringFacility); } clickEditConsultationButton() { diff --git a/cypress/pageobject/Patient/PatientCreation.ts b/cypress/pageobject/Patient/PatientCreation.ts index 0ec505a47a0..a583844a632 100644 --- a/cypress/pageobject/Patient/PatientCreation.ts +++ b/cypress/pageobject/Patient/PatientCreation.ts @@ -22,7 +22,7 @@ export class PatientPage { } selectFacility(facilityName: string) { - cy.searchAndSelectOption("input[name='facilities']", facilityName); + cy.typeAndSelectOption("input[name='facilities']", facilityName); cy.submitButton("Select"); } @@ -114,7 +114,7 @@ export class PatientPage { } selectPatientOccupation(occupation: string) { - cy.searchAndSelectOption("#occupation", occupation); + cy.typeAndSelectOption("#occupation", occupation); } selectSocioeconomicStatus(value: string) { diff --git a/cypress/pageobject/Patient/PatientDischarge.ts b/cypress/pageobject/Patient/PatientDischarge.ts index eda6a379a3f..70a6d550887 100644 --- a/cypress/pageobject/Patient/PatientDischarge.ts +++ b/cypress/pageobject/Patient/PatientDischarge.ts @@ -14,7 +14,7 @@ class PatientDischarge { } typeReferringFacility(facility: string) { - cy.searchAndSelectOption("#facility-referredto", facility); + cy.typeAndSelectOption("#facility-referredto", facility); } clickClearButton() { diff --git a/cypress/pageobject/Patient/PatientHome.ts b/cypress/pageobject/Patient/PatientHome.ts index 4f953adf78b..a69a96c3f77 100644 --- a/cypress/pageobject/Patient/PatientHome.ts +++ b/cypress/pageobject/Patient/PatientHome.ts @@ -30,6 +30,14 @@ class PatientHome { cy.wait("@getPatients").its("response.statusCode").should("eq", 200); } + typePatientCreatedBeforeDate(startDate: string) { + cy.clickAndTypeDate("input[name='created_date_start']", startDate); + } + + typePatientCreatedAfterDate(endDate: string) { + cy.clickAndTypeDate("input[name='created_date_end']", endDate); + } + typePatientModifiedBeforeDate(startDate: string) { cy.clickAndTypeDate("input[name='modified_date_start']", startDate); } @@ -37,5 +45,211 @@ class PatientHome { typePatientModifiedAfterDate(endDate: string) { cy.clickAndTypeDate("input[name='modified_date_end']", endDate); } + + typePatientAdmitedBeforeDate(startDate: string) { + cy.clickAndTypeDate( + "input[name='last_consultation_encounter_date_start']", + startDate, + ); + } + + typePatientAdmitedAfterDate(endDate: string) { + cy.clickAndTypeDate( + "input[name='last_consultation_encounter_date_end']", + endDate, + ); + } + + clickPatientAdvanceFilters() { + cy.get("#advanced-filter").click(); + } + + selectPatientGenderfilter(gender: string) { + cy.clickAndSelectOption("#gender-advancefilter", gender); + } + + selectPatientCategoryfilter(category: string) { + cy.clickAndSelectOption("#category-advancefilter", category); + } + + typePatientMinimumAgeFilter(minage: string) { + cy.get("#age_min").type(minage); + } + + typePatientMaximumAgeFilter(maxage: string) { + cy.get("#age_max").type(maxage); + } + + selectPatientLastAdmittedBed(bed: string) { + cy.clickAndMultiSelectOption( + "#last_consultation_admitted_bed_type_list", + bed, + ); + } + + selectPatientLastConsentType(consent: string) { + cy.clickAndMultiSelectOption("#last_consultation__consent_types", consent); + } + + selectPatientTelemedicineFilter(telemedicine: string) { + cy.clickAndSelectOption("#telemedicine-advancefilter", telemedicine); + } + + selectPatientReviewFilter(review: string) { + cy.clickAndSelectOption("#review-advancefilter", review); + } + + selectPatientMedicoFilter(medico: string) { + cy.clickAndSelectOption("#medico-advancefilter", medico); + } + + verifyGenderBadgeContent(expectedText: string) { + cy.get("[data-testid='Gender']").should("contain", expectedText); + } + + verifyCategoryBadgeContent(expectedText: string) { + cy.get("[data-testid='Category']").should("contain", expectedText); + } + + verifyMinAgeBadgeContent(expectedText: string) { + cy.get("[data-testid='Age min']").should("contain", expectedText); + } + + verifyMaxAgeBadgeContent(expectedText: string) { + cy.get("[data-testid='Age max']").should("contain", expectedText); + } + + verifyLastAdmittedBedBadgeContent(expectedText: string) { + cy.get("[data-testid='Bed Type']").should("contain", expectedText); + } + + verifyLastConsentTypeBadgeContent(expectedText: string) { + cy.get("[data-testid='Has Consent']").should("contain", expectedText); + } + + verifyTelemedicineBadgeContent(expectedText: string) { + cy.get("[data-testid='Telemedicine']").should("contain", expectedText); + } + + verifyReviewMissedBadgeContent(expectedText: string) { + cy.get("[data-testid='Review Missed']").should("contain", expectedText); + } + + verifyMedicoBadgeContent(expectedText: string) { + cy.get("[data-testid='Is Medico-Legal Case']").should( + "contain", + expectedText, + ); + } + + verifyTotalPatientCount(count: string) { + cy.get("#total-patientcount").should("contain", count); + } + + selectAnyIcdDiagnosis(input: string, random: string) { + cy.typeAndMultiSelectOption("#diagnoses", input, random); + } + + selectConfirmedIcdDiagnosis(input: string, confirmed: string) { + cy.typeAndMultiSelectOption("#diagnoses_confirmed", input, confirmed); + } + + selectUnconfirmedIcdDiagnosis(input: string, unconfirmed: string) { + cy.typeAndMultiSelectOption("#diagnoses_unconfirmed", input, unconfirmed); + } + + selectProvisionalIcdDiagnosis(input: string, unconfirmed: string) { + cy.typeAndMultiSelectOption("#diagnoses_provisional", input, unconfirmed); + } + + selectDifferentialIcdDiagnosis(input: string, unconfirmed: string) { + cy.typeAndMultiSelectOption("#diagnoses_differential", input, unconfirmed); + } + + typeFacilityName(facilityName: string) { + cy.typeAndSelectOption("input[name='facility']", facilityName); + } + + selectFacilityType(facilityType: string) { + cy.clickAndSelectOption("#facility-type", facilityType); + } + + typeFacilityLsgBody(lsgbody: string) { + cy.typeAndSelectOption("#facility-lsgbody", lsgbody); + } + + typeFacilityDistrict(district: string) { + cy.typeAndSelectOption("#facility-district", district); + } + + verifyAnyDiagnosisBadgeContent(expectedText: string) { + cy.get("[data-testid='Diagnoses (of any verification status)']").should( + "contain", + expectedText, + ); + } + + verifyConfirmedDiagnosisBadgeContent(expectedText: string) { + cy.get("[data-testid='Confirmed Diagnoses']").should( + "contain", + expectedText, + ); + } + + verifyUnconfirmedDiagnosisBadgeContent(expectedText: string) { + cy.get("[data-testid='Unconfirmed Diagnoses']").should( + "contain", + expectedText, + ); + } + + verifyProvisionalDiagnosisBadgeContent(expectedText: string) { + cy.get("[data-testid='Provisional Diagnoses']").should( + "contain", + expectedText, + ); + } + + verifyDifferentialDiagnosisBadgeContent(expectedText: string) { + cy.get("[data-testid='Differential Diagnoses']").should( + "contain", + expectedText, + ); + } + + verifyFacilityNameBadgeContent(expectedText: string) { + cy.get("[data-testid='Facility']").should("contain", expectedText); + } + + verifyFacilityTypeBadgeContent(expectedText: string) { + cy.get("[data-testid='Facility Type']").should("contain", expectedText); + } + + verifyFacilityLsgBadgeContent(expectedText: string) { + cy.get("[data-testid='LSG Body']").should("contain", expectedText); + } + + verifyFacilityDistrictContent(expectedText: string) { + cy.get("[data-testid='District']").should("contain", expectedText); + } + + verifyPatientCreatedAfterDate(expectedText: string) { + cy.get("[data-testid='Created after']").should("contain", expectedText); + } + verifyPatientCreatedBeforeDate(expectedText: string) { + cy.get("[data-testid='Created before']").should("contain", expectedText); + } + verifyPatientModifiedAfterDate(expectedText: string) { + cy.get("[data-testid='Modified after']").should("contain", expectedText); + } + verifyPatientModifiedBeforeDate(expectedText: string) { + cy.get("[data-testid='Modified before']").should("contain", expectedText); + } + verifyPatientAdmittedBeforeDate(expectedText: string) { + cy.get("[data-testid='Admitted before']").should("contain", expectedText); + } + verifyPatientAdmittedAfterDate(expectedText: string) { + cy.get("[data-testid='Admitted after']").should("contain", expectedText); + } } export default PatientHome; diff --git a/cypress/pageobject/Patient/PatientLogupdate.ts b/cypress/pageobject/Patient/PatientLogupdate.ts index b2822d03353..857fe7dd972 100644 --- a/cypress/pageobject/Patient/PatientLogupdate.ts +++ b/cypress/pageobject/Patient/PatientLogupdate.ts @@ -14,7 +14,7 @@ class PatientLogupdate { } selectBed(bed: string) { - cy.searchAndSelectOption("input[name='bed']", bed); + cy.typeAndSelectOption("input[name='bed']", bed); cy.get("#update-switchbed").click(); cy.wait(2000); } @@ -43,27 +43,27 @@ class PatientLogupdate { } typeSystolic(systolic: string) { - cy.searchAndSelectOption("#systolic", systolic); + cy.typeAndSelectOption("#systolic", systolic); } typeDiastolic(diastolic: string) { - cy.searchAndSelectOption("#diastolic", diastolic); + cy.typeAndSelectOption("#diastolic", diastolic); } typePulse(pulse: string) { - cy.searchAndSelectOption("#pulse", pulse); + cy.typeAndSelectOption("#pulse", pulse); } typeTemperature(temperature: string) { - cy.searchAndSelectOption("#temperature", temperature); + cy.typeAndSelectOption("#temperature", temperature); } typeRespiratory(respiratory: string) { - cy.searchAndSelectOption("#resp", respiratory); + cy.typeAndSelectOption("#resp", respiratory); } typeSpo2(spo: string) { - cy.searchAndSelectOption("#ventilator_spo2", spo); + cy.typeAndSelectOption("#ventilator_spo2", spo); } selectRhythm(rhythm: string) { diff --git a/cypress/pageobject/Patient/PatientPrescription.ts b/cypress/pageobject/Patient/PatientPrescription.ts index 403d361e55c..d801b360aba 100644 --- a/cypress/pageobject/Patient/PatientPrescription.ts +++ b/cypress/pageobject/Patient/PatientPrescription.ts @@ -16,7 +16,7 @@ export class PatientPrescription { } selectMedicine(medicine: string) { - cy.searchAndSelectOption( + cy.typeAndSelectOption( "div#medicine_object input[placeholder='Select'][role='combobox']", medicine, ); diff --git a/cypress/pageobject/Patient/PatientTreatmentPlan.ts b/cypress/pageobject/Patient/PatientTreatmentPlan.ts index 70af5604776..0bbddbf70bc 100644 --- a/cypress/pageobject/Patient/PatientTreatmentPlan.ts +++ b/cypress/pageobject/Patient/PatientTreatmentPlan.ts @@ -4,7 +4,7 @@ class PatientTreatmentPlan { } fillTreatingPhysican(doctor: string) { - cy.searchAndSelectOption("#treating_physician", doctor); + cy.typeAndSelectOption("#treating_physician", doctor); } selectReviewAfter(time: string) { @@ -20,7 +20,7 @@ class PatientTreatmentPlan { } assignTelemedicineDoctor(doctor: string) { - cy.searchAndSelectOption("#assigned_to", doctor); + cy.typeAndSelectOption("#assigned_to", doctor); } clickAddProcedure() { diff --git a/cypress/pageobject/Users/ManageUserPage.ts b/cypress/pageobject/Users/ManageUserPage.ts index a9ac1374085..efa0d90142c 100644 --- a/cypress/pageobject/Users/ManageUserPage.ts +++ b/cypress/pageobject/Users/ManageUserPage.ts @@ -8,11 +8,11 @@ export class ManageUserPage { } selectFacilityFromDropdown(facilityName: string) { - cy.searchAndSelectOption("input[name='facility']", facilityName); + cy.typeAndSelectOption("input[name='facility']", facilityName); } selectSkillFromDropdown(skill: string) { - cy.searchAndSelectOption("input[name='skill']", skill); + cy.typeAndSelectOption("input[name='skill']", skill); } clickLinkFacility() { diff --git a/cypress/pageobject/Users/UserSearch.ts b/cypress/pageobject/Users/UserSearch.ts index 0c214e92706..d72c00c0de7 100644 --- a/cypress/pageobject/Users/UserSearch.ts +++ b/cypress/pageobject/Users/UserSearch.ts @@ -53,11 +53,11 @@ export class UserPage { } selectState(state: string) { - cy.searchAndSelectOption("#state input", state); + cy.typeAndSelectOption("#state input", state); } selectDistrict(district: string) { - cy.searchAndSelectOption("#district input", district); + cy.typeAndSelectOption("#district input", district); } typeInPhoneNumber(phone: string) { @@ -69,7 +69,7 @@ export class UserPage { } selectHomeFacility(facility: string) { - cy.searchAndSelectOption("input[name='home_facility']", facility); + cy.typeAndSelectOption("input[name='home_facility']", facility); } applyFilter() { diff --git a/cypress/support/commands.ts b/cypress/support/commands.ts index 320f19d8b0e..da78361f6e8 100644 --- a/cypress/support/commands.ts +++ b/cypress/support/commands.ts @@ -127,7 +127,7 @@ Cypress.Commands.add("submitButton", (buttonText = "Submit") => { }); Cypress.Commands.add( - "searchAndSelectOption", + "typeAndSelectOption", (element: string, referance: string) => { cy.get(element) .click() diff --git a/cypress/support/index.ts b/cypress/support/index.ts index d660246324f..b2895871872 100644 --- a/cypress/support/index.ts +++ b/cypress/support/index.ts @@ -15,7 +15,7 @@ declare global { getAttached(selector: string): Chainable; clearAllFilters(): Chainable; submitButton(buttonText?: string): Chainable; - searchAndSelectOption( + typeAndSelectOption( element: string, referance: string, ): Chainable; diff --git a/src/Components/Patient/DiagnosesFilter.tsx b/src/Components/Patient/DiagnosesFilter.tsx index 1217e821389..ba58a549dac 100644 --- a/src/Components/Patient/DiagnosesFilter.tsx +++ b/src/Components/Patient/DiagnosesFilter.tsx @@ -68,6 +68,7 @@ export default function DiagnosesFilter(props: Props) { return ( {
-
+
Gender o.text} @@ -304,6 +305,7 @@ export default function PatientFilter(props: any) {
Category o.text} @@ -407,6 +409,7 @@ export default function PatientFilter(props: any) {
Telemedicine o.text} @@ -423,6 +426,7 @@ export default function PatientFilter(props: any) {
Respiratory Support o.text} @@ -455,6 +459,7 @@ export default function PatientFilter(props: any) { <> Review Missed (o === "true" ? "Yes" : "No")} @@ -469,6 +474,7 @@ export default function PatientFilter(props: any) {
Is Medico-Legal Case @@ -484,6 +490,7 @@ export default function PatientFilter(props: any) { />
{!props.dischargePage && ( -
+
Facility Facility type o.text} @@ -640,6 +648,7 @@ export default function PatientFilter(props: any) { LSG Body
-
+
District Date: Sun, 13 Oct 2024 05:38:15 +0530 Subject: [PATCH 04/25] Revamped resource and shifting boards to the KanbanBoard component and removed react-dnd (#8713) --- package-lock.json | 167 ++++---- package.json | 4 +- src/Components/Facility/models.tsx | 51 ++- src/Components/Kanban/Board.tsx | 190 +++++++++ src/Components/Patient/models.tsx | 1 + src/Components/Resource/ResourceBoard.tsx | 301 ------------- src/Components/Resource/ResourceBoardView.tsx | 159 +++++-- src/Components/Shifting/BoardView.tsx | 317 +++++++++----- src/Components/Shifting/ShiftingBoard.tsx | 395 ------------------ src/Locale/en.json | 4 +- src/Routers/routes/ResourceRoutes.tsx | 8 +- src/Routers/routes/ShiftingRoutes.tsx | 8 +- 12 files changed, 667 insertions(+), 938 deletions(-) create mode 100644 src/Components/Kanban/Board.tsx delete mode 100644 src/Components/Resource/ResourceBoard.tsx delete mode 100644 src/Components/Shifting/ShiftingBoard.tsx diff --git a/package-lock.json b/package-lock.json index 6d2da7a4750..fd8cf7bde13 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,7 @@ "@googlemaps/react-wrapper": "^1.1.35", "@googlemaps/typescript-guards": "^2.0.3", "@headlessui/react": "^2.1.2", + "@hello-pangea/dnd": "^17.0.0", "@pnotify/core": "^5.2.0", "@pnotify/mobile": "^5.2.0", "@radix-ui/react-icons": "^1.3.0", @@ -42,9 +43,6 @@ "raviger": "^4.1.2", "react": "18.3.1", "react-copy-to-clipboard": "^5.1.0", - "react-dnd": "^16.0.1", - "react-dnd-html5-backend": "^16.0.1", - "react-dnd-scrolling": "^1.3.8", "react-dom": "18.3.1", "react-google-recaptcha": "^3.1.0", "react-i18next": "^15.0.2", @@ -2624,6 +2622,51 @@ "react-dom": "^18" } }, + "node_modules/@hello-pangea/dnd": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/@hello-pangea/dnd/-/dnd-17.0.0.tgz", + "integrity": "sha512-LDDPOix/5N0j5QZxubiW9T0M0+1PR0rTDWeZF5pu1Tz91UQnuVK4qQ/EjY83Qm2QeX0eM8qDXANfDh3VVqtR4Q==", + "dependencies": { + "@babel/runtime": "^7.25.6", + "css-box-model": "^1.2.1", + "memoize-one": "^6.0.0", + "raf-schd": "^4.0.3", + "react-redux": "^9.1.2", + "redux": "^5.0.1", + "use-memo-one": "^1.1.3" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/@hello-pangea/dnd/node_modules/react-redux": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.1.2.tgz", + "integrity": "sha512-0OA4dhM1W48l3uzmv6B7TXPCGmokUU4p1M44DGN2/D9a1FjVPukVjER1PcPX97jIg6aUeLq1XJo1IpfbgULn0w==", + "dependencies": { + "@types/use-sync-external-store": "^0.0.3", + "use-sync-external-store": "^1.0.0" + }, + "peerDependencies": { + "@types/react": "^18.2.25", + "react": "^18.0", + "redux": "^5.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "redux": { + "optional": true + } + } + }, + "node_modules/@hello-pangea/dnd/node_modules/redux": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", + "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==" + }, "node_modules/@humanwhocodes/config-array": { "version": "0.13.0", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", @@ -3579,21 +3622,6 @@ "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0" } }, - "node_modules/@react-dnd/asap": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@react-dnd/asap/-/asap-5.0.2.tgz", - "integrity": "sha512-WLyfoHvxhs0V9U+GTsGilGgf2QsPl6ZZ44fnv0/b8T3nQyvzxidxsg/ZltbWssbsRDlYW8UKSQMTGotuTotZ6A==" - }, - "node_modules/@react-dnd/invariant": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@react-dnd/invariant/-/invariant-4.0.2.tgz", - "integrity": "sha512-xKCTqAK/FFauOM9Ta2pswIyT3D8AQlfrYdOi/toTPEhqCuAs1v5tcJ3Y08Izh1cJ5Jchwy9SeAXmMg6zrKs2iw==" - }, - "node_modules/@react-dnd/shallowequal": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@react-dnd/shallowequal/-/shallowequal-4.0.2.tgz", - "integrity": "sha512-/RVXdLvJxLg4QKvMoM5WlwNR9ViO9z8B/qPcc+C0Sa/teJY7QG7kJ441DwzOjMYEY7GmU4dj5EcGHIkKZiQZCA==" - }, "node_modules/@react-stately/utils": { "version": "3.10.4", "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.4.tgz", @@ -6501,6 +6529,14 @@ "node": ">=8" } }, + "node_modules/css-box-model": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/css-box-model/-/css-box-model-1.2.1.tgz", + "integrity": "sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==", + "dependencies": { + "tiny-invariant": "^1.0.6" + } + }, "node_modules/cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", @@ -7061,16 +7097,6 @@ "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" }, - "node_modules/dnd-core": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/dnd-core/-/dnd-core-16.0.1.tgz", - "integrity": "sha512-HK294sl7tbw6F6IeuK16YSBUoorvHpY8RHO+9yFfaJyCDVb6n7PRcezrOEOa2SBCqiYpemh5Jx20ZcjKdFAVng==", - "dependencies": { - "@react-dnd/asap": "^5.0.1", - "@react-dnd/invariant": "^4.0.1", - "redux": "^4.2.0" - } - }, "node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -10906,11 +10932,6 @@ "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", "dev": true }, - "node_modules/lodash.throttle": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", - "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==" - }, "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", @@ -12022,6 +12043,11 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" + }, "node_modules/merge-refs": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/merge-refs/-/merge-refs-1.3.0.tgz", @@ -13495,7 +13521,8 @@ "node_modules/performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "dev": true }, "node_modules/picocolors": { "version": "1.1.0", @@ -14088,13 +14115,10 @@ "integrity": "sha512-twwRO/ilhlG/FIgYeKGFqyHhoEhqgnKVkcmqMKi2r524gz3ZbDTcyFt38E9xjJI2vT+KbRNHVbnJ/e0I25Azwg==", "dev": true }, - "node_modules/raf": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", - "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", - "dependencies": { - "performance-now": "^2.1.0" - } + "node_modules/raf-schd": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/raf-schd/-/raf-schd-4.0.3.tgz", + "integrity": "sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ==" }, "node_modules/ramda": { "version": "0.29.0", @@ -14160,59 +14184,6 @@ "react": "^15.3.0 || 16 || 17 || 18" } }, - "node_modules/react-dnd": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/react-dnd/-/react-dnd-16.0.1.tgz", - "integrity": "sha512-QeoM/i73HHu2XF9aKksIUuamHPDvRglEwdHL4jsp784BgUuWcg6mzfxT0QDdQz8Wj0qyRKx2eMg8iZtWvU4E2Q==", - "dependencies": { - "@react-dnd/invariant": "^4.0.1", - "@react-dnd/shallowequal": "^4.0.1", - "dnd-core": "^16.0.1", - "fast-deep-equal": "^3.1.3", - "hoist-non-react-statics": "^3.3.2" - }, - "peerDependencies": { - "@types/hoist-non-react-statics": ">= 3.3.1", - "@types/node": ">= 12", - "@types/react": ">= 16", - "react": ">= 16.14" - }, - "peerDependenciesMeta": { - "@types/hoist-non-react-statics": { - "optional": true - }, - "@types/node": { - "optional": true - }, - "@types/react": { - "optional": true - } - } - }, - "node_modules/react-dnd-html5-backend": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/react-dnd-html5-backend/-/react-dnd-html5-backend-16.0.1.tgz", - "integrity": "sha512-Wu3dw5aDJmOGw8WjH1I1/yTH+vlXEL4vmjk5p+MHxP8HuHJS1lAGeIdG/hze1AvNeXWo/JgULV87LyQOr+r5jw==", - "dependencies": { - "dnd-core": "^16.0.1" - } - }, - "node_modules/react-dnd-scrolling": { - "version": "1.3.10", - "resolved": "https://registry.npmjs.org/react-dnd-scrolling/-/react-dnd-scrolling-1.3.10.tgz", - "integrity": "sha512-Vbe7tp6ZC2kgBx/8P1LXa3+3ao61Ve8HcoVzicnAuRiaV/r3lmccE9JVsa0TeZ+pzTBodb+MzQW0tMOMSRmtwg==", - "dependencies": { - "hoist-non-react-statics": "3.x", - "lodash.throttle": "^4.1.1", - "prop-types": "15.x", - "raf": "^3.4.1" - }, - "peerDependencies": { - "react": "16.x || 17.x || 18.x", - "react-dnd": "10.x || 11.x || 14.x || 15.x || 16.x", - "react-dom": "16.x || 17.x || 18.x" - } - }, "node_modules/react-dom": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", @@ -17820,6 +17791,14 @@ "react-dom": ">=16.8" } }, + "node_modules/use-memo-one": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.3.tgz", + "integrity": "sha512-g66/K7ZQGYrI6dy8GLpVcMsBp4s17xNkYJVSMvTEevGy3nDxHOfE6z8BVE22+5G5x7t3+bhzrlTDB7ObrEE0cQ==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/use-sync-external-store": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz", diff --git a/package.json b/package.json index eb1c851bc0d..c42834216d3 100644 --- a/package.json +++ b/package.json @@ -48,6 +48,7 @@ "@googlemaps/react-wrapper": "^1.1.35", "@googlemaps/typescript-guards": "^2.0.3", "@headlessui/react": "^2.1.2", + "@hello-pangea/dnd": "^17.0.0", "@pnotify/core": "^5.2.0", "@pnotify/mobile": "^5.2.0", "@radix-ui/react-icons": "^1.3.0", @@ -77,9 +78,6 @@ "raviger": "^4.1.2", "react": "18.3.1", "react-copy-to-clipboard": "^5.1.0", - "react-dnd": "^16.0.1", - "react-dnd-html5-backend": "^16.0.1", - "react-dnd-scrolling": "^1.3.8", "react-dom": "18.3.1", "react-google-recaptcha": "^3.1.0", "react-i18next": "^15.0.2", diff --git a/src/Components/Facility/models.tsx b/src/Components/Facility/models.tsx index 56c70f2ac94..8103ebb6729 100644 --- a/src/Components/Facility/models.tsx +++ b/src/Components/Facility/models.tsx @@ -5,6 +5,7 @@ import { ConsultationSuggestionValue, DISCHARGE_REASONS, PATIENT_NOTES_THREADS, + SHIFTING_CHOICES_PEACETIME, UserRole, } from "../../Common/constants"; import { FeatureFlag } from "../../Utils/featureFlags"; @@ -15,12 +16,13 @@ import { DailyRoundsModel, FacilityNameModel, FileUploadModel, + PatientModel, } from "../Patient/models"; import { EncounterSymptom } from "../Symptoms/types"; +import { UserBareMinimum, UserModel } from "../Users/models"; import { InvestigationType } from "../Common/prescription-builder/InvestigationBuilder"; import { ProcedureType } from "../Common/prescription-builder/ProcedureBuilder"; import { RouteToFacility } from "../Common/RouteToFacilitySelect"; -import { UserBareMinimum } from "../Users/models"; export interface LocalBodyModel { id: number; @@ -676,3 +678,50 @@ export type PatientTransferResponse = { date_of_birth: string; facility_object: BaseFacilityModel; }; + +export interface ShiftingModel { + assigned_facility: string; + assigned_facility_external: string | null; + assigned_facility_object: FacilityModel; + created_date: string; + emergency: boolean; + external_id: string; + id: string; + modified_date: string; + origin_facility_object: FacilityModel; + patient: string; + patient_object: PatientModel; + shifting_approving_facility_object: FacilityModel | null; + status: (typeof SHIFTING_CHOICES_PEACETIME)[number]["text"]; + assigned_to_object?: UserModel; +} + +export interface ResourceModel { + approving_facility: string | null; + approving_facility_object: FacilityModel | null; + assigned_facility: string | null; + assigned_facility_object: FacilityModel | null; + assigned_quantity: number; + assigned_to: string | null; + assigned_to_object: UserModel | null; + category: string; + created_by: number; + created_by_object: UserModel; + created_date: string; + emergency: boolean; + id: string; + is_assigned_to_user: boolean; + last_edited_by: number; + last_edited_by_object: UserModel; + modified_date: string; + origin_facility: string; + origin_facility_object: FacilityModel; + priority: number | null; + reason: string; + refering_facility_contact_name: string; + refering_facility_contact_number: string; + requested_quantity: number; + status: string; + sub_category: string; + title: string; +} diff --git a/src/Components/Kanban/Board.tsx b/src/Components/Kanban/Board.tsx new file mode 100644 index 00000000000..d2ab5da998f --- /dev/null +++ b/src/Components/Kanban/Board.tsx @@ -0,0 +1,190 @@ +import { + DragDropContext, + Draggable, + Droppable, + OnDragEndResponder, +} from "@hello-pangea/dnd"; +import { ReactNode, RefObject, useEffect, useRef, useState } from "react"; +import { QueryRoute } from "../../Utils/request/types"; +import { QueryOptions } from "../../Utils/request/useQuery"; +import CareIcon from "../../CAREUI/icons/CareIcon"; +import request from "../../Utils/request/request"; +import { useTranslation } from "react-i18next"; + +interface KanbanBoardProps { + title?: ReactNode; + onDragEnd: OnDragEndResponder; + sections: { + id: string; + title: ReactNode; + fetchOptions: ( + id: string, + ...args: unknown[] + ) => { + route: QueryRoute; + options?: QueryOptions; + }; + }[]; + itemRender: (item: T) => ReactNode; +} + +export default function KanbanBoard( + props: KanbanBoardProps, +) { + const board = useRef(null); + + return ( +
+
+
{props.title}
+
+ {[0, 1].map((button, i) => ( + + ))} +
+
+ +
+
+ {props.sections.map((section, i) => ( + + key={i} + section={section} + itemRender={props.itemRender} + boardRef={board} + /> + ))} +
+
+
+
+ ); +} + +export function KanbanSection( + props: Omit, "sections" | "onDragEnd"> & { + section: KanbanBoardProps["sections"][number]; + boardRef: RefObject; + }, +) { + const { section } = props; + const [offset, setOffset] = useState(0); + const [pages, setPages] = useState([]); + const [fetchingNextPage, setFetchingNextPage] = useState(false); + const [hasMore, setHasMore] = useState(true); + const [totalCount, setTotalCount] = useState(); + + const options = section.fetchOptions(section.id); + const sectionRef = useRef(null); + const defaultLimit = 14; + const { t } = useTranslation(); + + // should be replaced with useInfiniteQuery when we move over to react query + + const fetchNextPage = async (refresh: boolean = false) => { + if (!refresh && (fetchingNextPage || !hasMore)) return; + if (refresh) setPages([]); + const offsetToUse = refresh ? 0 : offset; + setFetchingNextPage(true); + const res = await request(options.route, { + ...options.options, + query: { ...options.options?.query, offsetToUse, limit: defaultLimit }, + }); + const newPages = refresh ? [] : [...pages]; + const page = Math.floor(offsetToUse / defaultLimit); + if (res.error) return; + newPages[page] = (res.data as any).results; + setPages(newPages); + setHasMore(!!(res.data as any)?.next); + setTotalCount((res.data as any)?.count); + setOffset(offsetToUse + defaultLimit); + setFetchingNextPage(false); + }; + + const items = pages.flat(); + + useEffect(() => { + const onBoardReachEnd = async () => { + const sectionElementHeight = + sectionRef.current?.getBoundingClientRect().height; + const scrolled = props.boardRef.current?.scrollTop; + // if user has scrolled 3/4th of the current items + if ( + scrolled && + sectionElementHeight && + scrolled > sectionElementHeight * (3 / 4) + ) { + fetchNextPage(); + } + }; + + props.boardRef.current?.addEventListener("scroll", onBoardReachEnd); + return () => + props.boardRef.current?.removeEventListener("scroll", onBoardReachEnd); + }, [props.boardRef, fetchingNextPage, hasMore]); + + useEffect(() => { + fetchNextPage(true); + }, [props.section]); + + return ( + + {(provided) => ( +
+
+
+
{section.title}
+
+ + {typeof totalCount === "undefined" ? "..." : totalCount} + +
+
+
+
+ {!fetchingNextPage && totalCount === 0 && ( +
+ {t("no_results_found")} +
+ )} + {items + .filter((item) => item) + .map((item, i) => ( + + {(provided) => ( +
+ {props.itemRender(item)} +
+ )} +
+ ))} + {fetchingNextPage && ( +
+ )} +
+
+ )} + + ); +} diff --git a/src/Components/Patient/models.tsx b/src/Components/Patient/models.tsx index cf35680de11..d9e275fdc4a 100644 --- a/src/Components/Patient/models.tsx +++ b/src/Components/Patient/models.tsx @@ -135,6 +135,7 @@ export interface PatientModel { assigned_to?: { first_name?: string; username?: string; last_name?: string }; assigned_to_object?: AssignedToObjectModel; meta_info?: PatientMeta; + age?: string; } export interface SampleTestModel { diff --git a/src/Components/Resource/ResourceBoard.tsx b/src/Components/Resource/ResourceBoard.tsx deleted file mode 100644 index aa0b031ba0e..00000000000 --- a/src/Components/Resource/ResourceBoard.tsx +++ /dev/null @@ -1,301 +0,0 @@ -import { useState, useEffect } from "react"; -import { navigate } from "raviger"; -import { classNames, formatName } from "../../Utils/utils"; -import { useDrag, useDrop } from "react-dnd"; -import { formatDateTime } from "../../Utils/utils"; -import { ExportButton } from "../Common/Export"; -import dayjs from "../../Utils/dayjs"; -import useQuery from "../../Utils/request/useQuery"; -import routes from "../../Redux/api"; -import { PaginatedResponse } from "../../Utils/request/types"; -import { IResource } from "./models"; -import request from "../../Utils/request/request"; -import CareIcon from "../../CAREUI/icons/CareIcon"; - -interface boardProps { - board: string; - filterProp: any; - formatFilter: any; -} - -const renderBoardTitle = (board: string) => board; - -const reduceLoading = (action: string, current: any) => { - switch (action) { - case "MORE": - return { ...current, more: true }; - case "BOARD": - return { ...current, board: true }; - case "COMPLETE": - return { board: false, more: false }; - } -}; - -const ResourceCard = ({ resource }: any) => { - const [{ isDragging }, drag] = useDrag(() => ({ - type: "resource-card", - item: resource, - collect: (monitor) => ({ isDragging: !!monitor.isDragging() }), - })); - - return ( -
-
-
-
-
-
- {resource.title} -
-
- {resource.emergency && ( - - Emergency - - )} -
-
-
-
-
- -
- {(resource.origin_facility_object || {}).name} -
- -
-
-
- -
- {(resource.approving_facility_object || {}).name} -
- -
- {resource.assigned_facility_object && ( -
-
- - -
- {(resource.assigned_facility_object || {}).name || - "Yet to be decided"} -
- -
- )} -
-
- -
- {formatDateTime(resource.modified_date) || "--"} -
- -
- {resource.assigned_to_object && ( -
-
- -
- {formatName(resource.assigned_to_object)} -{" "} - {resource.assigned_to_object.user_type} -
- -
- )} -
-
-
- -
-
-
-
- ); -}; - -export default function ResourceBoard({ - board, - filterProp, - formatFilter, -}: boardProps) { - const [isLoading, setIsLoading] = useState({ board: "BOARD", more: false }); - const [{ isOver }, drop] = useDrop(() => ({ - accept: "resource-card", - drop: (item: any) => { - if (item.status !== board) { - navigate(`/resource/${item.id}/update?status=${board}`); - } - }, - collect: (monitor) => ({ isOver: !!monitor.isOver() }), - })); - const [offset, setOffSet] = useState(0); - const [data, setData] = useState>(); - - useEffect(() => { - setIsLoading((loading) => reduceLoading("BOARD", loading)); - }, [ - board, - filterProp.title, - filterProp.facility, - filterProp.origin_facility, - filterProp.approving_facility, - filterProp.assigned_facility, - filterProp.emergency, - filterProp.created_date_before, - filterProp.created_date_after, - filterProp.modified_date_before, - filterProp.modified_date_after, - filterProp.ordering, - ]); - - useQuery(routes.listResourceRequests, { - query: formatFilter({ - ...filterProp, - status: board, - }), - onResponse: ({ res, data: listResourceData }) => { - if (res?.ok && listResourceData) { - setData(listResourceData); - } - setIsLoading((loading) => reduceLoading("COMPLETE", loading)); - }, - }); - - const handlePagination = async () => { - setIsLoading((loading) => reduceLoading("MORE", loading)); - setOffSet(offset + 14); - const { res, data: newPageData } = await request( - routes.listResourceRequests, - { - query: formatFilter({ - ...filterProp, - status: board, - offset: offset, - }), - }, - ); - if (res?.ok && newPageData) { - setData((prev) => - prev - ? { ...prev, results: [...prev.results, ...newPageData.results] } - : newPageData, - ); - } - setIsLoading((loading) => reduceLoading("COMPLETE", loading)); - }; - - const boardFilter = (filter: string) => { - return data?.results - .filter(({ status }) => status === filter) - .map((resource: any) => ( - - )); - }; - - return ( -
-
-
-

- {renderBoardTitle(board)}{" "} - { - const { data } = await request( - routes.downloadResourceRequests, - { - query: { - ...formatFilter({ ...filterProp, status: board }), - csv: true, - }, - }, - ); - return data ?? null; - }} - filenamePrefix={`resource_requests_${board}`} - /> -

- - {data?.count || "0"} - -
-
-
- {isLoading.board ? ( -
-
-
-
-
-
-
-
-
-
-
-
-
- ) : data && data?.results.length > 0 ? ( - boardFilter(board) - ) : ( -

No requests to show.

- )} - {!isLoading.board && - data && - data?.results.length < (data?.count || 0) && - (isLoading.more ? ( -
- Loading -
- ) : ( - - ))} -
-
- ); -} diff --git a/src/Components/Resource/ResourceBoardView.tsx b/src/Components/Resource/ResourceBoardView.tsx index bd28cc5f5d2..ed6d63bbd77 100644 --- a/src/Components/Resource/ResourceBoardView.tsx +++ b/src/Components/Resource/ResourceBoardView.tsx @@ -1,9 +1,7 @@ import { useState } from "react"; -import { navigate } from "raviger"; +import { Link, navigate } from "raviger"; import ListFilter from "./ListFilter"; -import ResourceBoard from "./ResourceBoard"; import { RESOURCE_CHOICES } from "../../Common/constants"; -import withScrolling from "react-dnd-scrolling"; import BadgesList from "./BadgesList"; import { formatFilter } from "./Commons"; import useFilters from "../../Common/hooks/useFilters"; @@ -16,10 +14,12 @@ import SearchInput from "../Form/SearchInput"; import Tabs from "../Common/components/Tabs"; import request from "../../Utils/request/request"; import routes from "../../Redux/api"; +import KanbanBoard from "../Kanban/Board"; +import { ResourceModel } from "../Facility/models"; +import { classNames, formatDateTime, formatName } from "../../Utils/utils"; +import dayjs from "dayjs"; -import Loading from "@/Components/Common/Loading"; import PageTitle from "@/Components/Common/PageTitle"; -const ScrollingComponent = withScrolling("div"); const resourceStatusOptions = RESOURCE_CHOICES.map((obj) => obj.text); const COMPLETED = ["COMPLETED", "REJECTED"]; @@ -32,7 +32,6 @@ export default function BoardView() { }); const [boardFilter, setBoardFilter] = useState(ACTIVE); // eslint-disable-next-line - const [isLoading, setIsLoading] = useState(false); const appliedFilters = formatFilter(qParams); const { t } = useTranslation(); @@ -42,11 +41,11 @@ export default function BoardView() { }; return ( -
+
- - -
- {isLoading ? ( - - ) : ( - boardFilter.map((board) => ( - + title={} + sections={boardFilter.map((board) => ({ + id: board, + title: ( +

+ {board}{" "} + { + const { data } = await request( + routes.downloadResourceRequests, + { + query: { + ...formatFilter({ ...qParams, status: board }), + csv: true, + }, + }, + ); + return data ?? null; + }} + filenamePrefix={`resource_requests_${board}`} /> - )) - )} -

-
+ + ), + fetchOptions: (id) => ({ + route: routes.listResourceRequests, + options: { + query: formatFilter({ + ...qParams, + status: id, + }), + }, + }), + }))} + onDragEnd={(result) => { + if (result.source.droppableId !== result.destination?.droppableId) + navigate( + `/resource/${result.draggableId}/update?status=${result.destination?.droppableId}`, + ); + }} + itemRender={(resource) => ( +
+
+
+
+
+ {resource.title} +
+
+
+ {resource.emergency && ( + + {t("emergency")} + + )} +
+
+
+ {( + [ + { + title: "origin_facility", + icon: "l-plane-departure", + data: resource.origin_facility_object.name, + }, + { + title: "resource_approving_facility", + icon: "l-user-check", + data: resource.approving_facility_object?.name, + }, + { + title: "assigned_facility", + icon: "l-plane-arrival", + data: + resource.assigned_facility_object?.name || + t("yet_to_be_decided"), + }, + { + title: "last_modified", + icon: "l-stopwatch", + data: formatDateTime(resource.modified_date), + className: dayjs() + .subtract(2, "hours") + .isBefore(resource.modified_date) + ? "text-secondary-900" + : "rounded bg-red-500 border border-red-600 text-white w-full font-bold", + }, + { + title: "assigned_to", + icon: "l-user", + data: resource.assigned_to_object + ? formatName(resource.assigned_to_object) + + " - " + + resource.assigned_to_object.user_type + : undefined, + }, + ] as const + ) + .filter((d) => d.data) + .map((datapoint, i) => ( +
+
+ +
+
+ {datapoint.data} +
+
+ ))} +
+
+
+ + {t("all_details")} + +
+
+ )} + />
); diff --git a/src/Components/Shifting/BoardView.tsx b/src/Components/Shifting/BoardView.tsx index dbd911483dc..f83e0a4974e 100644 --- a/src/Components/Shifting/BoardView.tsx +++ b/src/Components/Shifting/BoardView.tsx @@ -7,25 +7,26 @@ import BadgesList from "./BadgesList"; import { ExportButton } from "../Common/Export"; import ListFilter from "./ListFilter"; import SearchInput from "../Form/SearchInput"; -import ShiftingBoard from "./ShiftingBoard"; import { formatFilter } from "./Commons"; -import { navigate } from "raviger"; +import { Link, navigate } from "raviger"; import useFilters from "../../Common/hooks/useFilters"; -import { useLayoutEffect, useRef, useState } from "react"; +import { useState } from "react"; import { useTranslation } from "react-i18next"; -import withScrolling from "react-dnd-scrolling"; import ButtonV2 from "../Common/components/ButtonV2"; import { AdvancedFilterButton } from "../../CAREUI/interactive/FiltersSlideover"; import CareIcon from "../../CAREUI/icons/CareIcon"; import Tabs from "../Common/components/Tabs"; import careConfig from "@careConfig"; +import KanbanBoard from "../Kanban/Board"; +import { classNames, formatDateTime, formatName } from "../../Utils/utils"; +import dayjs from "dayjs"; +import ConfirmDialog from "../Common/ConfirmDialog"; +import { ShiftingModel } from "../Facility/models"; +import useAuthUser from "../../Common/hooks/useAuthUser"; import request from "../../Utils/request/request"; import routes from "../../Redux/api"; - -import Loading from "@/Components/Common/Loading"; import PageTitle from "@/Components/Common/PageTitle"; -const ScrollingComponent = withScrolling("div"); export default function BoardView() { const { qParams, updateQuery, FilterBadges, advancedFilter } = useFilters({ @@ -33,6 +34,26 @@ export default function BoardView() { cacheBlacklist: ["patient_name"], }); + const [modalFor, setModalFor] = useState<{ + externalId?: string; + loading: boolean; + }>({ + externalId: undefined, + loading: false, + }); + + const authUser = useAuthUser(); + + const handleTransferComplete = async (shift: any) => { + setModalFor({ ...modalFor, loading: true }); + await request(routes.completeTransfer, { + pathParams: { externalId: shift.external_id }, + }); + navigate( + `/facility/${shift.assigned_facility}/patient/${shift.patient}/consultation`, + ); + }; + const shiftStatusOptions = careConfig.wartimeShifting ? SHIFTING_CHOICES_WARTIME : SHIFTING_CHOICES_PEACETIME; @@ -55,79 +76,10 @@ export default function BoardView() { ); const [boardFilter, setBoardFilter] = useState(activeBoards); - const [isLoading] = useState(false); const { t } = useTranslation(); - const containerRef = useRef(null); - const [containerHeight, setContainerHeight] = useState(0); - const [isLeftScrollable, setIsLeftScrollable] = useState(false); - const [isRightScrollable, setIsRightScrollable] = useState(false); - - useLayoutEffect(() => { - const container = containerRef.current; - - if (!container) return; - - const handleScroll = () => { - setIsLeftScrollable(container.scrollLeft > 0); - setIsRightScrollable( - container.scrollLeft + container.clientWidth < - container.scrollWidth - 10, - ); - }; - - container.addEventListener("scroll", handleScroll); - - handleScroll(); - - return () => { - container.removeEventListener("scroll", handleScroll); - }; - }, []); - - const handleOnClick = (direction: "right" | "left") => { - const container = containerRef.current; - if (direction === "left" ? !isLeftScrollable : !isRightScrollable) return; - - if (container) { - const scrollAmount = 300; - const currentScrollLeft = container.scrollLeft; - - if (direction === "left") { - container.scrollTo({ - left: currentScrollLeft - scrollAmount, - behavior: "smooth", - }); - } else if (direction === "right") { - container.scrollTo({ - left: currentScrollLeft + scrollAmount, - behavior: "smooth", - }); - } - } - }; - - const renderArrowIcons = (direction: "right" | "left") => { - const isIconEnable = - direction === "left" ? isLeftScrollable : isRightScrollable; - return ( - isIconEnable && ( -
- handleOnClick(direction)} - /> -
- ) - ); - }; return ( -
+
- - -
- {isLoading ? ( - - ) : ( - <> - {renderArrowIcons("left")} -
- {boardFilter.map((board) => ( - - ))} + + title={} + sections={boardFilter.map((board) => ({ + id: board.text, + title: ( +

+ {board.label || board.text}{" "} + { + const { data } = await request(routes.downloadShiftRequests, { + query: { ...formatFilter(qParams), csv: true }, + }); + return data ?? null; + }} + filenamePrefix={`shift_requests_${board.label || board.text}`} + /> +

+ ), + fetchOptions: (id) => ({ + route: routes.listShiftRequests, + options: { + query: formatFilter({ + ...qParams, + status: id, + }), + }, + }), + }))} + onDragEnd={(result) => { + if (result.source.droppableId !== result.destination?.droppableId) + navigate( + `/shifting/${result.draggableId}/update?status=${result.destination?.droppableId}`, + ); + }} + itemRender={(shift) => ( +
+
+
+
+
+ {shift.patient_object.name} +
+
+ {shift.patient_object.age} old +
+
+
+ {shift.emergency && ( + + {t("emergency")} + + )} +
- {renderArrowIcons("right")} - - )} -
- +
+ {( + [ + { + title: "phone_number", + icon: "l-mobile-android", + data: shift.patient_object.phone_number, + }, + { + title: "origin_facility", + icon: "l-plane-departure", + data: shift.origin_facility_object.name, + }, + { + title: "shifting_approving_facility", + icon: "l-user-check", + data: careConfig.wartimeShifting + ? shift.shifting_approving_facility_object?.name + : undefined, + }, + { + title: "assigned_facility", + icon: "l-plane-arrival", + data: + shift.assigned_facility_external || + shift.assigned_facility_object?.name || + t("yet_to_be_decided"), + }, + { + title: "last_modified", + icon: "l-stopwatch", + data: formatDateTime(shift.modified_date), + className: dayjs() + .subtract(2, "hours") + .isBefore(shift.modified_date) + ? "text-secondary-900" + : "rounded bg-red-500 border border-red-600 text-white w-full font-bold", + }, + { + title: "patient_address", + icon: "l-home", + data: shift.patient_object.address, + }, + { + title: "assigned_to", + icon: "l-user", + data: shift.assigned_to_object + ? formatName(shift.assigned_to_object) + + " - " + + shift.assigned_to_object.user_type + : undefined, + }, + { + title: "patient_state", + icon: "l-map-marker", + data: shift.patient_object.state_object?.name, + }, + ] as const + ) + .filter((d) => d.data) + .map((datapoint, i) => ( +
+
+ +
+
+ {datapoint.data} +
+
+ ))} +
+
+
+ + {t("all_details")} + + + {shift.status === "COMPLETED" && shift.assigned_facility && ( + <> + + + + setModalFor({ externalId: undefined, loading: false }) + } + action={t("confirm")} + onConfirm={() => handleTransferComplete(shift)} + > +

+ {t("redirected_to_create_consultation")} +

+
+ + )} +
+
+ )} + />
); diff --git a/src/Components/Shifting/ShiftingBoard.tsx b/src/Components/Shifting/ShiftingBoard.tsx deleted file mode 100644 index 6f2eb3b77a3..00000000000 --- a/src/Components/Shifting/ShiftingBoard.tsx +++ /dev/null @@ -1,395 +0,0 @@ -import { - Dispatch, - SetStateAction, - useEffect, - useLayoutEffect, - useRef, - useState, -} from "react"; -import { classNames, formatDateTime, formatName } from "../../Utils/utils"; -import { useDrag, useDrop } from "react-dnd"; -import ButtonV2 from "../Common/components/ButtonV2"; -import ConfirmDialog from "../Common/ConfirmDialog"; -import { navigate } from "raviger"; -import { useTranslation } from "react-i18next"; -import { ExportButton } from "../Common/Export"; -import dayjs from "../../Utils/dayjs"; -import useAuthUser from "../../Common/hooks/useAuthUser"; -import request from "../../Utils/request/request"; -import routes from "../../Redux/api"; -import useQuery from "../../Utils/request/useQuery"; -import { PaginatedResponse } from "../../Utils/request/types"; -import { IShift } from "./models"; -import CareIcon from "../../CAREUI/icons/CareIcon"; -import careConfig from "@careConfig"; - -interface boardProps { - board: string; - title?: string; - filterProp: any; - formatFilter: any; - setContainerHeight: Dispatch>; - containerHeight: number; -} - -const ShiftCard = ({ shift, filter }: any) => { - const [modalFor, setModalFor] = useState({ - externalId: undefined, - loading: false, - }); - const [{ isDragging }, drag] = useDrag(() => ({ - type: "shift-card", - item: shift, - collect: (monitor) => ({ isDragging: !!monitor.isDragging() }), - })); - const authUser = useAuthUser(); - const { t } = useTranslation(); - - const handleTransferComplete = async (shift: any) => { - setModalFor({ ...modalFor, loading: true }); - await request(routes.completeTransfer, { - pathParams: { externalId: shift.external_id }, - }); - navigate( - `/facility/${shift.assigned_facility}/patient/${shift.patient}/consultation`, - ); - }; - return ( -
-
-
-
-
-
- {shift.patient_object.name} - {shift.patient_object.age} -
-
- {shift.emergency && ( - - {t("emergency")} - - )} -
-
-
-
-
- -
- {shift.patient_object.phone_number || ""} -
- -
-
-
- -
- {(shift.origin_facility_object || {}).name} -
- -
- {careConfig.wartimeShifting && ( -
-
- -
- {(shift.shifting_approving_facility_object || {}).name} -
- -
- )} -
-
- - -
- {shift.assigned_facility_external || - shift.assigned_facility_object?.name || - t("yet_to_be_decided")} -
- -
- -
-
- -
- {formatDateTime(shift.modified_date) || "--"} -
- -
- -
-
- -
- {shift.patient_object.address || "--"} -
- -
- - {shift.assigned_to_object && ( -
-
- -
- {formatName(shift.assigned_to_object)} - {" - "} - {shift.assigned_to_object.user_type} -
- -
- )} - -
-
- -
- {shift.patient_object.state_object.name || "--"} -
- -
-
-
- -
- -
- {filter === "COMPLETED" && shift.assigned_facility && ( -
- setModalFor(shift.external_id)} - > - {t("transfer_to_receiving_facility")} - - - - setModalFor({ externalId: undefined, loading: false }) - } - action={t("confirm")} - onConfirm={() => handleTransferComplete(shift)} - > -

- {t("redirected_to_create_consultation")} -

-
-
- )} -
-
-
- ); -}; - -export default function ShiftingBoard({ - board, - title, - filterProp, - formatFilter, - setContainerHeight, - containerHeight, -}: boardProps) { - const containerRef = useRef(null); - const [offset, setOffSet] = useState(0); - const [pages, setPages] = useState[]>([]); - const [isLoading, setIsLoading] = useState(true); - const [{ isOver }, drop] = useDrop(() => ({ - accept: "shift-card", - drop: (item: any) => { - if (item.status !== board) { - navigate(`/shifting/${item.id}/update?status=${board}`); - } - }, - collect: (monitor) => ({ isOver: !!monitor.isOver() }), - })); - - const query = useQuery(routes.listShiftRequests, { - query: formatFilter({ - ...filterProp, - status: board, - }), - onResponse: ({ res, data: listShiftData }) => { - setIsLoading(false); - if (res?.ok && listShiftData) { - setPages((prev) => [...prev, listShiftData]); - } - }, - }); - - useEffect(() => { - setPages([]); - setIsLoading(true); - query.refetch(); - }, [ - filterProp.facility, - filterProp.origin_facility, - filterProp.shifting_approving_facility, - filterProp.assigned_facility, - filterProp.emergency, - filterProp.is_up_shift, - filterProp.patient_name, - filterProp.created_date_before, - filterProp.created_date_after, - filterProp.modified_date_before, - filterProp.modified_date_after, - filterProp.patient_phone_number, - filterProp.ordering, - filterProp.is_kasp, - filterProp.assigned_to, - filterProp.is_antenatal, - filterProp.breathlessness_level, - ]); - - const handlePagination = async () => { - setIsLoading(true); - setOffSet(offset + 14); - const { res, data: newPageData } = await request(routes.listShiftRequests, { - query: formatFilter({ - ...filterProp, - status: board, - offset: offset, - }), - }); - if (res?.ok && newPageData) { - setPages((prev) => [...prev, newPageData]); - } - setIsLoading(false); - }; - const { t } = useTranslation(); - - const patientFilter = (filter: string) => { - return pages - .flatMap((p) => p.results) - .filter(({ status }) => status === filter) - .map((shift: any) => ( - - )); - }; - - useLayoutEffect(() => { - const container = containerRef.current; - if (container) { - const { height } = container.getBoundingClientRect(); - containerHeight < height && setContainerHeight(height); - } - }, [containerRef.current, pages.flatMap((p) => p.results).length]); - - return ( -
-
-
-

- {title || board}{" "} - { - const { data } = await request(routes.downloadShiftRequests, { - query: { - ...formatFilter({ ...filterProp, status: board }), - csv: true, - }, - }); - return data ?? null; - }} - filenamePrefix={`shift_requests_${board}`} - /> -

- - {pages[0] ? pages[0].count : "..."} - -
-
-
- {pages[0]?.count > 0 - ? patientFilter(board) - : !isLoading && ( -

{t("no_patients_to_show")}

- )} - {isLoading ? ( -
-
-
-
-
-
-
-
-
-
-
-
-
- ) : ( - pages.at(-1)?.next && ( - handlePagination()} className="m-2 block"> - Load More - - ) - )} -
-
- ); -} diff --git a/src/Locale/en.json b/src/Locale/en.json index 2b47a90bd46..a953f36a6ee 100644 --- a/src/Locale/en.json +++ b/src/Locale/en.json @@ -940,7 +940,7 @@ "modified_date": "Modified Date", "no_patients_to_show": "No patients to show.", "shifting_status": "Shifting status", - "transfer_to_receiving_facility": "TRANSFER TO RECEIVING FACILITY", + "transfer_to_receiving_facility": "Transfer to receiving facility", "confirm_transfer_complete": "Confirm Transfer Complete!", "mark_transfer_complete_confirmation": "Are you sure you want to mark this transfer as complete? The Origin facility will no longer have access to this patient", "board_view": "Board View", @@ -1021,6 +1021,8 @@ "date_declared_positive": "Date of declaring positive", "date_of_result": "Covid confirmation date", "is_vaccinated": "Whether vaccinated", + "resource_origin_facility": "Origin Facility", + "resource_approving_facility" : "Resource approving facility", "consultation_not_filed": "You have not filed any consultation for this patient yet.", "consultation_not_filed_description": "Please file a consultation for this patient to continue." } diff --git a/src/Routers/routes/ResourceRoutes.tsx b/src/Routers/routes/ResourceRoutes.tsx index 8408ab4d79d..6636d0d83ea 100644 --- a/src/Routers/routes/ResourceRoutes.tsx +++ b/src/Routers/routes/ResourceRoutes.tsx @@ -1,5 +1,3 @@ -import { DndProvider } from "react-dnd"; -import { HTML5Backend } from "react-dnd-html5-backend"; import ResourceDetails from "../../Components/Resource/ResourceDetails"; import { ResourceDetailsUpdate } from "../../Components/Resource/ResourceDetailsUpdate"; import ListView from "../../Components/Resource/ListView"; @@ -12,11 +10,7 @@ const getDefaultView = () => export default { "/resource": () => , - "/resource/board": () => ( - - - - ), + "/resource/board": () => , "/resource/list": () => , "/resource/:id": ({ id }: DetailRoute) => , "/resource/:id/update": ({ id }: DetailRoute) => ( diff --git a/src/Routers/routes/ShiftingRoutes.tsx b/src/Routers/routes/ShiftingRoutes.tsx index 9b20b4a1a0b..f2e12de4f25 100644 --- a/src/Routers/routes/ShiftingRoutes.tsx +++ b/src/Routers/routes/ShiftingRoutes.tsx @@ -1,5 +1,3 @@ -import { DndProvider } from "react-dnd"; -import { HTML5Backend } from "react-dnd-html5-backend"; import { ShiftCreate } from "../../Components/Patient/ShiftCreate"; import ShiftDetails from "../../Components/Shifting/ShiftDetails"; import { ShiftDetailsUpdate } from "../../Components/Shifting/ShiftDetailsUpdate"; @@ -12,11 +10,7 @@ const getDefaultView = () => export default { "/shifting": () => , - "/shifting/board": () => ( - - - - ), + "/shifting/board": () => , "/shifting/list": () => , "/shifting/:id": ({ id }: any) => , "/shifting/:id/update": ({ id }: any) => , From 7cfd868fe3e046a27b01b875cefdcb1fd829bd5c Mon Sep 17 00:00:00 2001 From: Noufal Rahim <120470585+noufalrahim@users.noreply.github.com> Date: Sun, 13 Oct 2024 05:53:52 +0530 Subject: [PATCH 05/25] Added units for pressure-sore (#8755) --- .../LogUpdate/Sections/PressureSore/PressureSore.tsx | 7 +++++-- src/Locale/en.json | 4 +++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/Components/LogUpdate/Sections/PressureSore/PressureSore.tsx b/src/Components/LogUpdate/Sections/PressureSore/PressureSore.tsx index a56457ef257..63970d4c25c 100644 --- a/src/Components/LogUpdate/Sections/PressureSore/PressureSore.tsx +++ b/src/Components/LogUpdate/Sections/PressureSore/PressureSore.tsx @@ -14,6 +14,7 @@ import { IPressureSore } from "../../../Patient/models"; import { Error } from "../../../../Utils/Notifications"; import { classNames, getValueDescription } from "../../../../Utils/utils"; import { calculatePushScore } from "./utils"; +import { useTranslation } from "react-i18next"; const PressureSore = ({ log, onChange, readonly }: LogUpdateSectionProps) => { const value = log.pressure_sore ?? []; @@ -104,6 +105,8 @@ const RegionEditor = (props: RegionEditorProps) => { const isReadOnly = !props.onSave; + const { t } = useTranslation(); + return ( {
{ onChange={(e) => update({ width: parseFloat(e.value) })} /> Date: Sun, 13 Oct 2024 05:54:03 +0530 Subject: [PATCH 06/25] Added ORAL as default for all route (#8754) --- src/Components/Medicine/PrescriptionBuilder.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Components/Medicine/PrescriptionBuilder.tsx b/src/Components/Medicine/PrescriptionBuilder.tsx index a65f9dd9a62..18efa27ee08 100644 --- a/src/Components/Medicine/PrescriptionBuilder.tsx +++ b/src/Components/Medicine/PrescriptionBuilder.tsx @@ -149,5 +149,9 @@ export default function PrescriptionBuilder({ const DefaultPrescription: Partial = { dosage_type: "REGULAR", + route: "ORAL", +}; +const DefaultPRNPrescription: Partial = { + dosage_type: "PRN", + route: "ORAL", }; -const DefaultPRNPrescription: Partial = { dosage_type: "PRN" }; From a45285a8e8efb3a582417e18222c8e84563c08c1 Mon Sep 17 00:00:00 2001 From: Mohammed Nihal <57055998+nihal467@users.noreply.github.com> Date: Tue, 15 Oct 2024 02:18:29 +0200 Subject: [PATCH 07/25] Downgraded Cypress to 13.14.2 and Removed @types/cypress (#8788) --- cypress/tsconfig.json | 1 - package-lock.json | 217 +++++++----------------------------------- package.json | 3 +- 3 files changed, 36 insertions(+), 185 deletions(-) diff --git a/cypress/tsconfig.json b/cypress/tsconfig.json index 0fd7f9e340b..114000b60f0 100644 --- a/cypress/tsconfig.json +++ b/cypress/tsconfig.json @@ -3,7 +3,6 @@ "baseUrl": "./", "target": "es5", "lib": ["es5", "dom", "es2015", "es2016", "es2017", "es2018", "es2019", "es2020"], - "types": ["cypress"], "typeRoots": ["./support"], "resolveJsonModule": true }, diff --git a/package-lock.json b/package-lock.json index fd8cf7bde13..9554674c29b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -29,6 +29,7 @@ "class-variance-authority": "^0.7.0", "clsx": "^2.1.1", "cross-env": "^7.0.3", + "cypress": "^13.14.2", "dayjs": "^1.11.11", "echarts": "^5.5.1", "echarts-for-react": "^3.0.2", @@ -63,7 +64,6 @@ "@tailwindcss/container-queries": "^0.1.1", "@tailwindcss/forms": "^0.5.7", "@tailwindcss/typography": "^0.5.13", - "@types/cypress": "^1.1.3", "@types/events": "^3.0.3", "@types/google.maps": "^3.55.8", "@types/lodash-es": "^4.17.12", @@ -78,7 +78,6 @@ "@typescript-eslint/eslint-plugin": "^7.18.0", "@vitejs/plugin-react-swc": "^3.6.0", "autoprefixer": "^10.4.19", - "cypress": "^13.15.0", "cypress-localstorage-commands": "^2.2.5", "cypress-split": "^1.23.2", "eslint-config-prettier": "^9.1.0", @@ -1979,7 +1978,6 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "dev": true, "optional": true, "engines": { "node": ">=0.1.90" @@ -1989,7 +1987,6 @@ "version": "3.0.5", "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.5.tgz", "integrity": "sha512-v+XHd9XmWbufxF1/bTaVm2yhbxY+TB4YtWRqF2zaXBlDNMkls34KiATz0AVDLavL3iB6bQk9/7n3oY1EoLSWGA==", - "dev": true, "dependencies": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -2018,7 +2015,6 @@ "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, "bin": { "uuid": "dist/bin/uuid" } @@ -2027,7 +2023,6 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", - "dev": true, "dependencies": { "debug": "^3.1.0", "lodash.once": "^4.1.1" @@ -2037,7 +2032,6 @@ "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, "dependencies": { "ms": "^2.1.1" } @@ -4504,16 +4498,6 @@ "@types/node": "*" } }, - "node_modules/@types/cypress": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@types/cypress/-/cypress-1.1.3.tgz", - "integrity": "sha512-OXe0Gw8LeCflkG1oPgFpyrYWJmEKqYncBsD/J0r17r0ETx/TnIGDNLwXt/pFYSYuYTpzcq1q3g62M9DrfsBL4g==", - "deprecated": "This is a stub types definition for cypress (https://cypress.io). cypress provides its own type definitions, so you don't need @types/cypress installed!", - "dev": true, - "dependencies": { - "cypress": "*" - } - }, "node_modules/@types/debug": { "version": "4.1.12", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", @@ -4706,14 +4690,12 @@ "node_modules/@types/sinonjs__fake-timers": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", - "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==", - "dev": true + "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==" }, "node_modules/@types/sizzle": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.8.tgz", - "integrity": "sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==", - "dev": true + "integrity": "sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==" }, "node_modules/@types/supports-color": { "version": "8.1.3", @@ -4748,7 +4730,6 @@ "version": "2.10.3", "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", - "dev": true, "optional": true, "dependencies": { "@types/node": "*" @@ -5257,7 +5238,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -5295,7 +5275,6 @@ "version": "4.1.3", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true, "engines": { "node": ">=6" } @@ -5304,7 +5283,6 @@ "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, "dependencies": { "type-fest": "^0.21.3" }, @@ -5319,7 +5297,6 @@ "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, "engines": { "node": ">=10" }, @@ -5382,7 +5359,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", - "dev": true, "funding": [ { "type": "github", @@ -5573,7 +5549,6 @@ "version": "0.2.6", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dev": true, "dependencies": { "safer-buffer": "~2.1.0" } @@ -5582,7 +5557,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "dev": true, "engines": { "node": ">=0.8" } @@ -5600,7 +5574,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, "engines": { "node": ">=8" } @@ -5608,8 +5581,7 @@ "node_modules/async": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", - "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", - "dev": true + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==" }, "node_modules/asynckit": { "version": "0.4.0", @@ -5620,7 +5592,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true, "engines": { "node": ">= 4.0.0" } @@ -5681,7 +5652,6 @@ "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "dev": true, "engines": { "node": "*" } @@ -5689,8 +5659,7 @@ "node_modules/aws4": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz", - "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==", - "dev": true + "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==" }, "node_modules/axios": { "version": "1.7.7", @@ -5777,7 +5746,6 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, "funding": [ { "type": "github", @@ -5797,7 +5765,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "dev": true, "dependencies": { "tweetnacl": "^0.14.3" } @@ -5816,14 +5783,12 @@ "node_modules/blob-util": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", - "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==", - "dev": true + "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==" }, "node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "node_modules/boolean": { "version": "3.2.0", @@ -5924,7 +5889,6 @@ "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, "funding": [ { "type": "github", @@ -5948,7 +5912,6 @@ "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true, "engines": { "node": "*" } @@ -5962,7 +5925,6 @@ "version": "2.4.0", "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.4.0.tgz", "integrity": "sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==", - "dev": true, "engines": { "node": ">=6" } @@ -5971,7 +5933,6 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "dev": true, "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -6039,8 +6000,7 @@ "node_modules/caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "dev": true + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" }, "node_modules/ccount": { "version": "2.0.1", @@ -6068,7 +6028,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -6084,7 +6043,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -6136,7 +6094,6 @@ "version": "2.24.0", "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==", - "dev": true, "engines": { "node": ">= 0.8.0" } @@ -6197,7 +6154,6 @@ "version": "3.9.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, "funding": [ { "type": "github", @@ -6231,7 +6187,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, "engines": { "node": ">=6" } @@ -6240,7 +6195,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, "dependencies": { "restore-cursor": "^3.1.0" }, @@ -6252,7 +6206,6 @@ "version": "0.6.5", "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", - "dev": true, "dependencies": { "string-width": "^4.2.0" }, @@ -6267,7 +6220,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", - "dev": true, "dependencies": { "slice-ansi": "^3.0.0", "string-width": "^4.2.0" @@ -6332,8 +6284,7 @@ "node_modules/colorette": { "version": "2.0.20", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" }, "node_modules/combined-stream": { "version": "1.0.8", @@ -6359,7 +6310,6 @@ "version": "6.2.1", "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", - "dev": true, "engines": { "node": ">= 6" } @@ -6368,7 +6318,6 @@ "version": "1.8.2", "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", - "dev": true, "engines": { "node": ">=4.0.0" } @@ -6451,8 +6400,7 @@ "node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", - "dev": true + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" }, "node_modules/cosmiconfig": { "version": "8.3.6", @@ -6554,13 +6502,12 @@ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, "node_modules/cypress": { - "version": "13.15.0", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.15.0.tgz", - "integrity": "sha512-53aO7PwOfi604qzOkCSzNlWquCynLlKE/rmmpSPcziRH6LNfaDUAklQT6WJIsD8ywxlIy+uVZsnTMCCQVd2kTw==", - "dev": true, + "version": "13.14.2", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.14.2.tgz", + "integrity": "sha512-lsiQrN17vHMB2fnvxIrKLAjOr9bPwsNbPZNrWf99s4u+DVmCY6U+w7O3GGG9FvP4EUVYaDu+guWeNLiUzBrqvA==", "hasInstallScript": true, "dependencies": { - "@cypress/request": "^3.0.4", + "@cypress/request": "^3.0.1", "@cypress/xvfb": "^1.2.4", "@types/sinonjs__fake-timers": "8.1.1", "@types/sizzle": "^2.3.2", @@ -6645,14 +6592,12 @@ "node_modules/cypress/node_modules/proxy-from-env": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", - "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==", - "dev": true + "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==" }, "node_modules/dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dev": true, "dependencies": { "assert-plus": "^1.0.0" }, @@ -6829,7 +6774,6 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -7130,7 +7074,6 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "dev": true, "dependencies": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -7192,7 +7135,6 @@ "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, "dependencies": { "once": "^1.4.0" } @@ -7213,7 +7155,6 @@ "version": "2.4.1", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", - "dev": true, "dependencies": { "ansi-colors": "^4.1.1", "strip-ansi": "^6.0.1" @@ -7312,7 +7253,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dev": true, "dependencies": { "get-intrinsic": "^1.2.4" }, @@ -7324,7 +7264,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, "engines": { "node": ">= 0.4" } @@ -7948,8 +7887,7 @@ "node_modules/eventemitter2": { "version": "6.4.7", "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", - "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==", - "dev": true + "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==" }, "node_modules/eventemitter3": { "version": "5.0.1", @@ -7969,7 +7907,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", - "dev": true, "dependencies": { "cross-spawn": "^7.0.0", "get-stream": "^5.0.0", @@ -7992,7 +7929,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", - "dev": true, "dependencies": { "pify": "^2.2.0" }, @@ -8009,7 +7945,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "dev": true, "dependencies": { "debug": "^4.1.1", "get-stream": "^5.1.0", @@ -8029,7 +7964,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "dev": true, "engines": [ "node >=0.6.0" ] @@ -8110,7 +8044,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "dev": true, "dependencies": { "pend": "~1.2.0" } @@ -8119,7 +8052,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, "dependencies": { "escape-string-regexp": "^1.0.5" }, @@ -8134,7 +8066,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, "engines": { "node": ">=0.8.0" } @@ -8399,7 +8330,6 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "dev": true, "engines": { "node": "*" } @@ -8442,7 +8372,6 @@ "version": "9.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", @@ -8594,7 +8523,6 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "dev": true, "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2", @@ -8619,7 +8547,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, "dependencies": { "pump": "^3.0.0" }, @@ -8663,7 +8590,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", - "dev": true, "dependencies": { "async": "^3.2.0" } @@ -8672,7 +8598,6 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dev": true, "dependencies": { "assert-plus": "^1.0.0" } @@ -8753,7 +8678,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", - "dev": true, "dependencies": { "ini": "2.0.0" }, @@ -8835,7 +8759,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -8875,7 +8798,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, "dependencies": { "es-define-property": "^1.0.0" }, @@ -8887,7 +8809,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -8899,7 +8820,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -9219,7 +9139,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.4.0.tgz", "integrity": "sha512-G5akfn7eKbpDN+8nPS/cb57YeA1jLTVxjpCj7tmm3QKPdyDy7T+qSC40e9ptydSWvkwjSXw1VbkpyEm39ukeAg==", - "dev": true, "dependencies": { "assert-plus": "^1.0.0", "jsprim": "^2.0.2", @@ -9246,7 +9165,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", - "dev": true, "engines": { "node": ">=8.12.0" } @@ -9312,7 +9230,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, "funding": [ { "type": "github", @@ -9382,7 +9299,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, "engines": { "node": ">=8" } @@ -9408,7 +9324,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "dev": true, "engines": { "node": ">=10" } @@ -9594,7 +9509,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", - "dev": true, "dependencies": { "ci-info": "^3.2.0" }, @@ -9730,7 +9644,6 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", - "dev": true, "dependencies": { "global-dirs": "^3.0.0", "is-path-inside": "^3.0.2" @@ -9808,7 +9721,6 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, "engines": { "node": ">=8" } @@ -9880,7 +9792,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, "engines": { "node": ">=8" }, @@ -9936,14 +9847,12 @@ "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" }, "node_modules/is-unicode-supported": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, "engines": { "node": ">=10" }, @@ -10023,8 +9932,7 @@ "node_modules/isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "dev": true + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" }, "node_modules/iterator.prototype": { "version": "1.1.2", @@ -10135,8 +10043,7 @@ "node_modules/jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "dev": true + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" }, "node_modules/jsesc": { "version": "3.0.2", @@ -10165,8 +10072,7 @@ "node_modules/json-schema": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" }, "node_modules/json-schema-traverse": { "version": "0.4.1", @@ -10184,8 +10090,7 @@ "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" }, "node_modules/json5": { "version": "2.2.3", @@ -10203,7 +10108,6 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, "dependencies": { "universalify": "^2.0.0" }, @@ -10224,7 +10128,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", - "dev": true, "engines": [ "node >=0.6.0" ], @@ -10272,7 +10175,6 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==", - "dev": true, "engines": { "node": "> 0.8" } @@ -10764,7 +10666,6 @@ "version": "3.14.0", "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==", - "dev": true, "dependencies": { "cli-truncate": "^2.1.0", "colorette": "^2.0.16", @@ -10791,7 +10692,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -10888,8 +10788,7 @@ "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "node_modules/lodash-es": { "version": "4.17.21", @@ -10923,8 +10822,7 @@ "node_modules/lodash.once": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", - "dev": true + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" }, "node_modules/lodash.sortby": { "version": "4.7.0", @@ -10936,7 +10834,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -10952,7 +10849,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", - "dev": true, "dependencies": { "ansi-escapes": "^4.3.0", "cli-cursor": "^3.1.0", @@ -10970,7 +10866,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -10987,7 +10882,6 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -12742,7 +12636,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, "engines": { "node": ">=6" } @@ -12786,7 +12679,6 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -13124,7 +13016,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, "dependencies": { "path-key": "^3.0.0" }, @@ -13165,7 +13056,6 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -13269,7 +13159,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "devOptional": true, "dependencies": { "wrappy": "1" } @@ -13278,7 +13167,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, "dependencies": { "mimic-fn": "^2.1.0" }, @@ -13310,8 +13198,7 @@ "node_modules/ospath": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", - "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", - "dev": true + "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==" }, "node_modules/p-limit": { "version": "3.1.0", @@ -13349,7 +13236,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, "dependencies": { "aggregate-error": "^3.0.0" }, @@ -13515,14 +13401,12 @@ "node_modules/pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", - "dev": true + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" }, "node_modules/performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", - "dev": true + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" }, "node_modules/picocolors": { "version": "1.1.0", @@ -13968,7 +13852,6 @@ "version": "5.6.0", "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "dev": true, "engines": { "node": ">=6" }, @@ -13989,7 +13872,6 @@ "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "dev": true, "engines": { "node": ">= 0.6.0" } @@ -14040,14 +13922,12 @@ "node_modules/psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" }, "node_modules/pump": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", - "dev": true, "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -14073,7 +13953,6 @@ "version": "6.13.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", - "dev": true, "dependencies": { "side-channel": "^1.0.6" }, @@ -14087,8 +13966,7 @@ "node_modules/querystringify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" }, "node_modules/queue-microtask": { "version": "1.2.3", @@ -15473,7 +15351,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==", - "dev": true, "dependencies": { "throttleit": "^1.0.0" } @@ -15560,8 +15437,7 @@ "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" }, "node_modules/resolve": { "version": "2.0.0-next.5", @@ -15610,7 +15486,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" @@ -15640,8 +15515,7 @@ "node_modules/rfdc": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", - "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", - "dev": true + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==" }, "node_modules/rimraf": { "version": "3.0.2", @@ -15780,7 +15654,6 @@ "version": "7.8.1", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, "dependencies": { "tslib": "^2.1.0" } @@ -15853,8 +15726,7 @@ "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/sass-lookup": { "version": "6.0.1", @@ -15973,7 +15845,6 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -16084,7 +15955,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", - "dev": true, "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -16101,8 +15971,7 @@ "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "devOptional": true + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, "node_modules/simple-bin-help": { "version": "1.8.0", @@ -16162,7 +16031,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", - "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -16315,7 +16183,6 @@ "version": "1.18.0", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", - "dev": true, "dependencies": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -16561,7 +16428,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, "engines": { "node": ">=6" } @@ -16993,7 +16859,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.1.tgz", "integrity": "sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==", - "dev": true, "funding": { "url": "https://github.com/sponsors/sindresorhus" } @@ -17001,8 +16866,7 @@ "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" }, "node_modules/tiny-invariant": { "version": "1.3.3", @@ -17052,7 +16916,6 @@ "version": "0.2.3", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", - "dev": true, "engines": { "node": ">=14.14" } @@ -17086,7 +16949,6 @@ "version": "4.1.4", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", - "dev": true, "dependencies": { "psl": "^1.1.33", "punycode": "^2.1.1", @@ -17101,7 +16963,6 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true, "engines": { "node": ">= 4.0.0" } @@ -17198,7 +17059,6 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dev": true, "dependencies": { "safe-buffer": "^5.0.1" }, @@ -17209,8 +17069,7 @@ "node_modules/tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "dev": true + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" }, "node_modules/type-check": { "version": "0.4.0", @@ -17710,7 +17569,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, "engines": { "node": ">= 10.0.0" } @@ -17719,7 +17577,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", - "dev": true, "engines": { "node": ">=8" } @@ -17776,7 +17633,6 @@ "version": "1.5.10", "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, "dependencies": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" @@ -17870,7 +17726,6 @@ "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "dev": true, "engines": [ "node >=0.6.0" ], @@ -19591,8 +19446,7 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "devOptional": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/xlsx": { "version": "0.18.5", @@ -19633,7 +19487,6 @@ "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "dev": true, "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" diff --git a/package.json b/package.json index c42834216d3..50711943a85 100644 --- a/package.json +++ b/package.json @@ -64,6 +64,7 @@ "class-variance-authority": "^0.7.0", "clsx": "^2.1.1", "cross-env": "^7.0.3", + "cypress": "^13.14.2", "dayjs": "^1.11.11", "echarts": "^5.5.1", "echarts-for-react": "^3.0.2", @@ -98,7 +99,6 @@ "@tailwindcss/container-queries": "^0.1.1", "@tailwindcss/forms": "^0.5.7", "@tailwindcss/typography": "^0.5.13", - "@types/cypress": "^1.1.3", "@types/events": "^3.0.3", "@types/google.maps": "^3.55.8", "@types/lodash-es": "^4.17.12", @@ -113,7 +113,6 @@ "@typescript-eslint/eslint-plugin": "^7.18.0", "@vitejs/plugin-react-swc": "^3.6.0", "autoprefixer": "^10.4.19", - "cypress": "^13.15.0", "cypress-localstorage-commands": "^2.2.5", "cypress-split": "^1.23.2", "eslint-config-prettier": "^9.1.0", From 7575c1ca7d7798274012b4361c29ad357ce9937c Mon Sep 17 00:00:00 2001 From: Mohammed Nihal <57055998+nihal467@users.noreply.github.com> Date: Tue, 15 Oct 2024 11:16:09 +0200 Subject: [PATCH 08/25] New Cypress Test to verify functionality of Doctor Connect (#8791) --- .../e2e/facility_spec/FacilityLocation.cy.ts | 8 ++- .../patient_spec/PatientDoctorConnect.cy.ts | 56 +++++++++++++++++++ .../Patient/PatientDoctorConnect.ts | 32 +++++++++++ .../Facility/ConsultationDetails/index.tsx | 1 + .../Facility/DoctorVideoSlideover.tsx | 6 +- 5 files changed, 98 insertions(+), 5 deletions(-) create mode 100644 cypress/e2e/patient_spec/PatientDoctorConnect.cy.ts create mode 100644 cypress/pageobject/Patient/PatientDoctorConnect.ts diff --git a/cypress/e2e/facility_spec/FacilityLocation.cy.ts b/cypress/e2e/facility_spec/FacilityLocation.cy.ts index 113a5e3eaab..d29ee95e873 100644 --- a/cypress/e2e/facility_spec/FacilityLocation.cy.ts +++ b/cypress/e2e/facility_spec/FacilityLocation.cy.ts @@ -193,12 +193,16 @@ describe("Location Management Section", () => { facilityLocation.clickAddNewLocationButton(); facilityLocation.enterLocationName("Test Location with Beds"); facilityLocation.selectLocationType("OTHER"); - assetPage.clickassetupdatebutton(); + cy.submitButton("Add Location"); + cy.verifyNotification("Location created successfully"); + cy.closeNotification(); facilityLocation.clickManageBedButton(); facilityLocation.clickAddBedButton(); facilityLocation.enterBedName("Bed 1"); facilityLocation.selectBedType("Regular"); - assetPage.clickassetupdatebutton(); + cy.submitButton("Add Bed(s)"); + cy.verifyNotification("1 Bed created successfully"); + cy.closeNotification(); facilityLocation.loadLocationManagementPage("Dummy Shifting Center"); facilityLocation.deleteLocation("Test Location with Beds"); assetPage.clickassetupdatebutton(); diff --git a/cypress/e2e/patient_spec/PatientDoctorConnect.cy.ts b/cypress/e2e/patient_spec/PatientDoctorConnect.cy.ts new file mode 100644 index 00000000000..64d47db2cf1 --- /dev/null +++ b/cypress/e2e/patient_spec/PatientDoctorConnect.cy.ts @@ -0,0 +1,56 @@ +import { DoctorConnect } from "pageobject/Patient/PatientDoctorConnect"; +import LoginPage from "../../pageobject/Login/LoginPage"; +import { PatientPage } from "../../pageobject/Patient/PatientCreation"; + +describe("Patient Doctor Connect in consultation page", () => { + const loginPage = new LoginPage(); + const patientPage = new PatientPage(); + const doctorconnect = new DoctorConnect(); + const patientName = "Dummy Patient 11"; + const doctorUser = "Dev Doctor"; + const doctorUserNumber = "+919876543219"; + const nurseUser = "Dev Staff"; + const teleIcuUser = "Dev Doctor Two"; + + before(() => { + loginPage.loginAsDisctrictAdmin(); + cy.saveLocalStorage(); + }); + + beforeEach(() => { + cy.restoreLocalStorage(); + cy.clearLocalStorage(/filters--.+/); + cy.awaitUrl("/patients"); + }); + + it("Patient Doctor connect phone redirection and sort by filter", () => { + // click on the slideover and verify icon redirection + patientPage.visitPatient(patientName); + doctorconnect.clickDoctorConnectButton(); + // verify all the users are visible under the all section + cy.verifyContentPresence("#doctor-connect-home-doctor", [doctorUser]); + cy.verifyContentPresence("#doctor-connect-home-nurse", [nurseUser]); + cy.verifyContentPresence("#doctor-connect-remote-doctor", [teleIcuUser]); + // verify copy content button functionality + doctorconnect.CopyFunctionTrigger(); + doctorconnect.clickCopyPhoneNumber( + "#doctor-connect-home-doctor", + doctorUser, + ); + doctorconnect.verifyCopiedContent(doctorUserNumber); + // verify the whatsapp and phone number icon presence + doctorconnect.verifyIconVisible("#whatsapp-icon"); + doctorconnect.verifyIconVisible("#phone-icon"); + // sort the each datas based on user type + doctorconnect.clickUsersSortBy("Doctor"); + cy.verifyContentPresence("#doctor-connect-home-doctor", [doctorUser]); + doctorconnect.clickUsersSortBy("Nurse"); + cy.verifyContentPresence("#doctor-connect-home-nurse", [nurseUser]); + doctorconnect.clickUsersSortBy("TeleICU Doctor"); + cy.verifyContentPresence("#doctor-connect-remote-doctor", [teleIcuUser]); + }); + + afterEach(() => { + cy.saveLocalStorage(); + }); +}); diff --git a/cypress/pageobject/Patient/PatientDoctorConnect.ts b/cypress/pageobject/Patient/PatientDoctorConnect.ts new file mode 100644 index 00000000000..b8c33bb4b24 --- /dev/null +++ b/cypress/pageobject/Patient/PatientDoctorConnect.ts @@ -0,0 +1,32 @@ +export class DoctorConnect { + clickDoctorConnectButton() { + cy.get("#doctor-connect-button").scrollIntoView(); + cy.get("#doctor-connect-button").click(); + } + + CopyFunctionTrigger() { + cy.window().then((win) => { + cy.stub(win.navigator.clipboard, "writeText").as("clipboardStub"); + }); + } + + verifyCopiedContent(text: string) { + cy.get("@clipboardStub").should("be.calledWith", text); + } + + verifyIconVisible(selector: string) { + cy.get(selector).should("be.visible"); + } + + clickCopyPhoneNumber(element: string, text: string) { + cy.get(element) + .contains(text) // Find the element containing "dev doctor" + .parent() // Move up to the parent element (if necessary) + .find("#copy-phoneicon") // Find the #copy-phoneicon within that context + .click(); + } + + clickUsersSortBy(text: string) { + cy.get("#doctor-connect-filter-tabs").contains(text).click(); + } +} diff --git a/src/Components/Facility/ConsultationDetails/index.tsx b/src/Components/Facility/ConsultationDetails/index.tsx index 53e137d12eb..6970898a158 100644 --- a/src/Components/Facility/ConsultationDetails/index.tsx +++ b/src/Components/Facility/ConsultationDetails/index.tsx @@ -256,6 +256,7 @@ export const ConsultationDetails = (props: any) => { {!consultationData.discharge_date && ( <>
From bf0b5df16d19455127e61b5d99846899b0d6bad0 Mon Sep 17 00:00:00 2001 From: Shivank Kacker Date: Tue, 15 Oct 2024 14:54:37 +0530 Subject: [PATCH 09/25] Removed unused packages (#8778) --- package-lock.json | 21 --------------------- package.json | 3 --- 2 files changed, 24 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9554674c29b..e66a3ea4ead 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38,7 +38,6 @@ "i18next": "^23.11.4", "i18next-browser-languagedetector": "^7.2.1", "lodash-es": "^4.17.21", - "lucide-react": "^0.446.0", "postcss-loader": "^7.3.3", "qrcode.react": "^3.1.0", "raviger": "^4.1.2", @@ -86,7 +85,6 @@ "eslint-plugin-prettier": "^5.2.1", "eslint-plugin-react": "^7.35.0", "eslint-plugin-react-hooks": "^4.6.2", - "gentype": "^4.5.0", "glob": "^11.0.0", "husky": "^8.0.3", "lint-staged": "^13.2.3", @@ -94,7 +92,6 @@ "postcss": "^8.4.38", "prettier": "^3.3.3", "prettier-plugin-tailwindcss": "^0.6.5", - "prop-types": "^15.8.1", "redux-devtools-extension": "^2.13.9", "snyk": "^1.1291.0", "tailwindcss": "^3.4.3", @@ -8496,16 +8493,6 @@ "node": ">=6.9.0" } }, - "node_modules/gentype": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/gentype/-/gentype-4.5.0.tgz", - "integrity": "sha512-XqHBQPS6Qb2HSgNJAwYRXbQJ4LSvz+MgNvuWnj8bz0teSorsy2kDxA6F1eZx5ft8cnfKAls4uNEgd5uNcPbQDg==", - "dev": true, - "hasInstallScript": true, - "bin": { - "gentype": "gentype.exe" - } - }, "node_modules/get-amd-module-type": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/get-amd-module-type/-/get-amd-module-type-6.0.0.tgz", @@ -10927,14 +10914,6 @@ "yallist": "^3.0.2" } }, - "node_modules/lucide-react": { - "version": "0.446.0", - "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.446.0.tgz", - "integrity": "sha512-BU7gy8MfBMqvEdDPH79VhOXSEgyG8TSPOKWaExWGCQVqnGH7wGgDngPbofu+KdtVjPQBWbEmnfMTq90CTiiDRg==", - "peerDependencies": { - "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc" - } - }, "node_modules/magic-string": { "version": "0.30.11", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", diff --git a/package.json b/package.json index 50711943a85..850bba2edae 100644 --- a/package.json +++ b/package.json @@ -73,7 +73,6 @@ "i18next": "^23.11.4", "i18next-browser-languagedetector": "^7.2.1", "lodash-es": "^4.17.21", - "lucide-react": "^0.446.0", "postcss-loader": "^7.3.3", "qrcode.react": "^3.1.0", "raviger": "^4.1.2", @@ -121,7 +120,6 @@ "eslint-plugin-prettier": "^5.2.1", "eslint-plugin-react": "^7.35.0", "eslint-plugin-react-hooks": "^4.6.2", - "gentype": "^4.5.0", "glob": "^11.0.0", "husky": "^8.0.3", "lint-staged": "^13.2.3", @@ -129,7 +127,6 @@ "postcss": "^8.4.38", "prettier": "^3.3.3", "prettier-plugin-tailwindcss": "^0.6.5", - "prop-types": "^15.8.1", "redux-devtools-extension": "^2.13.9", "snyk": "^1.1291.0", "tailwindcss": "^3.4.3", From 7518c6b5e398c9f798855cfbe3027107346da145 Mon Sep 17 00:00:00 2001 From: Rithvik Nishad Date: Tue, 15 Oct 2024 14:55:22 +0530 Subject: [PATCH 10/25] fix: prevent recursive redirect between session expired and root (#8777) --- src/Components/ErrorPages/SessionExpired.tsx | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/src/Components/ErrorPages/SessionExpired.tsx b/src/Components/ErrorPages/SessionExpired.tsx index 419c9c44dce..32036a0319d 100644 --- a/src/Components/ErrorPages/SessionExpired.tsx +++ b/src/Components/ErrorPages/SessionExpired.tsx @@ -1,23 +1,16 @@ import * as Notification from "../../Utils/Notifications"; -import { useNavigate } from "raviger"; import { useEffect } from "react"; import { useTranslation } from "react-i18next"; import { useAuthContext } from "../../Common/hooks/useAuthUser"; export default function SessionExpired() { - const { signOut, user } = useAuthContext(); - const isAuthenticated = !!user; - const navigate = useNavigate(); + const { signOut } = useAuthContext(); const { t } = useTranslation(); useEffect(() => { Notification.closeAllNotifications(); }, []); - if (isAuthenticated) { - navigate("/"); - } - return (
From e8f898ec77be4a35aa936c0d681c884953199324 Mon Sep 17 00:00:00 2001 From: Hitish Rao P <140695309+HitishRaoP@users.noreply.github.com> Date: Tue, 15 Oct 2024 15:38:00 +0530 Subject: [PATCH 11/25] Death report is missing patient age (#8702) Co-authored-by: Mohammed Nihal <57055998+nihal467@users.noreply.github.com> Co-authored-by: Khavin Shankar Co-authored-by: Rithvik Nishad --- src/Components/DeathReport/DeathReport.tsx | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/Components/DeathReport/DeathReport.tsx b/src/Components/DeathReport/DeathReport.tsx index 9f48e348402..2424d46f607 100644 --- a/src/Components/DeathReport/DeathReport.tsx +++ b/src/Components/DeathReport/DeathReport.tsx @@ -1,6 +1,4 @@ -/* eslint-disable @typescript-eslint/no-unused-vars */ -import { useEffect, useState } from "react"; -import { statusType, useAbortableEffect } from "../../Common/utils"; +import { useState } from "react"; import { GENDER_TYPES } from "../../Common/constants"; import TextFormField from "../Form/FormFields/TextFormField"; import TextAreaFormField from "../Form/FormFields/TextAreaFormField"; @@ -8,8 +6,8 @@ import DateFormField from "../Form/FormFields/DateFormField"; import PhoneNumberFormField from "../Form/FormFields/PhoneNumberFormField"; import { formatDateTime, + formatPatientAge, humanizeStrings, - patientAgeInYears, } from "../../Utils/utils"; import Page from "../Common/components/Page"; import Form from "../Form/Form"; @@ -111,7 +109,7 @@ export default function PrintDeathReport(props: { id: string }) { const patientComorbidities = getPatientComorbidities(res.data); const data = { ...res.data, - age: patientAgeInYears(res.data!), + age: formatPatientAge(res.data!, true), gender: patientGender, address: patientAddress, comorbidities: patientComorbidities, @@ -372,7 +370,7 @@ export default function PrintDeathReport(props: { id: string }) {
From b02062a836df8559e19870f7c7268de4a2346032 Mon Sep 17 00:00:00 2001 From: Rithvik Nishad Date: Wed, 16 Oct 2024 15:53:11 +0530 Subject: [PATCH 12/25] Fixes multiple tiny issues (#8784) --- public/favicon-light.ico | Bin 217598 -> 0 bytes public/favicon.ico | Bin 217598 -> 6439 bytes src/App.tsx | 2 -- src/CAREUI/misc/PaginatedList.tsx | 10 ++++++- src/CAREUI/misc/ThemedFavicon.tsx | 14 ---------- src/Components/ABDM/LinkABHANumberModal.tsx | 1 - src/Components/Assets/AssetsList.tsx | 1 - src/Components/Common/Breadcrumbs.tsx | 9 +++--- src/Components/Common/Sidebar/Sidebar.tsx | 10 +++---- .../Common/Sidebar/SidebarUserCard.tsx | 8 +----- .../Facility/DischargedPatientsList.tsx | 26 +++++++++--------- src/Components/Facility/FacilityBlock.tsx | 6 ++-- src/Components/Facility/FacilityCard.tsx | 7 +---- src/Components/Facility/FacilityHome.tsx | 22 ++++++--------- .../Facility/LocationManagement.tsx | 22 +++++++-------- src/Components/Patient/ManagePatients.tsx | 9 +++--- .../Patient/PatientConsentRecordBlock.tsx | 5 +--- src/Components/Patient/PatientHome.tsx | 2 +- src/Components/Patient/PatientRegister.tsx | 6 ++-- src/Components/Users/ManageUsers.tsx | 6 ++-- src/Components/Users/SkillsSlideOver.tsx | 1 + src/Locale/en.json | 9 ++++-- src/Routers/AppRouter.tsx | 2 +- 23 files changed, 75 insertions(+), 103 deletions(-) delete mode 100644 public/favicon-light.ico delete mode 100644 src/CAREUI/misc/ThemedFavicon.tsx diff --git a/public/favicon-light.ico b/public/favicon-light.ico deleted file mode 100644 index 244b9d6c1d30aab5b36ffafc41845202059a07d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 217598 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 W+mE&7plRj;>^scKcsnF+4*vt$Z=fLn diff --git a/public/favicon.ico b/public/favicon.ico index 244b9d6c1d30aab5b36ffafc41845202059a07d8..67a5686e32ffe2212a032deb9ee098827e52f887 100644 GIT binary patch literal 6439 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 Apa1{> literal 217598 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 W+mE&7plRj;>^scKcsnF+4*vt$Z=fLn diff --git a/src/App.tsx b/src/App.tsx index 98cf307f18a..c02982fd6df 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,6 +1,5 @@ import { Suspense } from "react"; import Routers from "./Routers"; -import ThemedFavicon from "./CAREUI/misc/ThemedFavicon"; import Integrations from "./Integrations"; import Loading from "./Components/Common/Loading"; import HistoryAPIProvider from "./Providers/HistoryAPIProvider"; @@ -11,7 +10,6 @@ import { Toaster } from "./Components/ui/toaster"; const App = () => { return ( }> - }> diff --git a/src/CAREUI/misc/PaginatedList.tsx b/src/CAREUI/misc/PaginatedList.tsx index ec270bf8134..3b68b23bd30 100644 --- a/src/CAREUI/misc/PaginatedList.tsx +++ b/src/CAREUI/misc/PaginatedList.tsx @@ -33,6 +33,8 @@ function useContextualized() { interface Props extends QueryOptions> { route: QueryRoute>; perPage?: number; + initialPage?: number; + onPageChange?: (page: number) => void; queryCB?: ( query: ReturnType>>, ) => void; @@ -49,7 +51,13 @@ export default function PaginatedList({ queryCB, ...queryOptions }: Props) { - const [currentPage, setPage] = useState(1); + const [currentPage, _setPage] = useState(queryOptions.initialPage ?? 1); + + const setPage = (page: number) => { + _setPage(page); + queryOptions.onPageChange?.(page); + }; + const query = useQuery(route, { ...queryOptions, query: { diff --git a/src/CAREUI/misc/ThemedFavicon.tsx b/src/CAREUI/misc/ThemedFavicon.tsx deleted file mode 100644 index b908f566b89..00000000000 --- a/src/CAREUI/misc/ThemedFavicon.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import { useEffect } from "react"; - -export default function ThemedFavicon() { - useEffect(() => { - const darkThemeMq = window.matchMedia("(prefers-color-scheme: dark)"); - const favicon = document.querySelector( - "link[rel~='icon']", - ) as HTMLLinkElement; - - favicon.href = darkThemeMq.matches ? "/favicon-light.ico" : "/favicon.ico"; - }, []); - - return null; -} diff --git a/src/Components/ABDM/LinkABHANumberModal.tsx b/src/Components/ABDM/LinkABHANumberModal.tsx index 8d6365387cd..c2855ae7569 100644 --- a/src/Components/ABDM/LinkABHANumberModal.tsx +++ b/src/Components/ABDM/LinkABHANumberModal.tsx @@ -225,7 +225,6 @@ const ScanABHAQRSection = ({ Notify.Error({ msg: "Linking Failed" }); } } catch (e) { - console.log(e); Notify.Error({ msg: "Invalid ABHA QR" }); } finally { setIsLoading(false); diff --git a/src/Components/Assets/AssetsList.tsx b/src/Components/Assets/AssetsList.tsx index ee27c2a484f..77961d15b0d 100644 --- a/src/Components/Assets/AssetsList.tsx +++ b/src/Components/Assets/AssetsList.tsx @@ -159,7 +159,6 @@ const AssetsList = () => { }); } } catch (err) { - console.log(err); Notification.Error({ msg: t("invalid_asset_id_msg"), }); diff --git a/src/Components/Common/Breadcrumbs.tsx b/src/Components/Common/Breadcrumbs.tsx index c092ecbbc93..aaee7ac0b64 100644 --- a/src/Components/Common/Breadcrumbs.tsx +++ b/src/Components/Common/Breadcrumbs.tsx @@ -58,8 +58,8 @@ export default function Breadcrumbs({ style: replacements[field]?.style || "", })); - const renderCrumb = (crumb: any, index: number, array: any[]) => { - const isLastItem = index === array.length - 1; + const renderCrumb = (crumb: any, index: number) => { + const isLastItem = index === crumbs!.length - 1; return (
  • )} - {crumbs && - crumbs.length > 0 && - renderCrumb(crumbs[crumbs.length - 1], crumbs.length - 1, crumbs)} + {crumbs?.length && + renderCrumb(crumbs[crumbs.length - 1], crumbs.length - 1)} ); diff --git a/src/Components/Common/Sidebar/Sidebar.tsx b/src/Components/Common/Sidebar/Sidebar.tsx index 0e9ee34b715..31efe00f1b1 100644 --- a/src/Components/Common/Sidebar/Sidebar.tsx +++ b/src/Components/Common/Sidebar/Sidebar.tsx @@ -104,11 +104,11 @@ const StatelessSidebar = ({ : "overflow-y-auto overflow-x-hidden" }`} > - {shrinked && ( + {setShrinked && shrinked && (
    setShrinked && setShrinked(!shrinked)} + toggle={() => setShrinked(!shrinked)} />
    )} @@ -123,11 +123,11 @@ const StatelessSidebar = ({ src={shrinked ? LOGO_COLLAPSE : careConfig.mainLogo?.light} /> - {!shrinked && ( + {setShrinked && !shrinked && (
    setShrinked && setShrinked(!shrinked)} + toggle={() => setShrinked(!shrinked)} />
    )} @@ -220,7 +220,7 @@ interface ToggleShrinkProps { const ToggleShrink = ({ shrinked, toggle }: ToggleShrinkProps) => (
    = ({ shrinked }) => { id="sign-out-button" className={`flex h-full items-center justify-start transition-all duration-200 ease-in-out ${shrinked ? "pl-2" : "pl-5 pr-4"}`} > -
    - -
    - + {!shrinked && (
    {t("sign_out")} diff --git a/src/Components/Facility/DischargedPatientsList.tsx b/src/Components/Facility/DischargedPatientsList.tsx index 6603f3964af..47e5cd5a68d 100644 --- a/src/Components/Facility/DischargedPatientsList.tsx +++ b/src/Components/Facility/DischargedPatientsList.tsx @@ -47,15 +47,16 @@ const DischargedPatientsList = ({ pathParams: { id: facility_external_id }, }); - const { qParams, updateQuery, advancedFilter, FilterBadges } = useFilters({ - limit: 12, - cacheBlacklist: [ - "name", - "patient_no", - "phone_number", - "emergency_phone_number", - ], - }); + const { qParams, updateQuery, advancedFilter, FilterBadges, updatePage } = + useFilters({ + limit: 12, + cacheBlacklist: [ + "name", + "patient_no", + "phone_number", + "emergency_phone_number", + ], + }); useEffect(() => { if (!qParams.phone_number && phone_number.length >= 13) { @@ -434,10 +435,9 @@ const DischargedPatientsList = ({ route={routes.listFacilityDischargedPatients} pathParams={{ facility_external_id }} query={{ ordering: "-modified_date", ...qParams }} - queryCB={(query) => { - setCount(query.data?.count || 0); - console.log(query.data?.count); - }} + queryCB={(query) => setCount(query.data?.count || 0)} + initialPage={qParams.page} + onPageChange={updatePage} > {() => (
    diff --git a/src/Components/Facility/FacilityBlock.tsx b/src/Components/Facility/FacilityBlock.tsx index 64c0a24d78d..891bb4d4e59 100644 --- a/src/Components/Facility/FacilityBlock.tsx +++ b/src/Components/Facility/FacilityBlock.tsx @@ -1,6 +1,6 @@ import { Link } from "raviger"; -import CareIcon from "../../CAREUI/icons/CareIcon"; import { FacilityModel } from "./models"; +import { Avatar } from "@/Components/Common/Avatar"; export default function FacilityBlock(props: { facility: FacilityModel }) { const { facility } = props; @@ -18,9 +18,7 @@ export default function FacilityBlock(props: { facility: FacilityModel }) { src={facility.read_cover_image_url} /> ) : ( - <> - - + )}
    diff --git a/src/Components/Facility/FacilityCard.tsx b/src/Components/Facility/FacilityCard.tsx index 0febe36e4b7..f3614d2685a 100644 --- a/src/Components/Facility/FacilityCard.tsx +++ b/src/Components/Facility/FacilityCard.tsx @@ -61,12 +61,7 @@ export const FacilityCard = (props: { facility: any; userType: any }) => { alt={facility.name} className="h-full max-h-32 w-full object-cover" /> - )) || ( - - )} + )) || }
    diff --git a/src/Components/Facility/FacilityHome.tsx b/src/Components/Facility/FacilityHome.tsx index 7edbb939b8a..6f73fee4a54 100644 --- a/src/Components/Facility/FacilityHome.tsx +++ b/src/Components/Facility/FacilityHome.tsx @@ -43,6 +43,7 @@ type Props = { }; import Loading from "@/Components/Common/Loading"; +import { Avatar } from "@/Components/Common/Avatar.js"; export const getFacilityFeatureIcon = (featureId: number) => { const feature = FACILITY_FEATURE_TYPES.find((f) => f.id === featureId); if (!feature?.icon) return null; @@ -124,7 +125,7 @@ export const FacilityHome = ({ facilityId }: Props) => { onClick={() => setEditCoverImage(true)} > - {`${hasCoverImage ? "Edit" : "Upload"}`} + {t(hasCoverImage ? "edit" : "upload")}
    ); @@ -181,11 +182,7 @@ export const FacilityHome = ({ facilityId }: Props) => { hasPermissionToEditCoverImage && setEditCoverImage(true) } > -
    )} @@ -210,13 +207,7 @@ export const FacilityHome = ({ facilityId }: Props) => { ) : (
    - - - +
    )} {editCoverImageTooltip} @@ -291,7 +282,10 @@ export const FacilityHome = ({ facilityId }: Props) => {
    {spokesQuery.data?.results.map((spoke) => ( - + ))}
    diff --git a/src/Components/Facility/LocationManagement.tsx b/src/Components/Facility/LocationManagement.tsx index 1aaf57b7233..2223aa2e8fd 100644 --- a/src/Components/Facility/LocationManagement.tsx +++ b/src/Components/Facility/LocationManagement.tsx @@ -16,6 +16,7 @@ import useAuthUser from "../../Common/hooks/useAuthUser"; import useQuery from "../../Utils/request/useQuery"; import Loading from "@/Components/Common/Loading"; +import { cn } from "@/lib/utils"; interface Props { facilityId: string; } @@ -87,14 +88,14 @@ export default function LocationManagement({ facilityId }: Props) { id="add-new-location" href={`/facility/${facilityId}/location/add`} authorizeFor={NonReadOnlyUsers} - className="mr-4 hidden lg:block" + className="hidden lg:block" > Add New Location } > -
    +
    - className="my-8 grid gap-3 @4xl:grid-cols-2 @6xl:grid-cols-3 @[100rem]:grid-cols-4 lg:mx-8"> + className="my-8 grid gap-3 @4xl:grid-cols-2 @6xl:grid-cols-3 @[100rem]:grid-cols-4"> {(item) => ( { - const { loading, data } = useQuery(routes.listFacilityBeds, { + const bedsQuery = useQuery(routes.listFacilityBeds, { query: { facility: facilityId, location: id, }, }); - const totalBeds = data?.count ?? 0; - - if (loading) { - return ; - } + const totalBeds = bedsQuery.data?.count; return (
    @@ -290,13 +287,16 @@ const Location = ({ id="manage-bed-button" variant="secondary" border - className="mt-3 flex w-full items-center justify-between" + className={cn( + "mt-3 flex w-full items-center justify-between", + totalBeds != null && "opacity-50", + )} href={`location/${id}/beds`} > Manage Beds - {totalBeds} + {totalBeds ?? "--"}
    diff --git a/src/Components/Patient/ManagePatients.tsx b/src/Components/Patient/ManagePatients.tsx index 0be6fe6b819..46dad347dd5 100644 --- a/src/Components/Patient/ManagePatients.tsx +++ b/src/Components/Patient/ManagePatients.tsx @@ -471,7 +471,7 @@ export const PatientManager = () => { let patientList: ReactNode[] = []; if (data?.count) { - patientList = data.results.map((patient: any) => { + patientList = data.results.map((patient) => { let patientUrl = ""; if ( patient.last_consultation && @@ -506,7 +506,7 @@ export const PatientManager = () => {
    -
    +
    {patient?.last_consultation?.current_bed && patient?.last_consultation?.discharge_date === null ? (
    @@ -541,9 +541,10 @@ export const PatientManager = () => {
    ) : ( -
    +
    diff --git a/src/Components/Patient/PatientConsentRecordBlock.tsx b/src/Components/Patient/PatientConsentRecordBlock.tsx index 07931380cb6..b66a6cbd8aa 100644 --- a/src/Components/Patient/PatientConsentRecordBlock.tsx +++ b/src/Components/Patient/PatientConsentRecordBlock.tsx @@ -70,10 +70,7 @@ export default function PatientConsentRecordBlockGroup(props: { { - console.log(e.value); - setPatientCodeStatus(e.value); - }} + onChange={(e) => setPatientCodeStatus(e.value)} value={ CONSENT_PATIENT_CODE_STATUS_CHOICES.find( (c) => c.id === patientCodeStatus, diff --git a/src/Components/Patient/PatientHome.tsx b/src/Components/Patient/PatientHome.tsx index f6fe4f28a72..4b88df5bd20 100644 --- a/src/Components/Patient/PatientHome.tsx +++ b/src/Components/Patient/PatientHome.tsx @@ -253,7 +253,7 @@ export const PatientHome = (props: any) => { return ( {
    {field("nationality").value === "India" && ( -
    +
    {
    )} -
    +
    {
    -
    +

    Insurance Details diff --git a/src/Components/Users/ManageUsers.tsx b/src/Components/Users/ManageUsers.tsx index 2a00a2a8305..801ffae03af 100644 --- a/src/Components/Users/ManageUsers.tsx +++ b/src/Components/Users/ManageUsers.tsx @@ -415,7 +415,7 @@ export default function ManageUsers() { }} > -

    Linked Facilities

    +

    {t("linked_facilities")}

    -

    Linked Skills

    +

    {t("linked_skills")}

    {["DistrictAdmin", "StateAdmin"].includes( @@ -781,7 +781,7 @@ export function UserFacilities(props: { user: any }) { selected={facility} setSelected={setFacility} errors="" - className="z-40" + className="z-40 w-full" /> { selected={selectedSkill} setSelected={setSelectedSkill} errors="" + className="w-full" userSkills={skills?.results || []} /> -
    +
    {pages}
    From 45a39301cc938d042f1c568940a9a697abf52140 Mon Sep 17 00:00:00 2001 From: Gigin George Date: Wed, 16 Oct 2024 16:00:22 +0530 Subject: [PATCH 13/25] WIP: Care Plugin Support (#8660) Co-authored-by: Shivank Kacker --- .cursorrules | 23 + .env.docker | 2 + .example.env | 2 + .gitignore | 4 + .nvmrc | 1 + .prettierrc.json | 7 +- README.md | 19 +- care.config.ts | 7 + cypress/e2e/users_spec/UsersHomepage.cy.ts | 2 +- .../pageobject/Facility/FacilityCreation.ts | 2 +- package-lock.json | 1090 ++++++++--------- package.json | 21 +- scripts/setup-care-apps.js | 113 ++ src/App.tsx | 26 +- src/CAREUI/display/Timeline.tsx | 4 +- src/CAREUI/icons/CareIcon.tsx | 39 +- src/CAREUI/icons/icon.js | 49 - src/CAREUI/interactive/LegendInput.tsx | 13 +- src/Common/hooks/useCareApps.ts | 35 + .../CentralLiveMonitoring/index.tsx | 2 +- src/Components/Common/ErrorBoundary.tsx | 36 + src/Components/Common/Sidebar/Sidebar.tsx | 19 +- src/Components/Common/Sidebar/SidebarItem.tsx | 22 +- src/Components/Common/SortDropdown.tsx | 1 + .../Facility/DoctorVideoSlideover.tsx | 2 + .../{HospitalList.tsx => FacilityList.tsx} | 2 +- .../Notifications/ShowPushNotification.tsx | 3 +- src/Components/Users/UserProfile.tsx | 100 +- src/Locale/en.json | 27 +- src/PluginEngine.tsx | 51 + src/Redux/api.tsx | 2 +- src/Routers/AppRouter.tsx | 37 +- src/Routers/routes/AssetRoutes.tsx | 25 +- src/Routers/routes/ConsultationRoutes.tsx | 68 +- .../routes/FacilityInventoryRoutes.tsx | 19 +- src/Routers/routes/FacilityLocationRoutes.tsx | 25 +- src/Routers/routes/FacilityRoutes.tsx | 31 +- src/Routers/routes/HCXRoutes.tsx | 17 +- src/Routers/routes/PatientRoutes.tsx | 26 +- src/Routers/routes/ResourceRoutes.tsx | 12 +- src/Routers/routes/SampleRoutes.tsx | 20 +- src/Routers/routes/ShiftingRoutes.tsx | 11 +- src/Routers/routes/UserRoutes.tsx | 5 +- src/Utils/useTimer.tsx | 2 +- src/pluginTypes.ts | 54 + src/vite-env.d.ts | 1 + tsconfig.json | 5 +- vite.config.mts | 61 +- 48 files changed, 1275 insertions(+), 870 deletions(-) create mode 100644 .cursorrules create mode 100644 .env.docker create mode 100644 .nvmrc create mode 100644 scripts/setup-care-apps.js delete mode 100644 src/CAREUI/icons/icon.js create mode 100644 src/Common/hooks/useCareApps.ts create mode 100644 src/Components/Common/ErrorBoundary.tsx rename src/Components/Facility/{HospitalList.tsx => FacilityList.tsx} (99%) create mode 100644 src/PluginEngine.tsx create mode 100644 src/pluginTypes.ts diff --git a/.cursorrules b/.cursorrules new file mode 100644 index 00000000000..a561180ab91 --- /dev/null +++ b/.cursorrules @@ -0,0 +1,23 @@ +Care is a React Typescript Project, built with Vite and styled with TailwindCSS. + +Care uses a Plugin Architecture. Apps are installed in /apps. + +Care uses a custom useQuery hook to fetch data from the API. APIs are defined in the api.tsx file + +Here's an example of how to use the useQuery hook to fetch data from the API: + +``` +useQuery from "@/Common/hooks/useQuery"; +const { data, loading, error } = useQuery(routes.getFacilityUsers, { + facility_id: "1", +}); + +request from "@/Common/utils/request"; +const { res } = await request(routes.partialUpdateAsset, { + pathParams: { external_id: assetId }, + body: data, +}); +``` + + + diff --git a/.env.docker b/.env.docker new file mode 100644 index 00000000000..fb5179c6c50 --- /dev/null +++ b/.env.docker @@ -0,0 +1,2 @@ +# Care API URL without the /api prefix +REACT_CARE_API_URL=http://localhost:9000 \ No newline at end of file diff --git a/.example.env b/.example.env index f3f303bc1e3..0ce9043b9a3 100644 --- a/.example.env +++ b/.example.env @@ -16,6 +16,8 @@ REACT_PLAUSIBLE_SITE_DOMAIN= # Plausible server URL (default: https://plausible.10bedicu.in) REACT_PLAUSIBLE_SERVER_URL= +# Care Apps. repo@branch seperated by commas +REACT_ENABLED_APPS="ohcnetwork/care_livekit_fe@main,ohcnetwork/care_scribe" # Main logo (JSON string with light and dark properties) REACT_HEADER_LOGO= diff --git a/.gitignore b/.gitignore index d8e2615c727..000a965c44a 100644 --- a/.gitignore +++ b/.gitignore @@ -58,3 +58,7 @@ bun.lockb # Cypress cypress/downloads cypress/fixtures/token.json + +# Care Apps +/apps/* +src/pluginMap.ts diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 00000000000..2edeafb09db --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +20 \ No newline at end of file diff --git a/.prettierrc.json b/.prettierrc.json index e3a9c2acae9..ba722afdd73 100644 --- a/.prettierrc.json +++ b/.prettierrc.json @@ -5,7 +5,6 @@ "semi": true, "jsxSingleQuote": false, "arrowParens": "always", - "tailwindFunctions": [ - "classNames" - ] -} \ No newline at end of file + "tailwindFunctions": ["classNames"], + "plugins": ["prettier-plugin-tailwindcss"] +} diff --git a/README.md b/README.md index 73ce06815d1..7ea8fe1a221 100644 --- a/README.md +++ b/README.md @@ -8,20 +8,22 @@

    Our goal is to continuously improve the quality and accessibility of public healthcare services using digital tools.

    -

    🚀 Staging Deploy

    -

    +

    🚀 Staging Deployment

    +
    + +[![Netlify Status](https://api.netlify.com/api/v1/badges/de76351f-b1f0-4bf8-8445-d9faf6391b13/deploy-status)](https://app.netlify.com/sites/care-ohc/deploys) + +

    Auto deployed to care.ohc.network for develop branch. All pull requests have preview builds powered by Netlify.

    [![](https://sourcerer.io/fame/tomahawk-pilot/ohcnetwork/care_fe/images/0)](https://sourcerer.io/fame/tomahawk-pilot/ohcnetwork/care_fe/links/0)[![](https://sourcerer.io/fame/tomahawk-pilot/ohcnetwork/care_fe/images/1)](https://sourcerer.io/fame/tomahawk-pilot/ohcnetwork/care_fe/links/1)[![](https://sourcerer.io/fame/tomahawk-pilot/ohcnetwork/care_fe/images/2)](https://sourcerer.io/fame/tomahawk-pilot/ohcnetwork/care_fe/links/2)[![](https://sourcerer.io/fame/tomahawk-pilot/ohcnetwork/care_fe/images/3)](https://sourcerer.io/fame/tomahawk-pilot/ohcnetwork/care_fe/links/3)[![](https://sourcerer.io/fame/tomahawk-pilot/ohcnetwork/care_fe/images/4)](https://sourcerer.io/fame/tomahawk-pilot/ohcnetwork/care_fe/links/4)[![](https://sourcerer.io/fame/tomahawk-pilot/ohcnetwork/care_fe/images/5)](https://sourcerer.io/fame/tomahawk-pilot/ohcnetwork/care_fe/links/5)[![](https://sourcerer.io/fame/tomahawk-pilot/ohcnetwork/care_fe/images/6)](https://sourcerer.io/fame/tomahawk-pilot/ohcnetwork/care_fe/links/6)[![](https://sourcerer.io/fame/tomahawk-pilot/ohcnetwork/care_fe/images/7)](https://sourcerer.io/fame/tomahawk-pilot/ohcnetwork/care_fe/links/7) -[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=coronasafe_care_fe&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=coronasafe_care_fe) ![Code scanning - action](https://github.com/ohcnetwork/care_fe/workflows/Code%20scanning%20-%20action/badge.svg) ![OSSAR](https://github.com/ohcnetwork/care_fe/workflows/OSSAR/badge.svg) [![Cypress Tests](https://img.shields.io/endpoint?url=https://cloud.cypress.io/badge/simple/wf7d2m/develop&style=flat&logo=cypress)](https://cloud.cypress.io/projects/wf7d2m/runs) ![Staging Release](https://github.com/ohcnetwork/care_fe/workflows/CARE%20Develop%20Registry/badge.svg) ![Production Release](https://github.com/ohcnetwork/care_fe/workflows/Production%20Release/badge.svg) [![Codacy Badge](https://api.codacy.com/project/badge/Grade/200482ab117e4b5397ff3f5ae5719aa2)](https://www.codacy.com/gh/ohcnetwork/care_fe?utm_source=github.com&utm_medium=referral&utm_content=ohcnetwork/care_fe&utm_campaign=Badge_Grade) -[![CircleCI](https://circleci.com/gh/ohcnetwork/care_fe.svg?style=svg)](https://circleci.com/gh/ohcnetwork/care_fe) [![Maintainability](https://api.codeclimate.com/v1/badges/f1438f693aa459805301/maintainability)](https://codeclimate.com/github/ohcnetwork/care_fe/maintainability) ## Getting started @@ -33,7 +35,14 @@ #### Install the required dependencies ```sh -npm install +npm run install-all +``` +#### First-time setup + +For first-time setup, run the following command to generate the pluginMap and install plugin configurations: + +```sh +npm run setup ``` #### 🏃 Run the app in development mode diff --git a/care.config.ts b/care.config.ts index c032ba613f3..ed82d69554a 100644 --- a/care.config.ts +++ b/care.config.ts @@ -103,6 +103,13 @@ const careConfig = { abdm: { enabled: (env.REACT_ENABLE_ABDM ?? "true") === "true", }, + + careApps: env.REACT_ENABLED_APPS + ? env.REACT_ENABLED_APPS.split(",").map((app) => ({ + branch: app.split("@")[1], + package: app.split("@")[0], + })) + : [], } as const; export default careConfig; diff --git a/cypress/e2e/users_spec/UsersHomepage.cy.ts b/cypress/e2e/users_spec/UsersHomepage.cy.ts index 0cf25cacfc8..634336a4ef9 100644 --- a/cypress/e2e/users_spec/UsersHomepage.cy.ts +++ b/cypress/e2e/users_spec/UsersHomepage.cy.ts @@ -14,7 +14,7 @@ describe("User Homepage", () => { const altPhoneNumber = "8878825662"; const homeFacility = "Dummy Facility 40"; const nurseUserName = "dummynurse1"; - const doctorUserName = "devdoctor"; + const doctorUserName = "devdoctor1"; before(() => { loginPage.loginAsDisctrictAdmin(); diff --git a/cypress/pageobject/Facility/FacilityCreation.ts b/cypress/pageobject/Facility/FacilityCreation.ts index 26f387935ac..fe838a88f41 100644 --- a/cypress/pageobject/Facility/FacilityCreation.ts +++ b/cypress/pageobject/Facility/FacilityCreation.ts @@ -297,7 +297,7 @@ class FacilityPage { selectLocation(location: string) { cy.intercept("https://maps.googleapis.com/**").as("mapApi"); - cy.get("span > svg.care-svg-icon__baseline.care-l-map-marker").click(); + cy.get("#facility-location-button").click(); cy.wait("@mapApi").its("response.statusCode").should("eq", 200); cy.get("input#pac-input").type(location).type("{enter}"); cy.wait(2000); diff --git a/package-lock.json b/package-lock.json index e66a3ea4ead..e5bae3c6d02 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,9 @@ "name": "care_fe", "version": "2.5.4", "license": "MIT", + "workspaces": [ + "apps/*" + ], "dependencies": { "@fontsource/figtree": "^5.1.0", "@googlemaps/react-wrapper": "^1.1.35", @@ -20,7 +23,7 @@ "@radix-ui/react-slot": "^1.1.0", "@radix-ui/react-toast": "^1.2.2", "@sentry/browser": "^8.33.0", - "@yudiel/react-qr-scanner": "^2.0.0-beta.3", + "@yudiel/react-qr-scanner": "^2.0.8", "axios": "^1.7.7", "bowser": "^2.11.0", "browser-image-compression": "^2.0.2", @@ -68,7 +71,7 @@ "@types/lodash-es": "^4.17.12", "@types/node": "^22.7.4", "@types/qrcode.react": "^1.0.5", - "@types/react": "18.3.2", + "@types/react": "^18.3.11", "@types/react-copy-to-clipboard": "^5.0.7", "@types/react-csv": "^1.1.10", "@types/react-dom": "^18.3.0", @@ -79,6 +82,7 @@ "autoprefixer": "^10.4.19", "cypress-localstorage-commands": "^2.2.5", "cypress-split": "^1.23.2", + "dotenv": "^16.4.5", "eslint-config-prettier": "^9.1.0", "eslint-plugin-i18next": "^6.0.9", "eslint-plugin-mdx": "^3.1.5", @@ -106,6 +110,24 @@ "node": ">=20.12.0" } }, + "apps/care_livekit_fe": { + "name": "care-livekit", + "version": "0.0.1", + "license": "ISC", + "dependencies": { + "@livekit/components-react": "^2.6.2", + "@livekit/components-styles": "^1.1.3", + "livekit-client": "^2.5.5" + }, + "devDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + }, + "peerDependencies": { + "react": "18.3.1", + "react-dom": "18.3.1" + } + }, "node_modules/@actions/core": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.11.1.tgz", @@ -178,18 +200,18 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.7.tgz", - "integrity": "sha512-9ickoLz+hcXCeh7jrcin+/SLWm+GkxE2kTvoYyp38p4WkdFXfQJxDFGWp/YHjiKLPx06z2A7W8XKuqbReXDzsw==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.8.tgz", + "integrity": "sha512-ZsysZyXY4Tlx+Q53XdnOFmqwfB9QDTHYxaZYajWRoBLuLEAwI2UIbtxOjWh/cFaa9IKUlcB+DDuoskLuKu56JA==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.7.tgz", - "integrity": "sha512-yJ474Zv3cwiSOO9nXJuqzvwEeM+chDuQ8GJirw+pZ91sCGCyOZ3dJkVE09fTV0VEVzXyLWhh3G/AolYTPX7Mow==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.8.tgz", + "integrity": "sha512-Oixnb+DzmRT30qu9d3tJSQkxuygWm32DFykT4bRoORPa9hZ/L4KhVB/XiRm6KG+roIEM7DBQlmg27kw2HZkdZg==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", @@ -198,10 +220,10 @@ "@babel/helper-compilation-targets": "^7.25.7", "@babel/helper-module-transforms": "^7.25.7", "@babel/helpers": "^7.25.7", - "@babel/parser": "^7.25.7", + "@babel/parser": "^7.25.8", "@babel/template": "^7.25.7", "@babel/traverse": "^7.25.7", - "@babel/types": "^7.25.7", + "@babel/types": "^7.25.8", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -636,12 +658,12 @@ } }, "node_modules/@babel/parser": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.7.tgz", - "integrity": "sha512-aZn7ETtQsjjGG5HruveUK06cU3Hljuhd9Iojm4M8WWv3wLE6OkE5PWbDUkItmMgegmccaITudyuW5RPYrYlgWw==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.8.tgz", + "integrity": "sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==", "dev": true, "dependencies": { - "@babel/types": "^7.25.7" + "@babel/types": "^7.25.8" }, "bin": { "parser": "bin/babel-parser.js" @@ -741,69 +763,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-import-assertions": { "version": "7.25.7", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.25.7.tgz", @@ -834,30 +793,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-jsx": { "version": "7.25.7", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.7.tgz", @@ -873,108 +808,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-unicode-sets-regex": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", @@ -1007,14 +840,13 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.7.tgz", - "integrity": "sha512-4B6OhTrwYKHYYgcwErvZjbmH9X5TxQBsaBHdzEIB4l71gR5jh/tuHGlb9in47udL2+wVUcOz5XXhhfhVJwEpEg==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.8.tgz", + "integrity": "sha512-9ypqkozyzpG+HxlH4o4gdctalFGIjjdufzo7I2XPda0iBnZ6a+FO0rIEQcdSPXp02CkvGsII1exJhmROPQd5oA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.25.7", "@babel/helper-remap-async-to-generator": "^7.25.7", - "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/traverse": "^7.25.7" }, "engines": { @@ -1088,14 +920,13 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.25.7.tgz", - "integrity": "sha512-rvUUtoVlkDWtDWxGAiiQj0aNktTPn3eFynBcMC2IhsXweehwgdI9ODe+XjWw515kEmv22sSOTp/rxIRuTiB7zg==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.25.8.tgz", + "integrity": "sha512-e82gl3TCorath6YLf9xUwFehVvjvfqFhdOo4+0iVIVju+6XOi5XHkqB3P2AXnSwoeTX0HBoXq5gJFtvotJzFnQ==", "dev": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/plugin-syntax-class-static-block": "^7.14.5" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1212,13 +1043,12 @@ } }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.7.tgz", - "integrity": "sha512-UvcLuual4h7/GfylKm2IAA3aph9rwvAM2XBA0uPKU3lca+Maai4jBjjEVUS568ld6kJcgbouuumCBhMd/Yz17w==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.8.tgz", + "integrity": "sha512-gznWY+mr4ZQL/EWPcbBQUP3BXS5FwZp8RUOw06BaRn8tQLzN4XLIxXejpHN9Qo8x8jjBmAAKp6FoS51AgkSA/A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1244,13 +1074,12 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.7.tgz", - "integrity": "sha512-h3MDAP5l34NQkkNulsTNyjdaR+OiB0Im67VU//sFupouP8Q6m9Spy7l66DcaAQxtmCqGdanPByLsnwFttxKISQ==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.8.tgz", + "integrity": "sha512-sPtYrduWINTQTW7FtOy99VCTWp4H23UX7vYcut7S4CIMEXU+54zKX9uCoGkLsWXteyaMXzVHgzWbLfQ1w4GZgw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1293,13 +1122,12 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.7.tgz", - "integrity": "sha512-Ot43PrL9TEAiCe8C/2erAjXMeVSnE/BLEx6eyrKLNFCCw5jvhTHKyHxdI1pA0kz5njZRYAnMO2KObGqOCRDYSA==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.8.tgz", + "integrity": "sha512-4OMNv7eHTmJ2YXs3tvxAfa/I43di+VcF+M4Wt66c88EAED1RoGaf1D64cL5FkRpNL+Vx9Hds84lksWvd/wMIdA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/plugin-syntax-json-strings": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1324,13 +1152,12 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.7.tgz", - "integrity": "sha512-iImzbA55BjiovLyG2bggWS+V+OLkaBorNvc/yJoeeDQGztknRnDdYfp2d/UPmunZYEnZi6Lg8QcTmNMHOB0lGA==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.8.tgz", + "integrity": "sha512-f5W0AhSbbI+yY6VakT04jmxdxz+WsID0neG7+kQZbCOjuyJNdL5Nn4WIBm4hRpKnUcO9lP0eipUhFN12JpoH8g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1453,13 +1280,12 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.7.tgz", - "integrity": "sha512-FbuJ63/4LEL32mIxrxwYaqjJxpbzxPVQj5a+Ebrc8JICV6YX8nE53jY+K0RZT3um56GoNWgkS2BQ/uLGTjtwfw==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.8.tgz", + "integrity": "sha512-Z7WJJWdQc8yCWgAmjI3hyC+5PXIubH9yRKzkl9ZEG647O9szl9zvmKLzpbItlijBnVhTUf1cpyWBsZ3+2wjWPQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1469,13 +1295,12 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.7.tgz", - "integrity": "sha512-8CbutzSSh4hmD+jJHIA8vdTNk15kAzOnFLVVgBSMGr28rt85ouT01/rezMecks9pkU939wDInImwCKv4ahU4IA==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.8.tgz", + "integrity": "sha512-rm9a5iEFPS4iMIy+/A/PiS0QN0UyjPIeVvbU5EMZFKJZHt8vQnasbpo3T3EFcxzCeYO0BHfc4RqooCZc51J86Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1485,14 +1310,13 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.7.tgz", - "integrity": "sha512-1JdVKPhD7Y5PvgfFy0Mv2brdrolzpzSoUq2pr6xsR+m+3viGGeHEokFKsCgOkbeFOQxfB1Vt2F0cPJLRpFI4Zg==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.8.tgz", + "integrity": "sha512-LkUu0O2hnUKHKE7/zYOIjByMa4VRaV2CD/cdGz0AxU9we+VA3kDDggKEzI0Oz1IroG+6gUP6UmWEHBMWZU316g==", "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.25.7", "@babel/helper-plugin-utils": "^7.25.7", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-transform-parameters": "^7.25.7" }, "engines": { @@ -1519,13 +1343,12 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.7.tgz", - "integrity": "sha512-m9obYBA39mDPN7lJzD5WkGGb0GO54PPLXsbcnj1Hyeu8mSRz7Gb4b1A6zxNX32ZuUySDK4G6it8SDFWD1nCnqg==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.8.tgz", + "integrity": "sha512-EbQYweoMAHOn7iJ9GgZo14ghhb9tTjgOc88xFgYngifx7Z9u580cENCV159M4xDh3q/irbhSjZVpuhpC2gKBbg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1535,14 +1358,13 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.7.tgz", - "integrity": "sha512-h39agClImgPWg4H8mYVAbD1qP9vClFbEjqoJmt87Zen8pjqK8FTPUwrOXAvqu5soytwxrLMd2fx2KSCp2CHcNg==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.8.tgz", + "integrity": "sha512-q05Bk7gXOxpTHoQ8RSzGSh/LHVB9JEIkKnk3myAWwZHnYiTGYtbdrYkIsS8Xyh4ltKf7GNUSgzs/6P2bJtBAQg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1583,15 +1405,14 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.7.tgz", - "integrity": "sha512-LzA5ESzBy7tqj00Yjey9yWfs3FKy4EmJyKOSWld144OxkTji81WWnUT8nkLUn+imN/zHL8ZQlOu/MTUAhHaX3g==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.8.tgz", + "integrity": "sha512-8Uh966svuB4V8RHHg0QJOB32QK287NBksJOByoKmHMp1TAobNniNalIkI2i5IPj5+S9NYCG4VIjbEuiSN8r+ow==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.7", "@babel/helper-create-class-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + "@babel/helper-plugin-utils": "^7.25.7" }, "engines": { "node": ">=6.9.0" @@ -1786,12 +1607,12 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.7.tgz", - "integrity": "sha512-Gibz4OUdyNqqLj+7OAvBZxOD7CklCtMA5/j0JgUEwOnaRULsPDXmic2iKxL2DX2vQduPR5wH2hjZas/Vr/Oc0g==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.8.tgz", + "integrity": "sha512-58T2yulDHMN8YMUxiLq5YmWUnlDCyY1FsHM+v12VMx+1/FlrUj5tY50iDCpofFQEM8fMYOaY9YRvym2jcjn1Dg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.25.7", + "@babel/compat-data": "^7.25.8", "@babel/helper-compilation-targets": "^7.25.7", "@babel/helper-plugin-utils": "^7.25.7", "@babel/helper-validator-option": "^7.25.7", @@ -1801,45 +1622,30 @@ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.7", "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.7", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-import-assertions": "^7.25.7", "@babel/plugin-syntax-import-attributes": "^7.25.7", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", "@babel/plugin-transform-arrow-functions": "^7.25.7", - "@babel/plugin-transform-async-generator-functions": "^7.25.7", + "@babel/plugin-transform-async-generator-functions": "^7.25.8", "@babel/plugin-transform-async-to-generator": "^7.25.7", "@babel/plugin-transform-block-scoped-functions": "^7.25.7", "@babel/plugin-transform-block-scoping": "^7.25.7", "@babel/plugin-transform-class-properties": "^7.25.7", - "@babel/plugin-transform-class-static-block": "^7.25.7", + "@babel/plugin-transform-class-static-block": "^7.25.8", "@babel/plugin-transform-classes": "^7.25.7", "@babel/plugin-transform-computed-properties": "^7.25.7", "@babel/plugin-transform-destructuring": "^7.25.7", "@babel/plugin-transform-dotall-regex": "^7.25.7", "@babel/plugin-transform-duplicate-keys": "^7.25.7", "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.7", - "@babel/plugin-transform-dynamic-import": "^7.25.7", + "@babel/plugin-transform-dynamic-import": "^7.25.8", "@babel/plugin-transform-exponentiation-operator": "^7.25.7", - "@babel/plugin-transform-export-namespace-from": "^7.25.7", + "@babel/plugin-transform-export-namespace-from": "^7.25.8", "@babel/plugin-transform-for-of": "^7.25.7", "@babel/plugin-transform-function-name": "^7.25.7", - "@babel/plugin-transform-json-strings": "^7.25.7", + "@babel/plugin-transform-json-strings": "^7.25.8", "@babel/plugin-transform-literals": "^7.25.7", - "@babel/plugin-transform-logical-assignment-operators": "^7.25.7", + "@babel/plugin-transform-logical-assignment-operators": "^7.25.8", "@babel/plugin-transform-member-expression-literals": "^7.25.7", "@babel/plugin-transform-modules-amd": "^7.25.7", "@babel/plugin-transform-modules-commonjs": "^7.25.7", @@ -1847,15 +1653,15 @@ "@babel/plugin-transform-modules-umd": "^7.25.7", "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.7", "@babel/plugin-transform-new-target": "^7.25.7", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.7", - "@babel/plugin-transform-numeric-separator": "^7.25.7", - "@babel/plugin-transform-object-rest-spread": "^7.25.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.8", + "@babel/plugin-transform-numeric-separator": "^7.25.8", + "@babel/plugin-transform-object-rest-spread": "^7.25.8", "@babel/plugin-transform-object-super": "^7.25.7", - "@babel/plugin-transform-optional-catch-binding": "^7.25.7", - "@babel/plugin-transform-optional-chaining": "^7.25.7", + "@babel/plugin-transform-optional-catch-binding": "^7.25.8", + "@babel/plugin-transform-optional-chaining": "^7.25.8", "@babel/plugin-transform-parameters": "^7.25.7", "@babel/plugin-transform-private-methods": "^7.25.7", - "@babel/plugin-transform-private-property-in-object": "^7.25.7", + "@babel/plugin-transform-private-property-in-object": "^7.25.8", "@babel/plugin-transform-property-literals": "^7.25.7", "@babel/plugin-transform-regenerator": "^7.25.7", "@babel/plugin-transform-reserved-words": "^7.25.7", @@ -1958,9 +1764,9 @@ } }, "node_modules/@babel/types": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.7.tgz", - "integrity": "sha512-vwIVdXG+j+FOpkwqHRcBgHLYNL7XMkufrlaFvL9o6Ai9sJn9+PdyIL5qa0XzTZw084c+u9LOls53eoZWP/W5WQ==", + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.8.tgz", + "integrity": "sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==", "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.25.7", @@ -1971,6 +1777,11 @@ "node": ">=6.9.0" } }, + "node_modules/@bufbuild/protobuf": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-1.10.0.tgz", + "integrity": "sha512-QDdVFLoN93Zjg36NoQPZfsVH9tZew7wKDKyV5qRdj8ntT4wQCOradQjRaTdwMhWUYsgKsvCINKKm87FdEk96Ag==" + }, "node_modules/@colors/colors": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", @@ -2539,9 +2350,9 @@ } }, "node_modules/@floating-ui/react": { - "version": "0.26.24", - "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.24.tgz", - "integrity": "sha512-2ly0pCkZIGEQUq5H8bBK0XJmc1xIK/RM3tvVzY3GBER7IOD1UgmC2Y2tjj4AuS+TC+vTE1KJv2053290jua0Sw==", + "version": "0.26.25", + "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.25.tgz", + "integrity": "sha512-hZOmgN0NTOzOuZxI1oIrDu3Gcl8WViIkvPMpB4xdd4QD6xAMtwgwr3VPoiyH/bLtRcS1cDnhxLSD1NsMJmwh/A==", "dependencies": { "@floating-ui/react-dom": "^2.1.2", "@floating-ui/utils": "^0.2.8", @@ -2596,9 +2407,9 @@ "integrity": "sha512-3iHuO8H0jPehftsMK0kgyJzPYU/g/oiTRw+wu/yltqSZ7wJPt3vfsJHkPiuRpQjbnnWygX+T3mkRGyK/eyZ/lw==" }, "node_modules/@headlessui/react": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-2.1.9.tgz", - "integrity": "sha512-ckWw7vlKtnoa1fL2X0fx1a3t/Li9MIKDVXn3SgG65YlxvDAsNrY39PPCxVM7sQRA7go2fJsuHSSauKFNaJHH7A==", + "version": "2.1.10", + "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-2.1.10.tgz", + "integrity": "sha512-6mLa2fjMDAFQi+/R10B+zU3edsUk/MDtENB2zHho0lqKU1uzhAfJLUduWds4nCo8wbl3vULtC5rJfZAQ1yqIng==", "dependencies": { "@floating-ui/react": "^0.26.16", "@react-aria/focus": "^3.17.1", @@ -2834,6 +2645,64 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@livekit/components-core": { + "version": "0.11.9", + "resolved": "https://registry.npmjs.org/@livekit/components-core/-/components-core-0.11.9.tgz", + "integrity": "sha512-LPE1BZ+YTaqsVqGy/GAlpiO5rEI8XpEaf1TQcGdZN1BCBas9hTHt7/aHMbHQJ0K5xuAFQx8is6dFe451T4qXIQ==", + "dependencies": { + "@floating-ui/dom": "1.6.11", + "loglevel": "1.9.1", + "rxjs": "7.8.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "livekit-client": "^2.5.7", + "tslib": "^2.6.2" + } + }, + "node_modules/@livekit/components-react": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@livekit/components-react/-/components-react-2.6.5.tgz", + "integrity": "sha512-G3BpBlKy+lWTV9MH3/oBTBC17Z8CWqZ9GnjcG/xmYI0IvqmY89tVWph7cj2Bq0taniA+mD3U9EMPr68fOb1m1g==", + "dependencies": { + "@livekit/components-core": "0.11.9", + "clsx": "2.1.1", + "usehooks-ts": "3.1.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@livekit/krisp-noise-filter": "^0.2.12", + "livekit-client": "^2.5.7", + "react": ">=18", + "react-dom": ">=18", + "tslib": "^2.6.2" + }, + "peerDependenciesMeta": { + "@livekit/krisp-noise-filter": { + "optional": true + } + } + }, + "node_modules/@livekit/components-styles": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@livekit/components-styles/-/components-styles-1.1.4.tgz", + "integrity": "sha512-QCupn7tQ/dy/WZclrfsgtDe8peiGYS6Ied1IGkKOysaXo04l90t62SIUTKyxgd0dNDhUDC0p34qCggGZs/44lQ==", + "engines": { + "node": ">=18" + } + }, + "node_modules/@livekit/protocol": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@livekit/protocol/-/protocol-1.24.0.tgz", + "integrity": "sha512-9dCsqnkMn7lvbI4NGh18zhLDsrXyUcpS++TEFgEk5Xv1WM3R2kT3EzqgL1P/mr3jaabM6rJ8wZA/KJLuQNpF5w==", + "dependencies": { + "@bufbuild/protobuf": "^1.10.0" + } + }, "node_modules/@mapbox/node-pre-gyp": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", @@ -3556,11 +3425,11 @@ } }, "node_modules/@react-aria/focus": { - "version": "3.18.3", - "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.18.3.tgz", - "integrity": "sha512-WKUElg+5zS0D3xlVn8MntNnkzJql2J6MuzAMP8Sv5WTgFDse/XGR842dsxPTIyKKdrWVCRegCuwa4m3n/GzgJw==", + "version": "3.18.4", + "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.18.4.tgz", + "integrity": "sha512-91J35077w9UNaMK1cpMUEFRkNNz0uZjnSwiyBCFuRdaVuivO53wNC9XtWSDNDdcO5cGy87vfJRVAiyoCn/mjqA==", "dependencies": { - "@react-aria/interactions": "^3.22.3", + "@react-aria/interactions": "^3.22.4", "@react-aria/utils": "^3.25.3", "@react-types/shared": "^3.25.0", "@swc/helpers": "^0.5.0", @@ -3571,9 +3440,9 @@ } }, "node_modules/@react-aria/interactions": { - "version": "3.22.3", - "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.22.3.tgz", - "integrity": "sha512-RRUb/aG+P0IKTIWikY/SylB6bIbLZeztnZY2vbe7RAG5MgVaCgn5HQ45SI15GlTmhsFG8CnF6slJsUFJiNHpbQ==", + "version": "3.22.4", + "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.22.4.tgz", + "integrity": "sha512-E0vsgtpItmknq/MJELqYJwib+YN18Qag8nroqwjk1qOnBa9ROIkUhWJerLi1qs5diXq9LHKehZDXRlwPvdEFww==", "dependencies": { "@react-aria/ssr": "^3.9.6", "@react-aria/utils": "^3.25.3", @@ -3926,145 +3795,145 @@ ] }, "node_modules/@sentry-internal/browser-utils": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-8.33.1.tgz", - "integrity": "sha512-TW6/r+Gl5jiXv54iK1xZ3mlVgTS/jaBp4vcQ0xGMdgiQ3WchEPcFSeYovL+YHT3tSud0GZqVtDQCz+5i76puqA==", + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-8.34.0.tgz", + "integrity": "sha512-4AcYOzPzD1tL5eSRQ/GpKv5enquZf4dMVUez99/Bh3va8qiJrNP55AcM7UzZ7WZLTqKygIYruJTU5Zu2SpEAPQ==", "dependencies": { - "@sentry/core": "8.33.1", - "@sentry/types": "8.33.1", - "@sentry/utils": "8.33.1" + "@sentry/core": "8.34.0", + "@sentry/types": "8.34.0", + "@sentry/utils": "8.34.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry-internal/feedback": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-8.33.1.tgz", - "integrity": "sha512-qauMRTm3qDaLqZ3ibI03cj4gLF40y0ij65nj+cns6iWxGCtPrO8tjvXFWuQsE7Aye9dGMnBgmv7uN+NTUtC3RA==", + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-8.34.0.tgz", + "integrity": "sha512-aYSM2KPUs0FLPxxbJCFSwCYG70VMzlT04xepD1Y/tTlPPOja/02tSv2tyOdZbv8Uw7xslZs3/8Lhj74oYcTBxw==", "dependencies": { - "@sentry/core": "8.33.1", - "@sentry/types": "8.33.1", - "@sentry/utils": "8.33.1" + "@sentry/core": "8.34.0", + "@sentry/types": "8.34.0", + "@sentry/utils": "8.34.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry-internal/replay": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-8.33.1.tgz", - "integrity": "sha512-fm4coIOjmanU29NOVN9MyaP4fUCOYytbtFqVSKRFNZQ/xAgNeySiBIbUd6IjujMmnOk9bY0WEUMcdm3Uotjdog==", + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-8.34.0.tgz", + "integrity": "sha512-EoMh9NYljNewZK1quY23YILgtNdGgrkzJ9TPsj6jXUG0LZ0Q7N7eFWd0xOEDBvFxrmI3cSXF1i4d1sBb+eyKRw==", "dependencies": { - "@sentry-internal/browser-utils": "8.33.1", - "@sentry/core": "8.33.1", - "@sentry/types": "8.33.1", - "@sentry/utils": "8.33.1" + "@sentry-internal/browser-utils": "8.34.0", + "@sentry/core": "8.34.0", + "@sentry/types": "8.34.0", + "@sentry/utils": "8.34.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry-internal/replay-canvas": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-8.33.1.tgz", - "integrity": "sha512-nsxTFTPCT10Ty/v6+AiST3+yotGP1sUb8xqfKB9fPnS1hZHFryp0NnEls7xFjBsBbZPU1GpFkzrk/E6JFzixDQ==", + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-8.34.0.tgz", + "integrity": "sha512-x8KhZcCDpbKHqFOykYXiamX6x0LRxv6N1OJHoH+XCrMtiDBZr4Yo30d/MaS6rjmKGMtSRij30v+Uq+YWIgxUrg==", "dependencies": { - "@sentry-internal/replay": "8.33.1", - "@sentry/core": "8.33.1", - "@sentry/types": "8.33.1", - "@sentry/utils": "8.33.1" + "@sentry-internal/replay": "8.34.0", + "@sentry/core": "8.34.0", + "@sentry/types": "8.34.0", + "@sentry/utils": "8.34.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry-internal/tracing": { - "version": "7.119.1", - "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.119.1.tgz", - "integrity": "sha512-cI0YraPd6qBwvUA3wQdPGTy8PzAoK0NZiaTN1LM3IczdPegehWOaEG5GVTnpGnTsmBAzn1xnBXNBhgiU4dgcrQ==", + "version": "7.119.2", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.119.2.tgz", + "integrity": "sha512-V2W+STWrafyGJhQv3ulMFXYDwWHiU6wHQAQBShsHVACiFaDrJ2kPRet38FKv4dMLlLlP2xN+ss2e5zv3tYlTiQ==", "dev": true, "dependencies": { - "@sentry/core": "7.119.1", - "@sentry/types": "7.119.1", - "@sentry/utils": "7.119.1" + "@sentry/core": "7.119.2", + "@sentry/types": "7.119.2", + "@sentry/utils": "7.119.2" }, "engines": { "node": ">=8" } }, "node_modules/@sentry-internal/tracing/node_modules/@sentry/core": { - "version": "7.119.1", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.119.1.tgz", - "integrity": "sha512-YUNnH7O7paVd+UmpArWCPH4Phlb5LwrkWVqzFWqL3xPyCcTSof2RL8UmvpkTjgYJjJ+NDfq5mPFkqv3aOEn5Sw==", + "version": "7.119.2", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.119.2.tgz", + "integrity": "sha512-hQr3d2yWq/2lMvoyBPOwXw1IHqTrCjOsU1vYKhAa6w9vGbJZFGhKGGE2KEi/92c3gqGn+gW/PC7cV6waCTDuVA==", "dev": true, "dependencies": { - "@sentry/types": "7.119.1", - "@sentry/utils": "7.119.1" + "@sentry/types": "7.119.2", + "@sentry/utils": "7.119.2" }, "engines": { "node": ">=8" } }, "node_modules/@sentry-internal/tracing/node_modules/@sentry/types": { - "version": "7.119.1", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.119.1.tgz", - "integrity": "sha512-4G2mcZNnYzK3pa2PuTq+M2GcwBRY/yy1rF+HfZU+LAPZr98nzq2X3+mJHNJoobeHRkvVh7YZMPi4ogXiIS5VNQ==", + "version": "7.119.2", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.119.2.tgz", + "integrity": "sha512-ydq1tWsdG7QW+yFaTp0gFaowMLNVikIqM70wxWNK+u98QzKnVY/3XTixxNLsUtnAB4Y+isAzFhrc6Vb5GFdFeg==", "dev": true, "engines": { "node": ">=8" } }, "node_modules/@sentry-internal/tracing/node_modules/@sentry/utils": { - "version": "7.119.1", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.119.1.tgz", - "integrity": "sha512-ju/Cvyeu/vkfC5/XBV30UNet5kLEicZmXSyuLwZu95hEbL+foPdxN+re7pCI/eNqfe3B2vz7lvz5afLVOlQ2Hg==", + "version": "7.119.2", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.119.2.tgz", + "integrity": "sha512-TLdUCvcNgzKP0r9YD7tgCL1PEUp42TObISridsPJ5rhpVGQJvpr+Six0zIkfDUxerLYWZoK8QMm9KgFlPLNQzA==", "dev": true, "dependencies": { - "@sentry/types": "7.119.1" + "@sentry/types": "7.119.2" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/browser": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-8.33.1.tgz", - "integrity": "sha512-c6zI/igexkLwZuGk+u8Rj26ChjxGgkhe6ZbKFsXCYaKAp5ep5X7HQRkkqgbxApiqlC0LduHdd/ymzh139JLg8w==", + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-8.34.0.tgz", + "integrity": "sha512-3HHG2NXxzHq1lVmDy2uRjYjGNf9NsJsTPlOC70vbQdOb+S49EdH/XMPy+J3ruIoyv6Cu0LwvA6bMOM6rHZOgNQ==", "dependencies": { - "@sentry-internal/browser-utils": "8.33.1", - "@sentry-internal/feedback": "8.33.1", - "@sentry-internal/replay": "8.33.1", - "@sentry-internal/replay-canvas": "8.33.1", - "@sentry/core": "8.33.1", - "@sentry/types": "8.33.1", - "@sentry/utils": "8.33.1" + "@sentry-internal/browser-utils": "8.34.0", + "@sentry-internal/feedback": "8.34.0", + "@sentry-internal/replay": "8.34.0", + "@sentry-internal/replay-canvas": "8.34.0", + "@sentry/core": "8.34.0", + "@sentry/types": "8.34.0", + "@sentry/utils": "8.34.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry/core": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.33.1.tgz", - "integrity": "sha512-3SS41suXLFzxL3OQvTMZ6q92ZapELVq2l2SoWlZopcamWhog2Ru0dp2vkunq97kFHb2TzKRTlFH4+4gbT8SJug==", + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.34.0.tgz", + "integrity": "sha512-adrXCTK/zsg5pJ67lgtZqdqHvyx6etMjQW3P82NgWdj83c8fb+zH+K79Z47pD4zQjX0ou2Ws5nwwi4wJbz4bfA==", "dependencies": { - "@sentry/types": "8.33.1", - "@sentry/utils": "8.33.1" + "@sentry/types": "8.34.0", + "@sentry/utils": "8.34.0" }, "engines": { "node": ">=14.18" } }, "node_modules/@sentry/integrations": { - "version": "7.119.1", - "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.119.1.tgz", - "integrity": "sha512-CGmLEPnaBqbUleVqrmGYjRjf5/OwjUXo57I9t0KKWViq81mWnYhaUhRZWFNoCNQHns+3+GPCOMvl0zlawt+evw==", + "version": "7.119.2", + "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.119.2.tgz", + "integrity": "sha512-dCuXKvbUE3gXVVa696SYMjlhSP6CxpMH/gl4Jk26naEB8Xjsn98z/hqEoXLg6Nab73rjR9c/9AdKqBbwVMHyrQ==", "dev": true, "dependencies": { - "@sentry/core": "7.119.1", - "@sentry/types": "7.119.1", - "@sentry/utils": "7.119.1", + "@sentry/core": "7.119.2", + "@sentry/types": "7.119.2", + "@sentry/utils": "7.119.2", "localforage": "^1.8.1" }, "engines": { @@ -4072,103 +3941,103 @@ } }, "node_modules/@sentry/integrations/node_modules/@sentry/core": { - "version": "7.119.1", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.119.1.tgz", - "integrity": "sha512-YUNnH7O7paVd+UmpArWCPH4Phlb5LwrkWVqzFWqL3xPyCcTSof2RL8UmvpkTjgYJjJ+NDfq5mPFkqv3aOEn5Sw==", + "version": "7.119.2", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.119.2.tgz", + "integrity": "sha512-hQr3d2yWq/2lMvoyBPOwXw1IHqTrCjOsU1vYKhAa6w9vGbJZFGhKGGE2KEi/92c3gqGn+gW/PC7cV6waCTDuVA==", "dev": true, "dependencies": { - "@sentry/types": "7.119.1", - "@sentry/utils": "7.119.1" + "@sentry/types": "7.119.2", + "@sentry/utils": "7.119.2" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/integrations/node_modules/@sentry/types": { - "version": "7.119.1", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.119.1.tgz", - "integrity": "sha512-4G2mcZNnYzK3pa2PuTq+M2GcwBRY/yy1rF+HfZU+LAPZr98nzq2X3+mJHNJoobeHRkvVh7YZMPi4ogXiIS5VNQ==", + "version": "7.119.2", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.119.2.tgz", + "integrity": "sha512-ydq1tWsdG7QW+yFaTp0gFaowMLNVikIqM70wxWNK+u98QzKnVY/3XTixxNLsUtnAB4Y+isAzFhrc6Vb5GFdFeg==", "dev": true, "engines": { "node": ">=8" } }, "node_modules/@sentry/integrations/node_modules/@sentry/utils": { - "version": "7.119.1", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.119.1.tgz", - "integrity": "sha512-ju/Cvyeu/vkfC5/XBV30UNet5kLEicZmXSyuLwZu95hEbL+foPdxN+re7pCI/eNqfe3B2vz7lvz5afLVOlQ2Hg==", + "version": "7.119.2", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.119.2.tgz", + "integrity": "sha512-TLdUCvcNgzKP0r9YD7tgCL1PEUp42TObISridsPJ5rhpVGQJvpr+Six0zIkfDUxerLYWZoK8QMm9KgFlPLNQzA==", "dev": true, "dependencies": { - "@sentry/types": "7.119.1" + "@sentry/types": "7.119.2" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/node": { - "version": "7.119.1", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-7.119.1.tgz", - "integrity": "sha512-rpnoQCMxWh/ccjOe+qsmvXAdlTxQHXEWdaltSxnwj7QY+kOGKGP18WTQFLq/gdOBRw9aa6PEQGwhnLfhBXXaYg==", + "version": "7.119.2", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-7.119.2.tgz", + "integrity": "sha512-TPNnqxh+Myooe4jTyRiXrzrM2SH08R4+nrmBls4T7lKp2E5R/3mDSe/YTn5rRcUt1k1hPx1NgO/taG0DoS5cXA==", "dev": true, "dependencies": { - "@sentry-internal/tracing": "7.119.1", - "@sentry/core": "7.119.1", - "@sentry/integrations": "7.119.1", - "@sentry/types": "7.119.1", - "@sentry/utils": "7.119.1" + "@sentry-internal/tracing": "7.119.2", + "@sentry/core": "7.119.2", + "@sentry/integrations": "7.119.2", + "@sentry/types": "7.119.2", + "@sentry/utils": "7.119.2" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/node/node_modules/@sentry/core": { - "version": "7.119.1", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.119.1.tgz", - "integrity": "sha512-YUNnH7O7paVd+UmpArWCPH4Phlb5LwrkWVqzFWqL3xPyCcTSof2RL8UmvpkTjgYJjJ+NDfq5mPFkqv3aOEn5Sw==", + "version": "7.119.2", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.119.2.tgz", + "integrity": "sha512-hQr3d2yWq/2lMvoyBPOwXw1IHqTrCjOsU1vYKhAa6w9vGbJZFGhKGGE2KEi/92c3gqGn+gW/PC7cV6waCTDuVA==", "dev": true, "dependencies": { - "@sentry/types": "7.119.1", - "@sentry/utils": "7.119.1" + "@sentry/types": "7.119.2", + "@sentry/utils": "7.119.2" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/node/node_modules/@sentry/types": { - "version": "7.119.1", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.119.1.tgz", - "integrity": "sha512-4G2mcZNnYzK3pa2PuTq+M2GcwBRY/yy1rF+HfZU+LAPZr98nzq2X3+mJHNJoobeHRkvVh7YZMPi4ogXiIS5VNQ==", + "version": "7.119.2", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.119.2.tgz", + "integrity": "sha512-ydq1tWsdG7QW+yFaTp0gFaowMLNVikIqM70wxWNK+u98QzKnVY/3XTixxNLsUtnAB4Y+isAzFhrc6Vb5GFdFeg==", "dev": true, "engines": { "node": ">=8" } }, "node_modules/@sentry/node/node_modules/@sentry/utils": { - "version": "7.119.1", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.119.1.tgz", - "integrity": "sha512-ju/Cvyeu/vkfC5/XBV30UNet5kLEicZmXSyuLwZu95hEbL+foPdxN+re7pCI/eNqfe3B2vz7lvz5afLVOlQ2Hg==", + "version": "7.119.2", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.119.2.tgz", + "integrity": "sha512-TLdUCvcNgzKP0r9YD7tgCL1PEUp42TObISridsPJ5rhpVGQJvpr+Six0zIkfDUxerLYWZoK8QMm9KgFlPLNQzA==", "dev": true, "dependencies": { - "@sentry/types": "7.119.1" + "@sentry/types": "7.119.2" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/types": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-8.33.1.tgz", - "integrity": "sha512-GjoAMvwtpIemoF/IiwZ7A60g4nQv3qwzR21GvJqDVUoKD0e8pv9OLX+HyXoUat4wEDGSuDUcUyUKD2G+od73QA==", + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-8.34.0.tgz", + "integrity": "sha512-zLRc60CzohGCo6zNsNeQ9JF3SiEeRE4aDCP9fDDdIVCOKovS+mn1rtSip0qd0Vp2fidOu0+2yY0ALCz1A3PJSQ==", "engines": { "node": ">=14.18" } }, "node_modules/@sentry/utils": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-8.33.1.tgz", - "integrity": "sha512-uzuYpiiJuFY3N4WNHMBWUQX5oNv2t/TbG0OHRp3Rr7yeu+HSfD542TIp9/gMZ+G0Cxd8AmVO3wkKIFbk0TL4Qg==", + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-8.34.0.tgz", + "integrity": "sha512-W1KoRlFUjprlh3t86DZPFxLfM6mzjRzshVfMY7vRlJFymBelJsnJ3A1lPeBZM9nCraOSiw6GtOWu6k5BAkiGIg==", "dependencies": { - "@sentry/types": "8.33.1" + "@sentry/types": "8.34.0" }, "engines": { "node": ">=14.18" @@ -4196,14 +4065,14 @@ } }, "node_modules/@swc/core": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.7.26.tgz", - "integrity": "sha512-f5uYFf+TmMQyYIoxkn/evWhNGuUzC730dFwAKGwBVHHVoPyak1/GvJUm6i1SKl+2Hrj9oN0i3WSoWWZ4pgI8lw==", + "version": "1.7.36", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.7.36.tgz", + "integrity": "sha512-bu7ymMX+LCJOSSrKank25Jaq66ymLVA9fOUuy4ck3/6rbXdLw+pIJPnIDKQ9uNcxww8KDxOuJk9Ui9pqR+aGFw==", "dev": true, "hasInstallScript": true, "dependencies": { "@swc/counter": "^0.1.3", - "@swc/types": "^0.1.12" + "@swc/types": "^0.1.13" }, "engines": { "node": ">=10" @@ -4213,16 +4082,16 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.7.26", - "@swc/core-darwin-x64": "1.7.26", - "@swc/core-linux-arm-gnueabihf": "1.7.26", - "@swc/core-linux-arm64-gnu": "1.7.26", - "@swc/core-linux-arm64-musl": "1.7.26", - "@swc/core-linux-x64-gnu": "1.7.26", - "@swc/core-linux-x64-musl": "1.7.26", - "@swc/core-win32-arm64-msvc": "1.7.26", - "@swc/core-win32-ia32-msvc": "1.7.26", - "@swc/core-win32-x64-msvc": "1.7.26" + "@swc/core-darwin-arm64": "1.7.36", + "@swc/core-darwin-x64": "1.7.36", + "@swc/core-linux-arm-gnueabihf": "1.7.36", + "@swc/core-linux-arm64-gnu": "1.7.36", + "@swc/core-linux-arm64-musl": "1.7.36", + "@swc/core-linux-x64-gnu": "1.7.36", + "@swc/core-linux-x64-musl": "1.7.36", + "@swc/core-win32-arm64-msvc": "1.7.36", + "@swc/core-win32-ia32-msvc": "1.7.36", + "@swc/core-win32-x64-msvc": "1.7.36" }, "peerDependencies": { "@swc/helpers": "*" @@ -4234,9 +4103,9 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.7.26.tgz", - "integrity": "sha512-FF3CRYTg6a7ZVW4yT9mesxoVVZTrcSWtmZhxKCYJX9brH4CS/7PRPjAKNk6kzWgWuRoglP7hkjQcd6EpMcZEAw==", + "version": "1.7.36", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.7.36.tgz", + "integrity": "sha512-8vDczXzCgv3ceTPhEivlpGprN44YlrCK1nbfU9g2TrhV/Aiqi09W/eM5zLesdoM1Z3mJl492gc/8nlTkpDdusw==", "cpu": [ "arm64" ], @@ -4250,9 +4119,9 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.7.26.tgz", - "integrity": "sha512-az3cibZdsay2HNKmc4bjf62QVukuiMRh5sfM5kHR/JMTrLyS6vSw7Ihs3UTkZjUxkLTT8ro54LI6sV6sUQUbLQ==", + "version": "1.7.36", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.7.36.tgz", + "integrity": "sha512-Pa2Gao7+Wf5m3SsK4abKRtd48AtoUnJInvaC3d077swBfgZjbjUbQvcpdc2dOeQtWwo49rFqUZJonMsL0jnPgQ==", "cpu": [ "x64" ], @@ -4266,9 +4135,9 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.7.26.tgz", - "integrity": "sha512-VYPFVJDO5zT5U3RpCdHE5v1gz4mmR8BfHecUZTmD2v1JeFY6fv9KArJUpjrHEEsjK/ucXkQFmJ0jaiWXmpOV9Q==", + "version": "1.7.36", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.7.36.tgz", + "integrity": "sha512-3YsMWd7V+WZEjbfBnLkkz/olcRBa8nyoK0iIOnNARJBMcYaJxjkJSMZpmSojCnIVwvjA1N83CPAbUL+W+fCnHg==", "cpu": [ "arm" ], @@ -4282,9 +4151,9 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.7.26.tgz", - "integrity": "sha512-YKevOV7abpjcAzXrhsl+W48Z9mZvgoVs2eP5nY+uoMAdP2b3GxC0Df1Co0I90o2lkzO4jYBpTMcZlmUXLdXn+Q==", + "version": "1.7.36", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.7.36.tgz", + "integrity": "sha512-lqM3aBB7kJazJYOwHeA5OGNLqXoQPZ/76b3dV+XcjN1GhD0CcXz6mW5PRYVin6OSN1eKrKBKJjtDA1mqADDEvw==", "cpu": [ "arm64" ], @@ -4298,9 +4167,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.7.26.tgz", - "integrity": "sha512-3w8iZICMkQQON0uIcvz7+Q1MPOW6hJ4O5ETjA0LSP/tuKqx30hIniCGOgPDnv3UTMruLUnQbtBwVCZTBKR3Rkg==", + "version": "1.7.36", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.7.36.tgz", + "integrity": "sha512-bqei2YDzvUfG0pth5W2xJaj0eG4XWYk0d/NJ75vBX6bkIzK6dC8iuKQ41jOfUWonnrAs7rTDDJW0sTn/evvRdw==", "cpu": [ "arm64" ], @@ -4314,9 +4183,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.7.26.tgz", - "integrity": "sha512-c+pp9Zkk2lqb06bNGkR2Looxrs7FtGDMA4/aHjZcCqATgp348hOKH5WPvNLBl+yPrISuWjbKDVn3NgAvfvpH4w==", + "version": "1.7.36", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.7.36.tgz", + "integrity": "sha512-03maXTUyaBjeCxlDltmdzHje1ryQt1C4OWmmNgSSRXjLb+GNnAenwOJMSrcvHP/aNClD2pwsFCnYKDGy+sYE6w==", "cpu": [ "x64" ], @@ -4330,9 +4199,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.7.26.tgz", - "integrity": "sha512-PgtyfHBF6xG87dUSSdTJHwZ3/8vWZfNIXQV2GlwEpslrOkGqy+WaiiyE7Of7z9AvDILfBBBcJvJ/r8u980wAfQ==", + "version": "1.7.36", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.7.36.tgz", + "integrity": "sha512-XXysqLkvjtQnXm1zHqLhy00UYPv/gk5OtwR732X+piNisnEbcJBqI8Qp9O7YvLWllRcoP8IMBGDWLGdGLSpViA==", "cpu": [ "x64" ], @@ -4346,9 +4215,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.7.26.tgz", - "integrity": "sha512-9TNXPIJqFynlAOrRD6tUQjMq7KApSklK3R/tXgIxc7Qx+lWu8hlDQ/kVPLpU7PWvMMwC/3hKBW+p5f+Tms1hmA==", + "version": "1.7.36", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.7.36.tgz", + "integrity": "sha512-k7+dmb13a/zPw+E4XYfPmLZFWJgcOcBRKIjYl9nQErtYsgsg3Ji6TBbsvJVETy23lNHyewZ17V5Vq6NzaG0hzg==", "cpu": [ "arm64" ], @@ -4362,9 +4231,9 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.7.26.tgz", - "integrity": "sha512-9YngxNcG3177GYdsTum4V98Re+TlCeJEP4kEwEg9EagT5s3YejYdKwVAkAsJszzkXuyRDdnHUpYbTrPG6FiXrQ==", + "version": "1.7.36", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.7.36.tgz", + "integrity": "sha512-ridD3ay6YM2PEYHZXXFN+edYEv0FOynaqOBP+NSnGNHA35azItIjoIe+KNi4WltGtAjpKCHSpjGCNfna12wdYQ==", "cpu": [ "ia32" ], @@ -4378,9 +4247,9 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.7.26.tgz", - "integrity": "sha512-VR+hzg9XqucgLjXxA13MtV5O3C0bK0ywtLIBw/+a+O+Oc6mxFWHtdUeXDbIi5AiPbn0fjgVJMqYnyjGyyX8u0w==", + "version": "1.7.36", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.7.36.tgz", + "integrity": "sha512-j1z2Z1Ln9d0E3dHsPkC1K9XDh0ojhRPwV+GfRTu4D61PE+aYhYLvbJC6xPvL4/204QrStRS7eDu3m+BcDp3rgQ==", "cpu": [ "x64" ], @@ -4408,9 +4277,9 @@ } }, "node_modules/@swc/types": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.12.tgz", - "integrity": "sha512-wBJA+SdtkbFhHjTMYH+dEH1y4VpfGdAc2Kw/LK09i9bXd/K6j6PkDcFCEzb6iVfZMkPRrl/q0e3toqTAJdkIVA==", + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.13.tgz", + "integrity": "sha512-JL7eeCk6zWCbiYQg2xQSdLXQJl8Qoc9rXmG2cEKvHe3CKwMHwHGpfOb8frzNLmbycOo6I51qxnLnn9ESf4I20Q==", "dev": true, "dependencies": { "@swc/counter": "^0.1.3" @@ -4504,9 +4373,9 @@ } }, "node_modules/@types/dom-webcodecs": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/@types/dom-webcodecs/-/dom-webcodecs-0.1.12.tgz", - "integrity": "sha512-vEkwKEr0xAO2xwNNkYhaltT7jMGjrgAbfpRR3qKRN7eW3B7R7O5fm1scx2OKBY6wMACgjCewhu+ljbCdudY+5A==" + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/@types/dom-webcodecs/-/dom-webcodecs-0.1.13.tgz", + "integrity": "sha512-O5hkiFIcjjszPIYyUSyvScyvrBoV3NOEEZx/pMlsu44TKzWNkLVBBxnxJz42in5n3QIolYOcBYFCPZZ0h8SkwQ==" }, "node_modules/@types/emscripten": { "version": "1.39.13", @@ -4634,9 +4503,9 @@ } }, "node_modules/@types/react": { - "version": "18.3.2", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.2.tgz", - "integrity": "sha512-Btgg89dAnqD4vV7R3hlwOxgqobUQKgx3MmrQRi0yYbs/P0ym8XozIAlkqVilPqHQwXs4e9Tf63rrCgl58BcO4w==", + "version": "18.3.11", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.11.tgz", + "integrity": "sha512-r6QZ069rFTjrEYgFdOck1gK7FLVsgJE7tTz0pQBczlBNUhBNk0MQH4UbnFSwjpQLMkLzgqvBBa+qGpLje16eTQ==", "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" @@ -4661,9 +4530,9 @@ } }, "node_modules/@types/react-dom": { - "version": "18.3.0", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", - "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==", "devOptional": true, "dependencies": { "@types/react": "*" @@ -4938,39 +4807,39 @@ } }, "node_modules/@vue/compiler-core": { - "version": "3.5.11", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.11.tgz", - "integrity": "sha512-PwAdxs7/9Hc3ieBO12tXzmTD+Ln4qhT/56S+8DvrrZ4kLDn4Z/AMUr8tXJD0axiJBS0RKIoNaR0yMuQB9v9Udg==", + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.12.tgz", + "integrity": "sha512-ISyBTRMmMYagUxhcpyEH0hpXRd/KqDU4ymofPgl2XAkY9ZhQ+h0ovEZJIiPop13UmR/54oA2cgMDjgroRelaEw==", "dev": true, "dependencies": { "@babel/parser": "^7.25.3", - "@vue/shared": "3.5.11", + "@vue/shared": "3.5.12", "entities": "^4.5.0", "estree-walker": "^2.0.2", "source-map-js": "^1.2.0" } }, "node_modules/@vue/compiler-dom": { - "version": "3.5.11", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.11.tgz", - "integrity": "sha512-pyGf8zdbDDRkBrEzf8p7BQlMKNNF5Fk/Cf/fQ6PiUz9at4OaUfyXW0dGJTo2Vl1f5U9jSLCNf0EZJEogLXoeew==", + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.12.tgz", + "integrity": "sha512-9G6PbJ03uwxLHKQ3P42cMTi85lDRvGLB2rSGOiQqtXELat6uI4n8cNz9yjfVHRPIu+MsK6TE418Giruvgptckg==", "dev": true, "dependencies": { - "@vue/compiler-core": "3.5.11", - "@vue/shared": "3.5.11" + "@vue/compiler-core": "3.5.12", + "@vue/shared": "3.5.12" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.5.11", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.11.tgz", - "integrity": "sha512-gsbBtT4N9ANXXepprle+X9YLg2htQk1sqH/qGJ/EApl+dgpUBdTv3yP7YlR535uHZY3n6XaR0/bKo0BgwwDniw==", + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.12.tgz", + "integrity": "sha512-2k973OGo2JuAa5+ZlekuQJtitI5CgLMOwgl94BzMCsKZCX/xiqzJYzapl4opFogKHqwJk34vfsaKpfEhd1k5nw==", "dev": true, "dependencies": { "@babel/parser": "^7.25.3", - "@vue/compiler-core": "3.5.11", - "@vue/compiler-dom": "3.5.11", - "@vue/compiler-ssr": "3.5.11", - "@vue/shared": "3.5.11", + "@vue/compiler-core": "3.5.12", + "@vue/compiler-dom": "3.5.12", + "@vue/compiler-ssr": "3.5.12", + "@vue/shared": "3.5.12", "estree-walker": "^2.0.2", "magic-string": "^0.30.11", "postcss": "^8.4.47", @@ -4978,19 +4847,19 @@ } }, "node_modules/@vue/compiler-ssr": { - "version": "3.5.11", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.11.tgz", - "integrity": "sha512-P4+GPjOuC2aFTk1Z4WANvEhyOykcvEd5bIj2KVNGKGfM745LaXGr++5njpdBTzVz5pZifdlR1kpYSJJpIlSePA==", + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.12.tgz", + "integrity": "sha512-eLwc7v6bfGBSM7wZOGPmRavSWzNFF6+PdRhE+VFJhNCgHiF8AM7ccoqcv5kBXA2eWUfigD7byekvf/JsOfKvPA==", "dev": true, "dependencies": { - "@vue/compiler-dom": "3.5.11", - "@vue/shared": "3.5.11" + "@vue/compiler-dom": "3.5.12", + "@vue/shared": "3.5.12" } }, "node_modules/@vue/shared": { - "version": "3.5.11", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.11.tgz", - "integrity": "sha512-W8GgysJVnFo81FthhzurdRAWP/byq3q2qIw70e0JWblzVhjgOMiC2GyovXrZTFQJnFVryYaKGP3Tc9vYzYm6PQ==", + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.12.tgz", + "integrity": "sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg==", "dev": true }, "node_modules/@webassemblyjs/ast": { @@ -5171,9 +5040,9 @@ "optional": true }, "node_modules/acorn": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz", + "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==", "bin": { "acorn": "bin/acorn" }, @@ -5731,11 +5600,11 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/barcode-detector": { - "version": "2.2.10", - "resolved": "https://registry.npmjs.org/barcode-detector/-/barcode-detector-2.2.10.tgz", - "integrity": "sha512-fB6285Ahd6PIbru+PRw/CL+T1+dtPQmfCwBAwHmw+IWLLHrKH0q37qlAEHXWxPNM6bEmxgTMgGO+MJu/Si1uJQ==", + "version": "2.2.11", + "resolved": "https://registry.npmjs.org/barcode-detector/-/barcode-detector-2.2.11.tgz", + "integrity": "sha512-N50XZ6Rav2sxTgHXOc38/mkpVJMan11GZ8Yqi1pPMZpTJSXuZ/FpIee6OtLehZX/Vs4ZOzGbp1DgXzFCfKggWA==", "dependencies": { - "@types/dom-webcodecs": "^0.1.12", + "@types/dom-webcodecs": "^0.1.13", "zxing-wasm": "1.2.14" } }, @@ -5961,9 +5830,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001667", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001667.tgz", - "integrity": "sha512-7LTwJjcRkzKFmtqGsibMeuXmvFDfZq/nzIjnmgCGzKKRVzjD72selLDK1oPF/Oxzmt4fNcPvTDvGqSDG4tCALw==", + "version": "1.0.30001669", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001669.tgz", + "integrity": "sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w==", "funding": [ { "type": "opencollective", @@ -5994,6 +5863,10 @@ "node": ">=6" } }, + "node_modules/care-livekit": { + "resolved": "apps/care_livekit_fe", + "link": true + }, "node_modules/caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -6499,12 +6372,12 @@ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, "node_modules/cypress": { - "version": "13.14.2", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.14.2.tgz", - "integrity": "sha512-lsiQrN17vHMB2fnvxIrKLAjOr9bPwsNbPZNrWf99s4u+DVmCY6U+w7O3GGG9FvP4EUVYaDu+guWeNLiUzBrqvA==", + "version": "13.15.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.15.0.tgz", + "integrity": "sha512-53aO7PwOfi604qzOkCSzNlWquCynLlKE/rmmpSPcziRH6LNfaDUAklQT6WJIsD8ywxlIy+uVZsnTMCCQVd2kTw==", "hasInstallScript": true, "dependencies": { - "@cypress/request": "^3.0.1", + "@cypress/request": "^3.0.4", "@cypress/xvfb": "^1.2.4", "@types/sinonjs__fake-timers": "8.1.1", "@types/sizzle": "^2.3.2", @@ -6567,9 +6440,9 @@ } }, "node_modules/cypress-split": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/cypress-split/-/cypress-split-1.24.0.tgz", - "integrity": "sha512-ZEFh1m6z+HwPWpB1h9YAF1L6K/wkPBR3vD+v8Rrg8BRm50sZ7oSx6Dw+sv6zfr5Pfqv247CnobLewdFBLlPIBQ==", + "version": "1.24.4", + "resolved": "https://registry.npmjs.org/cypress-split/-/cypress-split-1.24.4.tgz", + "integrity": "sha512-sKBFQB659Ss5B08GSESeMKXBEpPD2wKNGQR1HYbKT98rnM1x5E+MugzcicqEdsK4T2Ng0feuuZQkz8XniOA18A==", "dev": true, "dependencies": { "@actions/core": "^1.10.0", @@ -6577,7 +6450,7 @@ "console.table": "^0.10.0", "debug": "^4.3.4", "fast-shuffle": "^6.1.0", - "find-cypress-specs": "1.43.4", + "find-cypress-specs": "1.45.2", "globby": "^11.1.0", "humanize-duration": "^3.28.0" }, @@ -7051,6 +6924,18 @@ "node": ">=6.0.0" } }, + "node_modules/dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -7119,9 +7004,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.33", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.33.tgz", - "integrity": "sha512-+cYTcFB1QqD4j4LegwLfpCNxifb6dDFUAwk6RsLusCwIaZI6or2f+q8rs5tTB2YC53HhOlIbEaqHMAAC8IOIwA==" + "version": "1.5.39", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.39.tgz", + "integrity": "sha512-4xkpSR6CjuiaNyvwiWDI85N9AxsvbPawB8xc7yzLPonYTuP19BVgYweKyUMFtHEZgIcHWMt1ks5Cqx2m+6/Grg==" }, "node_modules/emoji-regex": { "version": "8.0.0", @@ -7286,9 +7171,9 @@ } }, "node_modules/es-iterator-helpers": { - "version": "1.0.19", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", - "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.1.0.tgz", + "integrity": "sha512-/SurEfycdyssORP/E+bj4sEu1CWw4EmLDsHynHwSXQ7utgbrMRWW195pTrCjFgFCddf/UkYm3oqKPRq5i8bJbw==", "dev": true, "dependencies": { "call-bind": "^1.0.7", @@ -7298,12 +7183,12 @@ "es-set-tostringtag": "^2.0.3", "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", - "globalthis": "^1.0.3", + "globalthis": "^1.0.4", "has-property-descriptors": "^1.0.2", "has-proto": "^1.0.3", "has-symbols": "^1.0.3", "internal-slot": "^1.0.7", - "iterator.prototype": "^1.1.2", + "iterator.prototype": "^1.1.3", "safe-array-concat": "^1.1.2" }, "engines": { @@ -8024,9 +7909,9 @@ } }, "node_modules/fast-uri": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.2.tgz", - "integrity": "sha512-GR6f0hD7XXyNJa25Tb9BuIdN0tdr+0BMi6/CJPH3wJO1JjNG3n/VsSw38AwRdKZABm8lGbPfakLRkYzx2V9row==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz", + "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==", "dev": true }, "node_modules/fastq": { @@ -8164,16 +8049,16 @@ } }, "node_modules/find-cypress-specs": { - "version": "1.43.4", - "resolved": "https://registry.npmjs.org/find-cypress-specs/-/find-cypress-specs-1.43.4.tgz", - "integrity": "sha512-GAdz6lfBndbOq9OOJ3psThQ56hqgL8tZUCOLnl60d/l56bvHkC0TNwyqlLfBObiscirSZWSgyGL86jJkrpFMrA==", + "version": "1.45.2", + "resolved": "https://registry.npmjs.org/find-cypress-specs/-/find-cypress-specs-1.45.2.tgz", + "integrity": "sha512-D289NM0Dpqoz4+yl8oEtbioqm7zPKQo0hLcvwlg5Z9iBm7EioMIFiOYgluthDNPxUES/aJF+1xHRHAJpC3ejcA==", "dev": true, "dependencies": { "@actions/core": "^1.10.0", "arg": "^5.0.1", "console.table": "^0.10.0", "debug": "^4.3.3", - "find-test-names": "1.28.18", + "find-test-names": "1.28.30", "globby": "^11.1.0", "minimatch": "^3.0.4", "pluralize": "^8.0.0", @@ -8212,13 +8097,13 @@ } }, "node_modules/find-test-names": { - "version": "1.28.18", - "resolved": "https://registry.npmjs.org/find-test-names/-/find-test-names-1.28.18.tgz", - "integrity": "sha512-hhnGdkWK+qEA5Z02Tu0OqGQIUjFZNyOCE4WaJpbhW4hAF1+NZ7OCr0Bss9RCaj7BBtjoIjkU93utobQ8pg2iVg==", + "version": "1.28.30", + "resolved": "https://registry.npmjs.org/find-test-names/-/find-test-names-1.28.30.tgz", + "integrity": "sha512-b5PLJ5WnskdaYHBf+38FN/4TKh5lqwrltITkqxuARsN2bW6civrhqOXbVA+4727YNowYLt/jtIC9Dsn7eJSP6A==", "dev": true, "dependencies": { - "@babel/parser": "^7.23.0", - "@babel/plugin-syntax-jsx": "^7.22.5", + "@babel/parser": "^7.24.7", + "@babel/plugin-syntax-jsx": "^7.24.7", "acorn-walk": "^8.2.0", "debug": "^4.3.3", "globby": "^11.0.4", @@ -8332,9 +8217,9 @@ } }, "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -9178,9 +9063,9 @@ } }, "node_modules/i18next": { - "version": "23.15.2", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.15.2.tgz", - "integrity": "sha512-zcPSWzCvw6uKnuYHIqs4W7hTuB9e3AFcSdZgvCWoPXIZsBjBd4djN2/2uOHIB+1DFFkQnMBXvhNg7J3WyCuywQ==", + "version": "23.16.0", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.16.0.tgz", + "integrity": "sha512-Ni3CG6c14teOogY19YNRl+kYaE/Rb59khy0VyHVn4uOZ97E2E/Yziyi6r3C3s9+wacjdLZiq/LLYyx+Cgd+FCw==", "funding": [ { "type": "individual", @@ -9922,9 +9807,9 @@ "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" }, "node_modules/iterator.prototype": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", - "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.3.tgz", + "integrity": "sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ==", "dev": true, "dependencies": { "define-properties": "^1.2.1", @@ -9932,6 +9817,9 @@ "has-symbols": "^1.0.3", "reflect.getprototypeof": "^1.0.4", "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/jackspeak": { @@ -10691,6 +10579,26 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/livekit-client": { + "version": "2.5.9", + "resolved": "https://registry.npmjs.org/livekit-client/-/livekit-client-2.5.9.tgz", + "integrity": "sha512-oDpK6SKYB1F+mNO+25DA0bF0cD2XoOJeD8ji4YQpzDBQv2IxeyKrQhoqXAqrYgIKuiMNkImSf+yg2v7EHSl4Og==", + "dependencies": { + "@livekit/protocol": "1.24.0", + "events": "^3.3.0", + "loglevel": "^1.8.0", + "sdp-transform": "^2.14.1", + "ts-debounce": "^4.0.0", + "tslib": "2.7.0", + "typed-emitter": "^2.1.0", + "webrtc-adapter": "^9.0.0" + } + }, + "node_modules/livekit-client/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" + }, "node_modules/load-plugin": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/load-plugin/-/load-plugin-6.0.3.tgz", @@ -10791,8 +10699,7 @@ "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" }, "node_modules/lodash.isplainobject": { "version": "4.0.6", @@ -10878,6 +10785,18 @@ "node": ">=8" } }, + "node_modules/loglevel": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.1.tgz", + "integrity": "sha512-hP3I3kCrDIMuRwAwHltphhDM1r8i55H33GgqjXbrisuJhF4kRhW1dNuxsRklp4bXl8DSdLaNLuiL4A/LWRfxvg==", + "engines": { + "node": ">= 0.6.0" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/loglevel" + } + }, "node_modules/long": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", @@ -10915,9 +10834,9 @@ } }, "node_modules/magic-string": { - "version": "0.30.11", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", - "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", + "version": "0.30.12", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.12.tgz", + "integrity": "sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==", "dev": true, "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" @@ -12823,9 +12742,9 @@ } }, "node_modules/nan": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.20.0.tgz", - "integrity": "sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==", + "version": "2.22.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.22.0.tgz", + "integrity": "sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw==", "optional": true }, "node_modules/nanoid": { @@ -13572,9 +13491,9 @@ } }, "node_modules/postcss-load-config/node_modules/yaml": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz", - "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.0.tgz", + "integrity": "sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==", "bin": { "yaml": "bin.mjs" }, @@ -14066,9 +13985,9 @@ } }, "node_modules/react-i18next": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-15.0.2.tgz", - "integrity": "sha512-z0W3/RES9Idv3MmJUcf0mDNeeMOUXe+xoL0kPfQPbDoZHmni/XsIoq5zgT2MCFUiau283GuBUK578uD/mkAbLQ==", + "version": "15.0.3", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-15.0.3.tgz", + "integrity": "sha512-BlO1P+oLKjjIxDBQ0GkAIMacgjfMbnvops+3Y5nZXF7UJ99v4KCWr0Na1azJXC8AMiNWp4kgUcFCJM7U9ZsUDg==", "dependencies": { "@babel/runtime": "^7.25.0", "html-parse-stringify": "^3.0.1" @@ -15762,6 +15681,14 @@ "resolved": "https://registry.npmjs.org/sdp/-/sdp-3.2.0.tgz", "integrity": "sha512-d7wDPgDV3DDiqulJjKiV2865wKsJ34YI+NDREbm+FySq6WuKOikwyNQcm+doLAZ1O6ltdO0SeKle2xMpN3Brgw==" }, + "node_modules/sdp-transform": { + "version": "2.14.2", + "resolved": "https://registry.npmjs.org/sdp-transform/-/sdp-transform-2.14.2.tgz", + "integrity": "sha512-icY6jVao7MfKCieyo1AyxFYm1baiM+fA00qW/KrNNVlkxHAd34riEKuEkUe4bBb3gJwLJZM+xT60Yj1QL8rHiA==", + "bin": { + "sdp-verify": "checker.js" + } + }, "node_modules/semver": { "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", @@ -16585,18 +16512,18 @@ "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==" }, "node_modules/tailwind-merge": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.5.3.tgz", - "integrity": "sha512-d9ZolCAIzom1nf/5p4LdD5zvjmgSxY0BGgdSvmXIoMYAiPdAW/dSpP7joCDYFY7r/HkEa2qmPtkgsu0xjQeQtw==", + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.5.4.tgz", + "integrity": "sha512-0q8cfZHMu9nuYP/b5Shb7Y7Sh1B7Nnl5GqNr1U+n2p6+mybvRtayrQ+0042Z5byvTA8ihjlP8Odo8/VnHbZu4Q==", "funding": { "type": "github", "url": "https://github.com/sponsors/dcastil" } }, "node_modules/tailwindcss": { - "version": "3.4.13", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.13.tgz", - "integrity": "sha512-KqjHOJKogOUt5Bs752ykCeiwvi0fKVkr5oqsFNt/8px/tA8scFPIlkygsf6jXrfCqGHz7VflA6+yytWuM+XhFw==", + "version": "3.4.14", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.14.tgz", + "integrity": "sha512-IcSvOcTRcUtQQ7ILQL5quRDg7Xs93PdJEk1ZLbhhvJc7uj/OAhYOnruEiwnGgBvUtaUAJ8/mhSw1o8L2jCiENA==", "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", @@ -16982,6 +16909,11 @@ "typescript": ">=4.2.0" } }, + "node_modules/ts-debounce": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/ts-debounce/-/ts-debounce-4.0.0.tgz", + "integrity": "sha512-+1iDGY6NmOGidq7i7xZGA4cm8DAa6fqdYcvO5Z6yBevH++Bdo9Qt/mN0TzHUgcCcKv1gmh9+W5dHqz8pMWbCbg==" + }, "node_modules/ts-interface-checker": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", @@ -17002,9 +16934,9 @@ } }, "node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.0.tgz", + "integrity": "sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==" }, "node_modules/tsx": { "version": "4.19.1", @@ -17149,6 +17081,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/typed-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/typed-emitter/-/typed-emitter-2.1.0.tgz", + "integrity": "sha512-g/KzbYKbH5C2vPkaXGu8DJlHrGKHLsM25Zg9WuC9pMGfuvT+X25tZQWo5fK1BjBm8+UrVE9LDCvaY0CQk+fXDA==", + "optionalDependencies": { + "rxjs": "*" + } + }, "node_modules/typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", @@ -17156,9 +17096,9 @@ "dev": true }, "node_modules/typescript": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz", - "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==", + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", + "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", "devOptional": true, "bin": { "tsc": "bin/tsc", @@ -17642,6 +17582,20 @@ "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, + "node_modules/usehooks-ts": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/usehooks-ts/-/usehooks-ts-3.1.0.tgz", + "integrity": "sha512-bBIa7yUyPhE1BCc0GmR96VU/15l/9gP1Ch5mYdLcFBaFGQsdmXkvjV0TtOqW1yUd6VjIwDunm+flSciCQXujiw==", + "dependencies": { + "lodash.debounce": "^4.0.8" + }, + "engines": { + "node": ">=16.15.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17 || ^18" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -17937,9 +17891,9 @@ } }, "node_modules/vite": { - "version": "5.4.8", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.8.tgz", - "integrity": "sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==", + "version": "5.4.9", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.9.tgz", + "integrity": "sha512-20OVpJHh0PAM0oSOELa5GaZNWeDjcAvQjGXy2Uyr+Tp+/D2/Hdz6NLgpJLsarPTA2QJ6v8mX2P1ZfbsSKvdMkg==", "dev": true, "dependencies": { "esbuild": "^0.21.3", diff --git a/package.json b/package.json index 850bba2edae..7749374be44 100644 --- a/package.json +++ b/package.json @@ -26,12 +26,19 @@ ], "author": "Open Healthcare Network Contributors", "license": "MIT", + "workspaces": [ + "apps/*" + ], "scripts": { - "build:react": "cross-env NODE_ENV=production vite build", - "build": "npm run generate-build-meta && npm run supported-browsers && npm run build:react", "dev": "npm run supported-browsers && vite", + "local": "npm run supported-browsers && vite --mode docker", "preview": "cross-env NODE_ENV=production vite preview", - "generate-build-meta": "node ./scripts/generate-build-version.js", + "build:meta": "node ./scripts/generate-build-version.js", + "build:react": "cross-env NODE_ENV=production vite build", + "supported-browsers": "node ./scripts/generate-supported-browsers.mjs", + "build": "npm run install-all && npm run build:meta && npm run supported-browsers && npm run build:react", + "setup": "node scripts/setup-care-apps.js", + "install-all": "npm install && npm run setup && npm install", "test": "snyk test", "cypress:open": "cross-env NODE_ENV=development cypress open", "cypress:run": "cross-env NODE_ENV=development cypress run", @@ -40,8 +47,7 @@ "prepare": "husky install", "lint": "eslint ./src", "lint-fix": "eslint ./src --fix", - "format": "prettier ./src --write", - "supported-browsers": "node ./scripts/generate-supported-browsers.mjs" + "format": "prettier ./src --write" }, "dependencies": { "@fontsource/figtree": "^5.1.0", @@ -55,7 +61,7 @@ "@radix-ui/react-slot": "^1.1.0", "@radix-ui/react-toast": "^1.2.2", "@sentry/browser": "^8.33.0", - "@yudiel/react-qr-scanner": "^2.0.0-beta.3", + "@yudiel/react-qr-scanner": "^2.0.8", "axios": "^1.7.7", "bowser": "^2.11.0", "browser-image-compression": "^2.0.2", @@ -103,7 +109,7 @@ "@types/lodash-es": "^4.17.12", "@types/node": "^22.7.4", "@types/qrcode.react": "^1.0.5", - "@types/react": "18.3.2", + "@types/react": "^18.3.11", "@types/react-copy-to-clipboard": "^5.0.7", "@types/react-csv": "^1.1.10", "@types/react-dom": "^18.3.0", @@ -114,6 +120,7 @@ "autoprefixer": "^10.4.19", "cypress-localstorage-commands": "^2.2.5", "cypress-split": "^1.23.2", + "dotenv": "^16.4.5", "eslint-config-prettier": "^9.1.0", "eslint-plugin-i18next": "^6.0.9", "eslint-plugin-mdx": "^3.1.5", diff --git a/scripts/setup-care-apps.js b/scripts/setup-care-apps.js new file mode 100644 index 00000000000..4106775e63e --- /dev/null +++ b/scripts/setup-care-apps.js @@ -0,0 +1,113 @@ +// eslint-disable-next-line @typescript-eslint/no-var-requires +const { execSync } = require("child_process"); +// eslint-disable-next-line @typescript-eslint/no-var-requires +const fs = require("fs"); +// eslint-disable-next-line @typescript-eslint/no-var-requires +const path = require("path"); +// eslint-disable-next-line @typescript-eslint/no-var-requires +require("dotenv").config({ path: [".env.local", ".env"] }); + +console.log("Preinstall script running"); + +// Function to read apps.json or return an empty array if it doesn't exist +function readAppsConfig() { + const appsConfig = process.env.REACT_ENABLED_APPS + ? process.env.REACT_ENABLED_APPS.split(",").map((app) => ({ + branch: app.split("@")[1], + package: app.split("@")[0], + })) + : []; + console.log("Found apps: ", appsConfig); + return appsConfig; +} + +const appsConfig = readAppsConfig(); +const appsDir = path.join(__dirname, "..", "apps"); + +// Create apps directory if it doesn't exist +if (!fs.existsSync(appsDir)) { + fs.mkdirSync(appsDir); +} + +const installApp = (app) => { + const appDir = path.join(appsDir, app.package.split("/")[1]); + + console.log(`Cloning ${app.package}...`); + execSync( + `npx -y gitget ${app.package}${app.branch ? `#${app.branch}` : ""} apps/${app.package.split("/")[1]} `, + { + stdio: "inherit", + }, + ); + // Create a care-package.lock file + fs.writeFileSync( + path.join(appDir, "care-package.lock"), + JSON.stringify( + { + package: app.package, + branch: app.branch, + }, + null, + 2, + ), + ); +}; + +// Clone or pull care apps +appsConfig.forEach((app) => { + const appDir = path.join(appsDir, app.package.split("/")[1]); + if (fs.existsSync(appDir)) { + if (fs.existsSync(path.join(appDir, "care-package.lock"))) { + // verify if the branch and package match with the care-package.lock file + const lockFile = JSON.parse( + fs.readFileSync(path.join(appDir, "care-package.lock"), "utf8"), + ); + if (lockFile.package === app.package && lockFile.branch === app.branch) { + console.log(`Package already exists. Pulling latest changes...`); + execSync(`git -C "${appDir}" pull`, { stdio: "inherit" }); + return; + } else { + console.log(`Branch/package does not match. Recreating...`); + fs.rmSync(appDir, { recursive: true, force: true }); + } + } else { + console.log( + `Package already exists but care-package.lock file does not exist. Recreating...`, + ); + fs.rmSync(appDir, { recursive: true, force: true }); + } + } + + installApp(app); +}); + +console.log("All apps have been cloned or updated in apps directory."); + +const importApps = appsConfig.map((app) => ({ + ...app, + camelCaseName: app.package + .split("/")[1] + .replace(/[-_]/g, "") + .replace(/\b\w/g, (char, index) => + index === 0 ? char.toLowerCase() : char.toUpperCase(), + ), +})); + +// Generate pluginMap.ts +const pluginMapPath = path.join(__dirname, "..", "src", "pluginMap.ts"); +const pluginMapContent = `import { PluginManifest } from "./pluginTypes"; + +${importApps + .map( + (app) => + `import ${app.camelCaseName}Manifest from "@app-manifest/${app.package.split("/")[1]}";`, + ) + .join("\n")} + +export const pluginMap: PluginManifest[] = [ +${importApps.map((app) => ` ${app.camelCaseName}Manifest`).join(",\n")} +]; +`; + +fs.writeFileSync(pluginMapPath, pluginMapContent); +console.log("Generated pluginMap.ts"); diff --git a/src/App.tsx b/src/App.tsx index c02982fd6df..180bd92839c 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -4,24 +4,28 @@ import Integrations from "./Integrations"; import Loading from "./Components/Common/Loading"; import HistoryAPIProvider from "./Providers/HistoryAPIProvider"; import AuthUserProvider from "./Providers/AuthUserProvider"; +import PluginEngine from "./PluginEngine"; import { FeatureFlagsProvider } from "./Utils/featureFlags"; import { Toaster } from "./Components/ui/toaster"; const App = () => { return ( }> - - }> - - - - + + + + }> + + + + - {/* Integrations */} - - - - + {/* Integrations */} + + + + + ); }; diff --git a/src/CAREUI/display/Timeline.tsx b/src/CAREUI/display/Timeline.tsx index ee21b337724..6701d9a7511 100644 --- a/src/CAREUI/display/Timeline.tsx +++ b/src/CAREUI/display/Timeline.tsx @@ -55,7 +55,7 @@ export const TimelineNode = (props: TimelineNodeProps) => { const { t } = useTranslation(); return ( -
  • +
    { {props.children}
    -
  • +
    ); }; diff --git a/src/CAREUI/icons/CareIcon.tsx b/src/CAREUI/icons/CareIcon.tsx index 3bb67629bc2..a45117cc675 100644 --- a/src/CAREUI/icons/CareIcon.tsx +++ b/src/CAREUI/icons/CareIcon.tsx @@ -1,13 +1,12 @@ import iconData from "./UniconPaths.json"; -import { transformIcons } from "./icon"; -import { useEffect } from "react"; +import "./icon.css"; export type IconName = keyof typeof iconData; export interface CareIconProps { icon: IconName; - className?: string | undefined; - onClick?: React.MouseEventHandler | undefined; + className?: string; + onClick?: React.MouseEventHandler; id?: string; } @@ -25,14 +24,32 @@ export default function CareIcon({ className, onClick, }: CareIconProps) { - const effectiveClassName = icon - ? `care-${icon} ${className ?? ""}` - : className; + // TODO: fill & strokeWidth are defined for only one icon + // Rethink Implementation + const [viewBox, path, fill, strokeWidth] = iconData[icon] as [ + number, + string, + boolean | undefined, + number | undefined, + ]; + + const svgClassName = `care-svg-icon__baseline ${className || ""}`.trim(); - useEffect(() => transformIcons(), [effectiveClassName]); return ( - - - + + + ); } diff --git a/src/CAREUI/icons/icon.js b/src/CAREUI/icons/icon.js deleted file mode 100644 index c917e664351..00000000000 --- a/src/CAREUI/icons/icon.js +++ /dev/null @@ -1,49 +0,0 @@ -import "./icon.css"; -import iconData from "./UniconPaths.json"; - -const xmlns = "http://www.w3.org/2000/svg"; - -const findIconName = (className) => { - const iconName = className.match(/care-([a-zA-Z0-9-]+)/); - return iconName ? iconName[1] : "default"; -}; - -const getIconData = (className) => { - const data = iconData[findIconName(className)]; - return typeof data === "undefined" ? iconData["default"] : data; -}; - -const createSvg = (className) => { - const icon = getIconData(className); - const el = document.createElementNS(xmlns, "svg"); - el.setAttribute( - "class", - className.replace("care", "care-svg-icon__baseline"), - ); - el.setAttribute("role", "img"); - el.setAttribute("xmlns", xmlns); - el.setAttribute("viewBox", `0 0 ${icon[0]} ${icon[0]}`); - - const path = document.createElementNS(xmlns, "path"); - if (icon[2] === false) { - path.setAttribute("stroke", "currentColor"); - path.setAttribute("stroke-width", `${icon[3]}`); - } - path.setAttribute("fill", icon[2] === false ? "none" : "currentColor"); - path.setAttribute("d", icon[1]); - el.appendChild(path); - return el; -}; - -export const transformIcons = () => { - const elements = Array.from(document.getElementsByClassName("care")); - elements.forEach((element) => { - if (element.tagName == "I") { - element.parentNode.replaceChild(createSvg(element.className), element); - } - }); -}; - -export const addListener = () => { - window.addEventListener("load", transformIcons); -}; diff --git a/src/CAREUI/interactive/LegendInput.tsx b/src/CAREUI/interactive/LegendInput.tsx index e164e4d1b4e..83486095f7a 100644 --- a/src/CAREUI/interactive/LegendInput.tsx +++ b/src/CAREUI/interactive/LegendInput.tsx @@ -2,6 +2,7 @@ import CareIcon from "../icons/CareIcon"; import { classNames } from "../../Utils/utils"; import { RefObject, useRef, useState, useEffect } from "react"; import { useTranslation } from "react-i18next"; + type InputProps = { id?: string; name: string; @@ -12,12 +13,12 @@ type InputProps = { required?: boolean; placeholder?: string; value?: string; - onChange?: (e: any) => void; - onFocus?: (e: any) => void; - onBlur?: (e: any) => void; - onKeyUp?: (e: any) => void; - onKeyDown?: (e: any) => void; - onKeyPress?: (e: any) => void; + onChange?: (e: React.ChangeEvent) => void; + onFocus?: (e: React.FocusEvent) => void; + onBlur?: (e: React.FocusEvent) => void; + onKeyUp?: (e: React.KeyboardEvent) => void; + onKeyDown?: (e: React.KeyboardEvent) => void; + onKeyPress?: (e: React.KeyboardEvent) => void; disabled?: boolean; error?: string; className?: string; diff --git a/src/Common/hooks/useCareApps.ts b/src/Common/hooks/useCareApps.ts new file mode 100644 index 00000000000..77b5489052e --- /dev/null +++ b/src/Common/hooks/useCareApps.ts @@ -0,0 +1,35 @@ +import { createContext, useContext } from "react"; +import { INavItem } from "@/Components/Common/Sidebar/Sidebar"; +import { PluginManifest } from "@/pluginTypes"; + +export const CareAppsContext = createContext([]); + +export const useCareApps = () => { + const ctx = useContext(CareAppsContext); + if (!ctx) { + throw new Error( + "'useCareApps' must be used within 'CareAppsProvider' only", + ); + } + return ctx; +}; + +export const useCareAppNavItems = () => { + const careApps = useCareApps(); + const navItems = careApps.reduce((acc, plugin) => { + return [...acc, ...(plugin.navItems || [])]; + }, []); + return navItems; +}; + +// If required; Reduce plugin.routes to a single pluginRoutes object of type Record JSX.Element> +export function usePluginRoutes() { + const careApps = useCareApps(); + const routes = careApps.reduce((acc, plugin) => { + return { ...acc, ...plugin.routes }; + }, {}); + if (!routes) { + throw new Error("'usePluginRoutes' must be used within 'AppRouter' only"); + } + return routes; +} diff --git a/src/Components/CameraFeed/CentralLiveMonitoring/index.tsx b/src/Components/CameraFeed/CentralLiveMonitoring/index.tsx index 3cca4c00ec4..95e3b98c818 100644 --- a/src/Components/CameraFeed/CentralLiveMonitoring/index.tsx +++ b/src/Components/CameraFeed/CentralLiveMonitoring/index.tsx @@ -66,7 +66,7 @@ export default function CentralLiveMonitoring(props: { facilityId: string }) { fullscreen={isFullscreen} onExit={() => setFullscreen(false)} > -
    +
    {data.results.map((asset) => (
    diff --git a/src/Components/Common/ErrorBoundary.tsx b/src/Components/Common/ErrorBoundary.tsx new file mode 100644 index 00000000000..47172a240ef --- /dev/null +++ b/src/Components/Common/ErrorBoundary.tsx @@ -0,0 +1,36 @@ +import React, { Component, ErrorInfo, ReactNode } from "react"; + +interface Props { + children: ReactNode; + fallback?: ReactNode; +} + +interface State { + hasError: boolean; +} + +class ErrorBoundary extends Component { + public state: State = { + hasError: false, + }; + + public static getDerivedStateFromError(_: Error): State { + // Update state so the next render will show the fallback UI. + return { hasError: true }; + } + + public componentDidCatch(error: Error, errorInfo: ErrorInfo) { + console.error("Uncaught error:", error, errorInfo); + } + + public render() { + if (this.state.hasError) { + // You can render any custom fallback UI + return this.props.fallback ||

    Sorry.. there was an error

    ; + } + + return this.props.children; + } +} + +export default ErrorBoundary; diff --git a/src/Components/Common/Sidebar/Sidebar.tsx b/src/Components/Common/Sidebar/Sidebar.tsx index 31efe00f1b1..4e3929b187f 100644 --- a/src/Components/Common/Sidebar/Sidebar.tsx +++ b/src/Components/Common/Sidebar/Sidebar.tsx @@ -8,11 +8,18 @@ import SlideOver from "../../../CAREUI/interactive/SlideOver"; import { classNames } from "../../../Utils/utils"; import { Link } from "raviger"; import careConfig from "@careConfig"; +import { useCareAppNavItems } from "@/Common/hooks/useCareApps"; export const SIDEBAR_SHRINK_PREFERENCE_KEY = "sidebarShrinkPreference"; const LOGO_COLLAPSE = "/images/care_logo_mark.svg"; +export interface INavItem { + text: string; + to?: string; + icon: IconName; +} + type StatelessSidebarProps = | { shrinkable: true; @@ -32,11 +39,7 @@ const StatelessSidebar = ({ setShrinked, onItemClick, }: StatelessSidebarProps) => { - const NavItems: { - text: string; - to: string; - icon: IconName; - }[] = [ + const BaseNavItems: INavItem[] = [ { text: "Facilities", to: "/facility", icon: "l-hospital" }, { text: "Patients", to: "/patients", icon: "l-user-injured" }, { text: "Assets", to: "/assets", icon: "l-shopping-cart-alt" }, @@ -47,6 +50,10 @@ const StatelessSidebar = ({ { text: "Notice Board", to: "/notice_board", icon: "l-meeting-board" }, ]; + const PluginNavItems = useCareAppNavItems(); + + const NavItems = [...BaseNavItems, ...PluginNavItems]; + const activeLink = useActiveLink(); const Item = shrinked ? ShrinkedSidebarItem : SidebarItem; @@ -151,7 +158,7 @@ const StatelessSidebar = ({ {...i} icon={} selected={i.to === activeLink} - do={() => onItemClick && onItemClick(false)} + onItemClick={() => onItemClick && onItemClick(false)} handleOverflow={handleOverflow} /> ); diff --git a/src/Components/Common/Sidebar/SidebarItem.tsx b/src/Components/Common/Sidebar/SidebarItem.tsx index 265119f936e..eeee4284e2f 100644 --- a/src/Components/Common/Sidebar/SidebarItem.tsx +++ b/src/Components/Common/Sidebar/SidebarItem.tsx @@ -10,37 +10,39 @@ type SidebarItemProps = { ref?: React.Ref; text: string; icon: SidebarIcon; + onItemClick?: () => void; external?: true | undefined; badgeCount?: number | undefined; selected?: boolean | undefined; handleOverflow?: any; -} & ({ to: string; do?: undefined } | { to?: string; do: () => void }); +} & ({ to?: string; do?: undefined } | { to?: string; do: () => void }); type SidebarItemBaseProps = SidebarItemProps & { shrinked?: boolean; - ref: Ref; }; -const SidebarItemBase = forwardRef( - ( - { shrinked, external, ...props }: SidebarItemBaseProps, - ref: Ref, - ) => { +const SidebarItemBase = forwardRef( + ({ shrinked, external, ...props }, ref) => { const { t } = useTranslation(); const { resetHistory } = useAppHistory(); return ( { + // On Review: Check if resetHistory is working as intended. + props.do?.(); + props.onItemClick?.(); + resetHistory(); + }} onMouseEnter={() => { props.handleOverflow(true); }} diff --git a/src/Components/Common/SortDropdown.tsx b/src/Components/Common/SortDropdown.tsx index b54edffa595..0c4fddec58c 100644 --- a/src/Components/Common/SortDropdown.tsx +++ b/src/Components/Common/SortDropdown.tsx @@ -29,6 +29,7 @@ export default function SortDropdownMenu(props: Props) { > {props.options.map(({ isAscending, value }) => (
    +
    ); } diff --git a/src/Components/Facility/HospitalList.tsx b/src/Components/Facility/FacilityList.tsx similarity index 99% rename from src/Components/Facility/HospitalList.tsx rename to src/Components/Facility/FacilityList.tsx index e7949440307..503f0fde34d 100644 --- a/src/Components/Facility/HospitalList.tsx +++ b/src/Components/Facility/FacilityList.tsx @@ -18,7 +18,7 @@ import routes from "../../Redux/api"; import CareIcon from "../../CAREUI/icons/CareIcon"; import Loading from "@/Components/Common/Loading"; -export const HospitalList = () => { +export const FacilityList = () => { const { qParams, updateQuery, diff --git a/src/Components/Notifications/ShowPushNotification.tsx b/src/Components/Notifications/ShowPushNotification.tsx index 2d2faa5ff5f..ca465f98df7 100644 --- a/src/Components/Notifications/ShowPushNotification.tsx +++ b/src/Components/Notifications/ShowPushNotification.tsx @@ -1,9 +1,8 @@ -import { DetailRoute } from "../../Routers/types"; import useQuery from "../../Utils/request/useQuery"; import routes from "../../Redux/api"; import { NotificationData } from "./models"; -export default function ShowPushNotification({ id }: DetailRoute) { +export default function ShowPushNotification({ id }: { id: string }) { useQuery(routes.getNotificationData, { pathParams: { id }, onResponse(res) { diff --git a/src/Components/Users/UserProfile.tsx b/src/Components/Users/UserProfile.tsx index b9af5b98f65..22f2a0e2607 100644 --- a/src/Components/Users/UserProfile.tsx +++ b/src/Components/Users/UserProfile.tsx @@ -469,10 +469,11 @@ export default function UserProfile() {

    - Personal Information + {t("personal_information")}

    - Local Body, District and State are Non Editable Settings. + {t("local_body")}, {t("district")}, {t("state")}{" "} + {t("are_non_editable_fields")}.

    - {showEdit ? "Cancel" : "Edit User Profile"} + {showEdit ? t("cancel") : t("edit_user_profile")} - Sign out + {t("sign_out")}
    @@ -498,7 +499,7 @@ export default function UserProfile() { id="username-profile-details" >
    - Username + {t("username")}
    {userData?.username || "-"} @@ -509,7 +510,7 @@ export default function UserProfile() { id="contactno-profile-details" >
    - Contact No + {t("phone_number")}
    {userData?.phone_number || "-"} @@ -521,7 +522,7 @@ export default function UserProfile() { id="whatsapp-profile-details" >
    - Whatsapp No + {t("whatsapp_number")}
    {userData?.alt_phone_number || "-"} @@ -532,7 +533,7 @@ export default function UserProfile() { id="emailid-profile-details" >
    - Email address + {t("email")}
    {userData?.email || "-"} @@ -543,7 +544,7 @@ export default function UserProfile() { id="firstname-profile-details" >
    - First Name + {t("first_name")}
    {userData?.first_name || "-"} @@ -554,7 +555,7 @@ export default function UserProfile() { id="lastname-profile-details" >
    - Last Name + {t("last_name")}
    {userData?.last_name || "-"} @@ -565,7 +566,7 @@ export default function UserProfile() { id="date_of_birth-profile-details" >
    - Date of Birth + {t("date_of_birth")}
    {userData?.date_of_birth @@ -575,7 +576,7 @@ export default function UserProfile() {
    - Access Level + {t("access_level")}
    {" "} @@ -587,7 +588,7 @@ export default function UserProfile() { id="gender-profile-details" >
    - Gender + {t("gender")}
    {userData?.gender || "-"} @@ -595,7 +596,7 @@ export default function UserProfile() {
    - Local Body + {t("local_body")}
    {userData?.local_body_object?.name || "-"} @@ -603,7 +604,7 @@ export default function UserProfile() {
    - District + {t("district")}
    {userData?.district_object?.name || "-"} @@ -611,7 +612,7 @@ export default function UserProfile() {
    - State + {t("state")}
    {userData?.state_object?.name || "-"} @@ -619,7 +620,7 @@ export default function UserProfile() {
    - Skills + {t("skills")}
    - Average weekly working hours + {t("average_weekly_working_hours")}
    {userData?.weekly_working_hours ?? "-"} @@ -656,7 +657,7 @@ export default function UserProfile() { id="videoconnectlink-profile-details" >
    - Video Connect Link + {t("video_conference_link")}
    {userData?.video_connect_link ? ( @@ -685,18 +686,18 @@ export default function UserProfile() { o.text} optionValue={(o) => o.text} - optionIcon={(o) => ( - {o.icon} - )} options={GENDER_TYPES} /> )}
    - +
    @@ -796,7 +798,7 @@ export default function UserProfile() {
    @@ -888,10 +890,10 @@ export default function UserProfile() {

    - Language Selection + {t("language_selection")}

    - Set your local language + {t("set_your_local_language")}

    @@ -903,10 +905,10 @@ export default function UserProfile() {

    - Software Update + {t("software_update")}

    - Check for an available update + {t("check_for_available_update")}

    @@ -915,7 +917,7 @@ export default function UserProfile() {
    - Update available + {t("update_available")}
    @@ -936,8 +938,8 @@ export default function UserProfile() { )} /> {updateStatus.isChecking - ? "Checking for update" - : "Check for update"} + ? t("checking_for_update") + : t("check_for_update")}
    )} diff --git a/src/Locale/en.json b/src/Locale/en.json index b4c18b685a9..0df3c961e10 100644 --- a/src/Locale/en.json +++ b/src/Locale/en.json @@ -25,6 +25,7 @@ "last_name": "Last Name", "email": "Email Address", "phone_number": "Phone Number", + "whatsapp_number": "Whatsapp Number", "district": "District", "gender": "Gender", "age": "Age", @@ -277,6 +278,29 @@ "unsupported_browser": "Unsupported Browser", "unsupported_browser_description": "Your browser ({{name}} version {{version}}) is not supported. Please update your browser to the latest version or switch to a supported browser for the best experience.", "add_remarks": "Add remarks", + "middleware_hostname": "Middleware Hostname", + "local_ipaddress": "Local IP Address", + "personal_information": "Personal Information", + "are_non_editable_fields": "are non-editable fields", + "edit_user_profile": "Edit Profile", + "skills": "Skills", + "access_level": "Access Level", + "qualification": "Qualification", + "years_of_experience": "Years of Experience", + "years_of_experience_of_the_doctor": "Years of Experience of the Doctor", + "medical_council_registration": "Medical Council Registration", + "doctor_s_medical_council_registration": "Doctor's Medical Council Registration", + "video_conference_link": "Video Conference Link", + "new_password_confirmation": "Confirm New Password", + "current_password": "Current Password", + "change_password": "Change Password", + "language_selection": "Language Selection", + "set_your_local_language": "Set your local language", + "software_update": "Software Update", + "check_for_available_update": "Check for available update", + "update_available": "Update Available", + "checking_for_update": "Checking for update", + "check_for_update": "Check for Update", "SORT_OPTIONS__-created_date": "Latest created date first", "SORT_OPTIONS__created_date": "Oldest created date first", "SORT_OPTIONS__-category_severity": "Highest Severity category first", @@ -293,9 +317,6 @@ "SORT_OPTIONS__-name": "Patient name Z-A", "SORT_OPTIONS__bed__name": "Bed No. 1-N", "SORT_OPTIONS__-bed__name": "Bed No. N-1", - "middleware_hostname": "Middleware Hostname", - "local_ipaddress": "Local IP Address", - "qualification": "Qualification", "CONSULTATION_TAB__UPDATES": "Overview", "CONSULTATION_TAB__FEED": "Feed", "CONSULTATION_TAB__SUMMARY": "Vitals", diff --git a/src/PluginEngine.tsx b/src/PluginEngine.tsx new file mode 100644 index 00000000000..3d47dba4d81 --- /dev/null +++ b/src/PluginEngine.tsx @@ -0,0 +1,51 @@ +/* eslint-disable i18next/no-literal-string */ +import React, { Suspense } from "react"; +import { CareAppsContext, useCareApps } from "./Common/hooks/useCareApps"; +import { pluginMap } from "./pluginTypes"; +import { UserAssignedModel } from "./Components/Users/models"; +import ErrorBoundary from "./Components/Common/ErrorBoundary"; + +export default function PluginEngine({ + children, +}: { + children: React.ReactNode; +}) { + return ( + Loading plugins...
    }> + + Error loading plugins +
    + } + > + + {children} + + + + ); +} + +export function PLUGIN_DoctorConnectButtons({ + user, +}: { + user: UserAssignedModel; +}) { + const plugins = useCareApps(); + return ( +
    + {plugins.map((plugin, index) => { + const DoctorConnectButtons = plugin.components.DoctorConnectButtons; + if (!DoctorConnectButtons) { + return null; + } + return ( +
    + +
    + ); + })} +
    + ); +} diff --git a/src/Redux/api.tsx b/src/Redux/api.tsx index 4775674084e..f1130345f46 100644 --- a/src/Redux/api.tsx +++ b/src/Redux/api.tsx @@ -1129,7 +1129,7 @@ const routes = { path: "/api/v1/notification/notify/", method: "POST", TRes: Type(), - Tbody: Type(), + TBody: Type(), }, // FileUpload Create diff --git a/src/Routers/AppRouter.tsx b/src/Routers/AppRouter.tsx index 9d411d11950..df154ee7a5e 100644 --- a/src/Routers/AppRouter.tsx +++ b/src/Routers/AppRouter.tsx @@ -24,11 +24,26 @@ import HCXRoutes from "./routes/HCXRoutes"; import ShiftingRoutes from "./routes/ShiftingRoutes"; import AssetRoutes from "./routes/AssetRoutes"; import ResourceRoutes from "./routes/ResourceRoutes"; -import { DetailRoute } from "./types"; +import { usePluginRoutes } from "@/Common/hooks/useCareApps"; import careConfig from "@careConfig"; import IconIndex from "../CAREUI/icons/Index"; -const Routes = { +export type RouteParams = + T extends `${string}:${infer Param}/${infer Rest}` + ? { [K in Param | keyof RouteParams]: string } + : T extends `${string}:${infer Param}` + ? { [K in Param]: string } + : Record; + +export type RouteFunction = ( + params: RouteParams, +) => JSX.Element; + +export type AppRoutes = { + [K in string]: RouteFunction; +}; + +const Routes: AppRoutes = { "/": () => , ...AssetRoutes, @@ -40,15 +55,13 @@ const Routes = { ...ShiftingRoutes, ...UserRoutes, - "/notifications/:id": ({ id }: DetailRoute) => ( - - ), + "/notifications/:id": ({ id }) => , "/notice_board": () => , - "/abdm/health-information/:id": ({ id }: { id: string }) => ( + "/abdm/health-information/:id": ({ id }) => ( ), - "/facility/:facilityId/abdm": ({ facilityId }: any) => ( + "/facility/:facilityId/abdm": ({ facilityId }) => ( ), @@ -61,6 +74,8 @@ const Routes = { }; export default function AppRouter() { + const pluginRoutes = usePluginRoutes(); + let routes = Routes; if (careConfig.hcx.enabled) { @@ -68,7 +83,15 @@ export default function AppRouter() { } useRedirect("/user", "/users"); + + // Merge in Plugin Routes + routes = { + ...routes, + ...pluginRoutes, + }; + const pages = useRoutes(routes) || ; + const path = usePath(); const [sidebarOpen, setSidebarOpen] = useState(false); diff --git a/src/Routers/routes/AssetRoutes.tsx b/src/Routers/routes/AssetRoutes.tsx index d3bd96ca437..ee0537d6c58 100644 --- a/src/Routers/routes/AssetRoutes.tsx +++ b/src/Routers/routes/AssetRoutes.tsx @@ -2,20 +2,23 @@ import AssetConfigure from "../../Components/Assets/AssetConfigure"; import AssetManage from "../../Components/Assets/AssetManage"; import AssetsList from "../../Components/Assets/AssetsList"; import AssetCreate from "../../Components/Facility/AssetCreate"; +import { AppRoutes } from "../AppRouter"; -export default { +const AssetRoutes: AppRoutes = { "/assets": () => , - - "/facility/:facilityId/assets/new": (params: any) => ( - - ), - "/facility/:facilityId/assets/:assetId/update": (params: any) => ( - + "/facility/:facilityId/assets/new": ({ facilityId }) => ( + ), - "/facility/:facilityId/assets/:assetId": (params: any) => ( - + "/facility/:facilityId/assets/:assetId/update": ({ facilityId, assetId }) => ( + ), - "/facility/:facilityId/assets/:assetId/configure": (params: any) => ( - + "/facility/:facilityId/assets/:assetId": ({ facilityId, assetId }) => ( + ), + "/facility/:facilityId/assets/:assetId/configure": ({ + facilityId, + assetId, + }) => , }; + +export default AssetRoutes; diff --git a/src/Routers/routes/ConsultationRoutes.tsx b/src/Routers/routes/ConsultationRoutes.tsx index 598fd06adc3..77efe1081bc 100644 --- a/src/Routers/routes/ConsultationRoutes.tsx +++ b/src/Routers/routes/ConsultationRoutes.tsx @@ -5,30 +5,29 @@ import ManagePrescriptions from "../../Components/Medicine/ManagePrescriptions"; import { DailyRoundListDetails } from "../../Components/Patient/DailyRoundListDetails"; import { DailyRounds } from "../../Components/Patient/DailyRounds"; import { ConsultationDetails } from "../../Components/Facility/ConsultationDetails"; -import TreatmentSummary, { - ITreatmentSummaryProps, -} from "../../Components/Facility/TreatmentSummary"; +import TreatmentSummary from "../../Components/Facility/TreatmentSummary"; import ConsultationDoctorNotes from "../../Components/Facility/ConsultationDoctorNotes"; import PatientConsentRecords from "../../Components/Patient/PatientConsentRecords"; import CriticalCareEditor from "../../Components/LogUpdate/CriticalCareEditor"; import PrescriptionsPrintPreview from "../../Components/Medicine/PrintPreview"; import CriticalCarePreview from "../../Components/LogUpdate/CriticalCarePreview"; import FileUploadPage from "../../Components/Patient/FileUploadPage"; +import { AppRoutes } from "../AppRouter"; -export default { +const consultationRoutes: AppRoutes = { "/facility/:facilityId/patient/:patientId/consultation": ({ facilityId, patientId, - }: any) => , + }) => , "/facility/:facilityId/patient/:patientId/consultation/:id/update": ({ facilityId, patientId, id, - }: any) => ( + }) => ( ), "/facility/:facilityId/patient/:patientId/consultation/:id/consent-records": - ({ facilityId, patientId, id }: any) => ( + ({ facilityId, patientId, id }) => ( ( + }) => ( ), "/facility/:facilityId/patient/:patientId/consultation/:consultationId/prescriptions": - (path: any) => , + (path) => , "/facility/:facilityId/patient/:patientId/consultation/:consultationId/prescriptions/print": () => , "/facility/:facilityId/patient/:patientId/consultation/:id/investigation": ({ facilityId, patientId, id, - }: any) => ( + }) => ( ), "/facility/:facilityId/patient/:patientId/consultation/:id/investigation/:sessionId": - ({ facilityId, patientId, id, sessionId }: any) => ( + ({ facilityId, patientId, id, sessionId }) => ( ( + }) => ( ), "/facility/:facilityId/patient/:patientId/consultation/:consultationId/daily-rounds/:id/update": - ({ facilityId, patientId, consultationId, id }: any) => ( + ({ facilityId, patientId, consultationId, id }) => ( ), "/facility/:facilityId/patient/:patientId/consultation/:consultationId/daily-rounds/:id": - ({ facilityId, patientId, consultationId, id }: any) => ( + ({ facilityId, patientId, consultationId, id }) => ( ), - "/facility/:facilityId/patient/:patientId/consultation/:consultationId/daily_rounds/:id": - (params: { - facilityId: string; - patientId: string; - consultationId: string; - id: string; - }) => , + ({ facilityId, patientId, consultationId, id }) => ( + + ), "/facility/:facilityId/patient/:patientId/consultation/:consultationId/daily_rounds/:id/update": - (params: { - facilityId: string; - patientId: string; - consultationId: string; - id: string; - }) => , + ({ facilityId, patientId, consultationId, id }) => ( + + ), "/facility/:facilityId/patient/:patientId/consultation/:consultationId": ({ facilityId, patientId, consultationId, - }: any) => ( + }) => ( ), - "/consultation/:consultationId": ({ consultationId }: any) => ( + "/consultation/:consultationId": ({ consultationId }) => ( ), "/facility/:facilityId/patient/:patientId/consultation/:consultationId/treatment-summary": - ({ facilityId, patientId, consultationId }: ITreatmentSummaryProps) => ( + ({ facilityId, patientId, consultationId }) => ( ), "/facility/:facilityId/patient/:patientId/consultation/:consultationId/notes": - ({ facilityId, patientId, consultationId }: any) => ( + ({ facilityId, patientId, consultationId }) => ( ), "/facility/:facilityId/patient/:patientId/consultation/:consultationId/:tab": - ({ facilityId, patientId, consultationId, tab }: any) => ( + ({ facilityId, patientId, consultationId, tab }) => ( ), }; + +export default consultationRoutes; diff --git a/src/Routers/routes/FacilityInventoryRoutes.tsx b/src/Routers/routes/FacilityInventoryRoutes.tsx index 17e93b2bc60..99123d8f737 100644 --- a/src/Routers/routes/FacilityInventoryRoutes.tsx +++ b/src/Routers/routes/FacilityInventoryRoutes.tsx @@ -3,22 +3,25 @@ import InventoryList from "../../Components/Facility/InventoryList"; import InventoryLog from "../../Components/Facility/InventoryLog"; import MinQuantityList from "../../Components/Facility/MinQuantityList"; import { SetInventoryForm } from "../../Components/Facility/SetInventoryForm"; +import { AppRoutes } from "../AppRouter"; -export default { - "/facility/:facilityId/inventory": ({ facilityId }: any) => ( +const FacilityInventoryRoutes: AppRoutes = { + "/facility/:facilityId/inventory": ({ facilityId }) => ( ), - "/facility/:facilityId/inventory/min_quantity/set": ({ facilityId }: any) => ( + "/facility/:facilityId/inventory/min_quantity/set": ({ facilityId }) => ( ), - "/facility/:facilityId/inventory/min_quantity/list": ({ - facilityId, - }: any) => , - "/facility/:facilityId/inventory/min_quantity": ({ facilityId }: any) => ( + "/facility/:facilityId/inventory/min_quantity/list": ({ facilityId }) => ( + + ), + "/facility/:facilityId/inventory/min_quantity": ({ facilityId }) => ( ), "/facility/:facilityId/inventory/:inventoryId": ({ facilityId, inventoryId, - }: any) => , + }) => , }; + +export default FacilityInventoryRoutes; diff --git a/src/Routers/routes/FacilityLocationRoutes.tsx b/src/Routers/routes/FacilityLocationRoutes.tsx index 5d547ebd466..c2e1add4b10 100644 --- a/src/Routers/routes/FacilityLocationRoutes.tsx +++ b/src/Routers/routes/FacilityLocationRoutes.tsx @@ -6,41 +6,42 @@ import LocationManagement from "../../Components/Facility/LocationManagement"; import CentralLiveMonitoring from "../../Components/CameraFeed/CentralLiveMonitoring"; import { AuthorizeUserRoute } from "../../Utils/AuthorizeFor"; import { CameraFeedPermittedUserTypes } from "../../Utils/permissions"; +import { AppRoutes } from "../AppRouter"; -export default { - "/facility/:facilityId/location": ({ facilityId }: any) => ( +const FacilityLocationRoutes: AppRoutes = { + "/facility/:facilityId/location": ({ facilityId }) => ( ), "/facility/:facilityId/location/:locationId/beds": ({ facilityId, locationId, - }: any) => , - "/facility/:facilityId/inventory/add": ({ facilityId }: any) => ( + }) => , + "/facility/:facilityId/inventory/add": ({ facilityId }) => ( ), - "/facility/:facilityId/location/add": ({ facilityId }: any) => ( + "/facility/:facilityId/location/add": ({ facilityId }) => ( ), "/facility/:facilityId/location/:locationId/update": ({ facilityId, locationId, - }: any) => ( - - ), + }) => , "/facility/:facilityId/location/:locationId/beds/add": ({ facilityId, locationId, - }: any) => , + }) => , "/facility/:facilityId/location/:locationId/beds/:bedId/update": ({ facilityId, locationId, bedId, - }: any) => ( + }) => ( ), - "/facility/:facilityId/live-monitoring": (props: any) => ( + "/facility/:facilityId/live-monitoring": ({ facilityId }) => ( - + ), }; + +export default FacilityLocationRoutes; diff --git a/src/Routers/routes/FacilityRoutes.tsx b/src/Routers/routes/FacilityRoutes.tsx index 2c711cf48cb..16b202ae0ce 100644 --- a/src/Routers/routes/FacilityRoutes.tsx +++ b/src/Routers/routes/FacilityRoutes.tsx @@ -2,48 +2,47 @@ import { FacilityConfigure } from "../../Components/Facility/FacilityConfigure"; import { FacilityCreate } from "../../Components/Facility/FacilityCreate"; import { FacilityHome } from "../../Components/Facility/FacilityHome"; import FacilityUsers from "../../Components/Facility/FacilityUsers"; -import { HospitalList } from "../../Components/Facility/HospitalList"; +import { FacilityList } from "../../Components/Facility/FacilityList"; import { TriageForm } from "../../Components/Facility/TriageForm"; import ResourceCreate from "../../Components/Resource/ResourceCreate"; import CentralNursingStation from "../../Components/Facility/CentralNursingStation"; import FacilityLocationRoutes from "./FacilityLocationRoutes"; import FacilityInventoryRoutes from "./FacilityInventoryRoutes"; import DischargedPatientsList from "../../Components/Facility/DischargedPatientsList"; +import { AppRoutes } from "../AppRouter"; -export default { - "/facility": () => , +const FacilityRoutes: AppRoutes = { + "/facility": () => , "/facility/create": () => , - "/facility/:facilityId/update": ({ facilityId }: any) => ( + "/facility/:facilityId/update": ({ facilityId }) => ( ), - "/facility/:facilityId/configure": ({ facilityId }: any) => ( + "/facility/:facilityId/configure": ({ facilityId }) => ( ), - "/facility/:facilityId/cns": ({ facilityId }: any) => ( + "/facility/:facilityId/cns": ({ facilityId }) => ( ), - "/facility/:facilityId": ({ facilityId }: any) => ( + "/facility/:facilityId": ({ facilityId }) => ( ), - "/facility/:id/discharged-patients": ({ id }: any) => ( + "/facility/:id/discharged-patients": ({ id }) => ( ), - - "/facility/:facilityId/users": ({ facilityId }: any) => ( + "/facility/:facilityId/users": ({ facilityId }) => ( ), - "/facility/:facilityId/resource/new": ({ facilityId }: any) => ( + "/facility/:facilityId/resource/new": ({ facilityId }) => ( ), - - // Triage related routes - "/facility/:facilityId/triage": ({ facilityId }: any) => ( + "/facility/:facilityId/triage": ({ facilityId }) => ( ), - "/facility/:facilityId/triage/:id": ({ facilityId, id }: any) => ( + "/facility/:facilityId/triage/:id": ({ facilityId, id }) => ( ), - ...FacilityLocationRoutes, ...FacilityInventoryRoutes, }; + +export default FacilityRoutes; diff --git a/src/Routers/routes/HCXRoutes.tsx b/src/Routers/routes/HCXRoutes.tsx index 80378b24621..929cc3f12bb 100644 --- a/src/Routers/routes/HCXRoutes.tsx +++ b/src/Routers/routes/HCXRoutes.tsx @@ -1,10 +1,15 @@ -import ConsultationClaims, { - IConsultationClaimsProps, -} from "../../Components/Facility/ConsultationClaims"; +import ConsultationClaims from "../../Components/Facility/ConsultationClaims"; +import { AppRoutes } from "../AppRouter"; -export default { +const HCXRoutes: AppRoutes = { "/facility/:facilityId/patient/:patientId/consultation/:consultationId/claims": - (pathParams: IConsultationClaimsProps) => ( - + ({ facilityId, patientId, consultationId }) => ( + ), }; + +export default HCXRoutes; diff --git a/src/Routers/routes/PatientRoutes.tsx b/src/Routers/routes/PatientRoutes.tsx index fcfc9b04e37..45ff044e4d2 100644 --- a/src/Routers/routes/PatientRoutes.tsx +++ b/src/Routers/routes/PatientRoutes.tsx @@ -3,44 +3,44 @@ import { PatientManager } from "../../Components/Patient/ManagePatients"; import { PatientHome } from "../../Components/Patient/PatientHome"; import PatientNotes from "../../Components/Patient/PatientNotes"; import { PatientRegister } from "../../Components/Patient/PatientRegister"; -import { DetailRoute } from "../types"; import DeathReport from "../../Components/DeathReport/DeathReport"; import { InsuranceDetails } from "../../Components/Patient/InsuranceDetails"; import FileUploadPage from "../../Components/Patient/FileUploadPage"; +import { AppRoutes } from "../AppRouter"; -export default { +const PatientRoutes: AppRoutes = { "/patients": () => , - "/patient/:id": ({ id }: DetailRoute) => , - "/patient/:id/investigation_reports": ({ id }: DetailRoute) => ( + "/patient/:id": ({ id }) => , + "/patient/:id/investigation_reports": ({ id }) => ( ), - - // Facility Scoped Routes - "/facility/:facilityId/patient": ({ facilityId }: any) => ( + "/facility/:facilityId/patient": ({ facilityId }) => ( ), - "/facility/:facilityId/patient/:id": ({ facilityId, id }: any) => ( + "/facility/:facilityId/patient/:id": ({ facilityId, id }) => ( ), - "/facility/:facilityId/patient/:id/insurance": ({ facilityId, id }: any) => ( + "/facility/:facilityId/patient/:id/insurance": ({ facilityId, id }) => ( ), - "/facility/:facilityId/patient/:id/update": ({ facilityId, id }: any) => ( + "/facility/:facilityId/patient/:id/update": ({ facilityId, id }) => ( ), "/facility/:facilityId/patient/:patientId/notes": ({ facilityId, patientId, - }: any) => , + }) => , "/facility/:facilityId/patient/:patientId/files": ({ facilityId, patientId, - }: any) => ( + }) => ( ), - "/death_report/:id": ({ id }: any) => , + "/death_report/:id": ({ id }) => , }; + +export default PatientRoutes; diff --git a/src/Routers/routes/ResourceRoutes.tsx b/src/Routers/routes/ResourceRoutes.tsx index 6636d0d83ea..d75c933f760 100644 --- a/src/Routers/routes/ResourceRoutes.tsx +++ b/src/Routers/routes/ResourceRoutes.tsx @@ -3,17 +3,17 @@ import { ResourceDetailsUpdate } from "../../Components/Resource/ResourceDetails import ListView from "../../Components/Resource/ListView"; import BoardView from "../../Components/Resource/ResourceBoardView"; import { Redirect } from "raviger"; -import { DetailRoute } from "../types"; +import { AppRoutes } from "../AppRouter"; const getDefaultView = () => localStorage.getItem("defaultResourceView") === "list" ? "list" : "board"; -export default { +const ResourceRoutes: AppRoutes = { "/resource": () => , "/resource/board": () => , "/resource/list": () => , - "/resource/:id": ({ id }: DetailRoute) => , - "/resource/:id/update": ({ id }: DetailRoute) => ( - - ), + "/resource/:id": ({ id }) => , + "/resource/:id/update": ({ id }) => , }; + +export default ResourceRoutes; diff --git a/src/Routers/routes/SampleRoutes.tsx b/src/Routers/routes/SampleRoutes.tsx index 290a34fd4eb..cf296790a81 100644 --- a/src/Routers/routes/SampleRoutes.tsx +++ b/src/Routers/routes/SampleRoutes.tsx @@ -2,24 +2,22 @@ import { SampleDetails } from "../../Components/Patient/SampleDetails"; import SampleReport from "../../Components/Patient/SamplePreview"; import { SampleTest } from "../../Components/Patient/SampleTest"; import SampleViewAdmin from "../../Components/Patient/SampleViewAdmin"; -import { DetailRoute, RouteParams } from "../types"; +import { AppRoutes } from "../AppRouter"; -export default { +const SampleRoutes: AppRoutes = { "/sample": () => , - "/sample/:id": ({ id }: DetailRoute) => , + "/sample/:id": ({ id }) => , "/patient/:patientId/test_sample/:sampleId/icmr_sample": ({ patientId, sampleId, - }: RouteParams<"patientId" | "sampleId">) => ( - - ), + }) => , "/facility/:facilityId/patient/:patientId/sample-test": ({ facilityId, patientId, - }: RouteParams<"facilityId" | "patientId">) => ( - + }) => , + "/facility/:facilityId/patient/:patientId/sample/:id": ({ id }) => ( + ), - "/facility/:facilityId/patient/:patientId/sample/:id": ({ - id, - }: DetailRoute) => , }; + +export default SampleRoutes; diff --git a/src/Routers/routes/ShiftingRoutes.tsx b/src/Routers/routes/ShiftingRoutes.tsx index f2e12de4f25..dc11ff2b8ee 100644 --- a/src/Routers/routes/ShiftingRoutes.tsx +++ b/src/Routers/routes/ShiftingRoutes.tsx @@ -4,18 +4,21 @@ import { ShiftDetailsUpdate } from "../../Components/Shifting/ShiftDetailsUpdate import ListView from "../../Components/Shifting/ListView"; import BoardView from "../../Components/Shifting/BoardView"; import { Redirect } from "raviger"; +import { AppRoutes } from "../AppRouter"; const getDefaultView = () => localStorage.getItem("defaultShiftView") === "list" ? "list" : "board"; -export default { +const ShiftingRoutes: AppRoutes = { "/shifting": () => , "/shifting/board": () => , "/shifting/list": () => , - "/shifting/:id": ({ id }: any) => , - "/shifting/:id/update": ({ id }: any) => , + "/shifting/:id": ({ id }) => , + "/shifting/:id/update": ({ id }) => , "/facility/:facilityId/patient/:patientId/shift/new": ({ facilityId, patientId, - }: any) => , + }) => , }; + +export default ShiftingRoutes; diff --git a/src/Routers/routes/UserRoutes.tsx b/src/Routers/routes/UserRoutes.tsx index 56877ca4c78..24f355b201b 100644 --- a/src/Routers/routes/UserRoutes.tsx +++ b/src/Routers/routes/UserRoutes.tsx @@ -1,9 +1,12 @@ import ManageUsers from "../../Components/Users/ManageUsers"; import { UserAdd } from "../../Components/Users/UserAdd"; import UserProfile from "../../Components/Users/UserProfile"; +import { AppRoutes } from "../AppRouter"; -export default { +const UserRoutes: AppRoutes = { "/users": () => , "/users/add": () => , "/user/profile": () => , }; + +export default UserRoutes; diff --git a/src/Utils/useTimer.tsx b/src/Utils/useTimer.tsx index 6a8d8320c5e..f7a03ffefa0 100644 --- a/src/Utils/useTimer.tsx +++ b/src/Utils/useTimer.tsx @@ -27,7 +27,7 @@ export const useTimer = (autoStart = false) => { const [time, setTime] = useState(0); useEffect(() => { - let interval: number; + let interval: ReturnType; if (running) { interval = setInterval(() => { setTime((prevTime) => prevTime + 1); diff --git a/src/pluginTypes.ts b/src/pluginTypes.ts new file mode 100644 index 00000000000..26a07e4f141 --- /dev/null +++ b/src/pluginTypes.ts @@ -0,0 +1,54 @@ +import { LazyExoticComponent } from "react"; +import { UserAssignedModel } from "./Components/Users/models"; +import { AppRoutes } from "./Routers/AppRouter"; +import { INavItem } from "./Components/Common/Sidebar/Sidebar"; +import { pluginMap } from "./pluginMap"; + +// Define the available plugins +export type AvailablePlugin = "@apps/care_livekit_fe"; + +export type AvailablePluginManifest = "@app-manifest/care_livekit_fe"; + +export type DoctorConnectButtonComponentType = React.FC<{ + user: UserAssignedModel; +}>; + +// Define supported plugin components +export type SupportedPluginComponents = { + DoctorConnectButtons: DoctorConnectButtonComponentType; +}; + +// Create a type for lazy-loaded components +// eslint-disable-next-line @typescript-eslint/no-explicit-any +type LazyComponent> = LazyExoticComponent; + +// Define PluginComponentMap with lazy-loaded components +export type PluginComponentMap = { + [K in keyof SupportedPluginComponents]?: LazyComponent< + SupportedPluginComponents[K] + >; +}; + +type SupportedPluginExtensions = + | "DoctorConnectButtons" + | "PatientExternalRegistration"; + +export type PluginManifest = { + plugin: string; + routes: AppRoutes; + extends: SupportedPluginExtensions[]; + components: PluginComponentMap; + navItems: INavItem[]; +}; + +// Create a type that ensures only available plugins can be used +export type EnabledPluginConfig = { + plugin: string; + manifestPath: AvailablePluginManifest; + path: AvailablePlugin; + manifest: Promise; + // Components are a dictionary, with the key being the component name, and the value being the component type + components: PluginComponentMap; +}; + +export { pluginMap }; diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts index 7657f7da19e..f339922bfae 100644 --- a/src/vite-env.d.ts +++ b/src/vite-env.d.ts @@ -31,6 +31,7 @@ interface ImportMetaEnv { readonly REACT_JWT_TOKEN_REFRESH_INTERVAL?: string; readonly REACT_MIN_ENCOUNTER_DATE?: string; readonly REACT_ALLOWED_LOCALES?: string; + readonly REACT_ENABLED_APPS?: string; // Plugins related envs... readonly REACT_PLAUSIBLE_SERVER_URL?: string; diff --git a/tsconfig.json b/tsconfig.json index 531d6f800e1..51ffeb4a0ae 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -19,9 +19,12 @@ "baseUrl": ".", "paths": { "@/*": ["./src/*"], + "@core/*": ["src/*"], + "@apps/*": ["apps/*/src"], + "@app-manifest/*": ["apps/*/src/manifest.ts"], "@careConfig": ["./care.config.ts"] } }, - "include": ["src", "care.config.ts"], + "include": ["src/**/*", "apps/**/*", "care.config.ts"], "exclude": ["src/**/*.gen.tsx"] } diff --git a/vite.config.mts b/vite.config.mts index acb0cdf727b..905374eb923 100644 --- a/vite.config.mts +++ b/vite.config.mts @@ -1,10 +1,12 @@ -import path from "node:path"; +import path from "path"; import { createRequire } from "node:module"; import { VitePWA } from "vite-plugin-pwa"; import react from "@vitejs/plugin-react-swc"; import checker from "vite-plugin-checker"; import { viteStaticCopy } from "vite-plugin-static-copy"; import { treeShakeCareIcons } from "./plugins/treeShakeCareIcons"; +import fs from "fs"; +import { defineConfig } from "vite"; const pdfWorkerPath = path.join( path.dirname( @@ -22,8 +24,56 @@ const cdnUrls = "http://localhost:4566", ].join(" "); +function getPluginAliases() { + const pluginsDir = path.resolve(__dirname, "apps"); + // Make sure the `apps` folder exists + if (!fs.existsSync(pluginsDir)) { + return {}; + } + const pluginFolders = fs.readdirSync(pluginsDir); + + const aliases = {}; + + pluginFolders.forEach((pluginFolder) => { + const pluginSrcPath = path.join(pluginsDir, pluginFolder, "src"); + if (fs.existsSync(pluginSrcPath)) { + aliases[`@apps/${pluginFolder}`] = pluginSrcPath; + aliases[`@app-manifest/${pluginFolder}`] = path.join( + pluginSrcPath, + "manifest.ts", + ); + } + }); + + return aliases; +} + +function getPluginDependencies() { + const pluginsDir = path.resolve(__dirname, "apps"); + // Make sure the `apps` folder exists + if (!fs.existsSync(pluginsDir)) { + return []; + } + const pluginFolders = fs.readdirSync(pluginsDir); + + const dependencies = new Set(); + + pluginFolders.forEach((pluginFolder) => { + const packageJsonPath = path.join(pluginsDir, pluginFolder, "package.json"); + if (fs.existsSync(packageJsonPath)) { + const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf8")); + const pluginDependencies = packageJson.dependencies + ? Object.keys(packageJson.dependencies) + : []; + pluginDependencies.forEach((dep) => dependencies.add(dep)); + } + }); + + return Array.from(dependencies); +} + /** @type {import('vite').UserConfig} */ -export default { +export default defineConfig({ envPrefix: "REACT_", plugins: [ viteStaticCopy({ @@ -86,10 +136,15 @@ export default { ], resolve: { alias: { + ...getPluginAliases(), "@": path.resolve(__dirname, "./src"), "@careConfig": path.resolve(__dirname, "./care.config.ts"), + "@core": path.resolve(__dirname, "src/"), }, }, + optimizeDeps: { + include: getPluginDependencies(), + }, build: { outDir: "build", assetsDir: "bundle", @@ -118,4 +173,4 @@ export default { }, port: 4000, }, -}; +}); From 2993e5a5dae22129de63df8bc15e9c12ab313100 Mon Sep 17 00:00:00 2001 From: Gigin George Date: Wed, 16 Oct 2024 16:25:34 +0530 Subject: [PATCH 14/25] Remove ThemedFavIcon --- src/App.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/App.tsx b/src/App.tsx index 180bd92839c..0b2d20e805a 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -11,7 +11,6 @@ import { Toaster } from "./Components/ui/toaster"; const App = () => { return ( }> - }> From 5a37ff1a2eaa2316f2fef4e640af5ecb9ca31f4d Mon Sep 17 00:00:00 2001 From: Shivank Kacker Date: Wed, 16 Oct 2024 16:46:50 +0530 Subject: [PATCH 15/25] Updated README: updated CARE logo (#8801) --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7ea8fe1a221..2504bf47fb7 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@

    - - CARE Logo + + CARE Logo

    From bbb7503279395d6c18e1e88b8ab96ac278963545 Mon Sep 17 00:00:00 2001 From: Vinu Date: Wed, 16 Oct 2024 16:52:57 +0530 Subject: [PATCH 16/25] Update styling for the side nav (#8789) Co-authored-by: Mohammed Nihal <57055998+nihal467@users.noreply.github.com> --- cypress/e2e/auth_spec/auth.cy.ts | 1 + .../patient_spec/PatientBedManagement.cy.ts | 2 +- .../patient_spec/PatientDoctorConnect.cy.ts | 3 +- .../e2e/patient_spec/PatientDoctorNotes.cy.ts | 2 +- cypress/e2e/users_spec/UsersCreation.cy.ts | 2 + cypress/pageobject/Login/LoginPage.ts | 2 + .../Patient/PatientDoctorConnect.ts | 4 +- .../pageobject/Patient/PatientDoctorNotes.ts | 6 + cypress/pageobject/Users/ManageUserPage.ts | 1 + package-lock.json | 461 ++++++++++++++++++ package.json | 2 + public/favicon.ico | Bin 6439 -> 15086 bytes src/CAREUI/icons/UniconPaths.json | 12 + src/Components/Common/Breadcrumbs.tsx | 4 +- src/Components/Common/Sidebar/Sidebar.tsx | 111 +++-- src/Components/Common/Sidebar/SidebarItem.tsx | 6 +- .../Common/Sidebar/SidebarUserCard.tsx | 93 ++-- src/Components/Facility/FacilityList.tsx | 2 +- src/Components/Notifications/NoticeBoard.tsx | 2 +- src/Components/Patient/ManagePatients.tsx | 2 +- src/Components/Resource/ResourceBoardView.tsx | 2 +- src/Components/ui/dropdown-menu.tsx | 203 ++++++++ src/Components/ui/tooltip.tsx | 28 ++ src/Locale/en.json | 18 +- 24 files changed, 863 insertions(+), 106 deletions(-) create mode 100644 src/Components/ui/dropdown-menu.tsx create mode 100644 src/Components/ui/tooltip.tsx diff --git a/cypress/e2e/auth_spec/auth.cy.ts b/cypress/e2e/auth_spec/auth.cy.ts index a535668ef01..b2bd7b634c0 100644 --- a/cypress/e2e/auth_spec/auth.cy.ts +++ b/cypress/e2e/auth_spec/auth.cy.ts @@ -6,6 +6,7 @@ describe("Authorisation/Authentication", () => { it("Try login as admin with correct password", () => { cy.loginByApi("devdistrictadmin", "Coronasafe@123"); cy.awaitUrl("/facility"); + cy.get("#user-profile-name").click(); cy.get("#sign-out-button").contains("Sign Out").click(); cy.url().should("include", "/"); }); diff --git a/cypress/e2e/patient_spec/PatientBedManagement.cy.ts b/cypress/e2e/patient_spec/PatientBedManagement.cy.ts index d9453806c9f..1964f913a03 100644 --- a/cypress/e2e/patient_spec/PatientBedManagement.cy.ts +++ b/cypress/e2e/patient_spec/PatientBedManagement.cy.ts @@ -10,7 +10,7 @@ describe("Patient swtich bed functionality", () => { const patientConsultationPage = new PatientConsultationPage(); const switchBedOne = "Dummy Bed 4"; const switchBedTwo = "Dummy Bed 1"; - const switchBedThree = "Dummy Bed 3"; + const switchBedThree = "Dummy Bed 7"; const switchPatientOne = "Dummy Patient 6"; const switchPatientTwo = "Dummy Patient 7"; diff --git a/cypress/e2e/patient_spec/PatientDoctorConnect.cy.ts b/cypress/e2e/patient_spec/PatientDoctorConnect.cy.ts index 64d47db2cf1..c1362c328c0 100644 --- a/cypress/e2e/patient_spec/PatientDoctorConnect.cy.ts +++ b/cypress/e2e/patient_spec/PatientDoctorConnect.cy.ts @@ -8,7 +8,6 @@ describe("Patient Doctor Connect in consultation page", () => { const doctorconnect = new DoctorConnect(); const patientName = "Dummy Patient 11"; const doctorUser = "Dev Doctor"; - const doctorUserNumber = "+919876543219"; const nurseUser = "Dev Staff"; const teleIcuUser = "Dev Doctor Two"; @@ -37,7 +36,7 @@ describe("Patient Doctor Connect in consultation page", () => { "#doctor-connect-home-doctor", doctorUser, ); - doctorconnect.verifyCopiedContent(doctorUserNumber); + doctorconnect.verifyCopiedContent(); // verify the whatsapp and phone number icon presence doctorconnect.verifyIconVisible("#whatsapp-icon"); doctorconnect.verifyIconVisible("#phone-icon"); diff --git a/cypress/e2e/patient_spec/PatientDoctorNotes.cy.ts b/cypress/e2e/patient_spec/PatientDoctorNotes.cy.ts index 94300cdb5c6..9a21eaea51f 100644 --- a/cypress/e2e/patient_spec/PatientDoctorNotes.cy.ts +++ b/cypress/e2e/patient_spec/PatientDoctorNotes.cy.ts @@ -37,7 +37,7 @@ describe("Patient Discussion notes in the consultation page", () => { cy.verifyNotification(discussionNotesSuccessMessage); cy.closeNotification(); // verify the auto-switching of tab to nurse notes if the user is a nurse - cy.get("#sign-out-button").contains("Sign Out").click(); + patientDoctorNotes.signout(); loginPage.loginManuallyAsNurse(); loginPage.ensureLoggedIn(); cy.visit("/patients"); diff --git a/cypress/e2e/users_spec/UsersCreation.cy.ts b/cypress/e2e/users_spec/UsersCreation.cy.ts index 0f592318888..2c5797fefa7 100644 --- a/cypress/e2e/users_spec/UsersCreation.cy.ts +++ b/cypress/e2e/users_spec/UsersCreation.cy.ts @@ -67,6 +67,7 @@ describe("User Creation", () => { it("Update the existing user profile and verify its reflection", () => { userCreationPage.clickElementById("user-profile-name"); + userCreationPage.clickElementById("profile-button"); userCreationPage.verifyElementContainsText( "username-profile-details", "devdistrictadmin", @@ -129,6 +130,7 @@ describe("User Creation", () => { it("Update the existing user profile Form Mandatory File Error", () => { userCreationPage.clickElementById("user-profile-name"); + userCreationPage.clickElementById("profile-button"); userCreationPage.clickElementById("edit-cancel-profile-button"); userCreationPage.clearIntoElementById("firstName"); userCreationPage.clearIntoElementById("lastName"); diff --git a/cypress/pageobject/Login/LoginPage.ts b/cypress/pageobject/Login/LoginPage.ts index 7ea94d54737..06bd165c9ac 100644 --- a/cypress/pageobject/Login/LoginPage.ts +++ b/cypress/pageobject/Login/LoginPage.ts @@ -30,6 +30,8 @@ class LoginPage { } ensureLoggedIn(): void { + cy.get("#user-profile-name").click(); + cy.get("#sign-out-button").scrollIntoView(); cy.get("#sign-out-button").contains("Sign Out").should("exist"); } } diff --git a/cypress/pageobject/Patient/PatientDoctorConnect.ts b/cypress/pageobject/Patient/PatientDoctorConnect.ts index b8c33bb4b24..9933c3a1dec 100644 --- a/cypress/pageobject/Patient/PatientDoctorConnect.ts +++ b/cypress/pageobject/Patient/PatientDoctorConnect.ts @@ -10,8 +10,8 @@ export class DoctorConnect { }); } - verifyCopiedContent(text: string) { - cy.get("@clipboardStub").should("be.calledWith", text); + verifyCopiedContent() { + cy.get("@clipboardStub").should("be.calledWithMatch", /^\+91\d{10}$/); } verifyIconVisible(selector: string) { diff --git a/cypress/pageobject/Patient/PatientDoctorNotes.ts b/cypress/pageobject/Patient/PatientDoctorNotes.ts index 9538b0eed3b..157f35d47d9 100644 --- a/cypress/pageobject/Patient/PatientDoctorNotes.ts +++ b/cypress/pageobject/Patient/PatientDoctorNotes.ts @@ -26,4 +26,10 @@ export class PatientDoctorNotes { .its("response.statusCode") .should("eq", 201); } + + signout() { + cy.get("#user-profile-name").click(); + cy.get("#sign-out-button").scrollIntoView(); + cy.get("#sign-out-button").contains("Sign Out").click(); + } } diff --git a/cypress/pageobject/Users/ManageUserPage.ts b/cypress/pageobject/Users/ManageUserPage.ts index efa0d90142c..470862693a8 100644 --- a/cypress/pageobject/Users/ManageUserPage.ts +++ b/cypress/pageobject/Users/ManageUserPage.ts @@ -75,6 +75,7 @@ export class ManageUserPage { navigateToProfile() { cy.intercept("GET", "**/api/v1/users/**").as("getUsers"); cy.get("#user-profile-name").click(); + cy.get("#profile-button").click(); cy.wait("@getUsers").its("response.statusCode").should("eq", 200); } diff --git a/package-lock.json b/package-lock.json index e5bae3c6d02..aa99337d8d6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,9 +19,11 @@ "@hello-pangea/dnd": "^17.0.0", "@pnotify/core": "^5.2.0", "@pnotify/mobile": "^5.2.0", + "@radix-ui/react-dropdown-menu": "^2.1.2", "@radix-ui/react-icons": "^1.3.0", "@radix-ui/react-slot": "^1.1.0", "@radix-ui/react-toast": "^1.2.2", + "@radix-ui/react-tooltip": "^1.1.3", "@sentry/browser": "^8.33.0", "@yudiel/react-qr-scanner": "^2.0.8", "axios": "^1.7.7", @@ -3121,6 +3123,28 @@ "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.0.tgz", "integrity": "sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==" }, + "node_modules/@radix-ui/react-arrow": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.0.tgz", + "integrity": "sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==", + "dependencies": { + "@radix-ui/react-primitive": "2.0.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-collection": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.0.tgz", @@ -3188,6 +3212,20 @@ } } }, + "node_modules/@radix-ui/react-direction": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.0.tgz", + "integrity": "sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-dismissable-layer": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.1.tgz", @@ -3214,6 +3252,72 @@ } } }, + "node_modules/@radix-ui/react-dropdown-menu": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.2.tgz", + "integrity": "sha512-GVZMR+eqK8/Kes0a36Qrv+i20bAPXSn8rCBTHx30w+3ECnR5o3xixAlqcVaYvLeyKUsm0aqyhWfmUcqufM8nYA==", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-menu": "2.1.2", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.1.tgz", + "integrity": "sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.0.tgz", + "integrity": "sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-icons": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@radix-ui/react-icons/-/react-icons-1.3.0.tgz", @@ -3222,6 +3326,107 @@ "react": "^16.x || ^17.x || ^18.x" } }, + "node_modules/@radix-ui/react-id": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.0.tgz", + "integrity": "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menu": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.2.tgz", + "integrity": "sha512-lZ0R4qR2Al6fZ4yCCZzu/ReTFrylHFxIqy7OezIpWF4bL0o9biKo0pFIvkaew3TyZ9Fy5gYVrR5zCGZBVbO1zg==", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-collection": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-dismissable-layer": "1.1.1", + "@radix-ui/react-focus-guards": "1.1.1", + "@radix-ui/react-focus-scope": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-popper": "1.2.0", + "@radix-ui/react-portal": "1.1.2", + "@radix-ui/react-presence": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-roving-focus": "1.1.0", + "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.6.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popper": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.0.tgz", + "integrity": "sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==", + "dependencies": { + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-use-rect": "1.1.0", + "@radix-ui/react-use-size": "1.1.0", + "@radix-ui/rect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-context": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz", + "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-portal": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.2.tgz", @@ -3290,6 +3495,50 @@ } } }, + "node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.0.tgz", + "integrity": "sha512-EA6AMGeq9AEeQDeSH0aZgG198qkfHSbvWTf1HvoDmOB5bBG/qTxjYMWUKMnYiV6J/iP/J8MEFSuB2zRU2n7ODA==", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-collection": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-roving-focus/node_modules/@radix-ui/react-context": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz", + "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-slot": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.0.tgz", @@ -3340,6 +3589,39 @@ } } }, + "node_modules/@radix-ui/react-tooltip": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.1.3.tgz", + "integrity": "sha512-Z4w1FIS0BqVFI2c1jZvb/uDVJijJjJ2ZMuPV81oVgTZ7g3BZxobplnMVvXtFWgtozdvYJ+MFWtwkM5S2HnAong==", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.1", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-popper": "1.2.0", + "@radix-ui/react-portal": "1.1.2", + "@radix-ui/react-presence": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-visually-hidden": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-use-callback-ref": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", @@ -3402,6 +3684,40 @@ } } }, + "node_modules/@radix-ui/react-use-rect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.0.tgz", + "integrity": "sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==", + "dependencies": { + "@radix-ui/rect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-size": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz", + "integrity": "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-visually-hidden": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.1.0.tgz", @@ -3424,6 +3740,11 @@ } } }, + "node_modules/@radix-ui/rect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.0.tgz", + "integrity": "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==" + }, "node_modules/@react-aria/focus": { "version": "3.18.4", "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.18.4.tgz", @@ -5272,6 +5593,17 @@ "node": ">=14.0.0" } }, + "node_modules/aria-hidden": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", + "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/array-buffer-byte-length": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", @@ -6737,6 +7069,11 @@ "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", "dev": true }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" + }, "node_modules/detective-amd": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/detective-amd/-/detective-amd-6.0.0.tgz", @@ -8409,6 +8746,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "engines": { + "node": ">=6" + } + }, "node_modules/get-own-enumerable-property-symbols": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", @@ -9228,6 +9573,14 @@ "node": ">= 0.10" } }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, "node_modules/is-alphabetical": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", @@ -14672,6 +15025,73 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" }, + "node_modules/react-remove-scroll": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.0.tgz", + "integrity": "sha512-I2U4JVEsQenxDAKaVa3VZ/JeJZe0/2DxPWL8Tj8yLKctQJQiZM52pn/GWFpSp8dftjM3pSAHVJZscAnC/y+ySQ==", + "dependencies": { + "react-remove-scroll-bar": "^2.3.6", + "react-style-singleton": "^2.2.1", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz", + "integrity": "sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==", + "dependencies": { + "react-style-singleton": "^2.2.1", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-style-singleton": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", + "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", + "dependencies": { + "get-nonce": "^1.0.0", + "invariant": "^2.2.4", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/react-webcam": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/react-webcam/-/react-webcam-7.2.0.tgz", @@ -17557,6 +17977,26 @@ "requires-port": "^1.0.0" } }, + "node_modules/use-callback-ref": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.2.tgz", + "integrity": "sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/use-keyboard-shortcut": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/use-keyboard-shortcut/-/use-keyboard-shortcut-1.1.6.tgz", @@ -17574,6 +18014,27 @@ "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, + "node_modules/use-sidecar": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", + "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/use-sync-external-store": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz", diff --git a/package.json b/package.json index 7749374be44..4c57b3e0ee1 100644 --- a/package.json +++ b/package.json @@ -57,9 +57,11 @@ "@hello-pangea/dnd": "^17.0.0", "@pnotify/core": "^5.2.0", "@pnotify/mobile": "^5.2.0", + "@radix-ui/react-dropdown-menu": "^2.1.2", "@radix-ui/react-icons": "^1.3.0", "@radix-ui/react-slot": "^1.1.0", "@radix-ui/react-toast": "^1.2.2", + "@radix-ui/react-tooltip": "^1.1.3", "@sentry/browser": "^8.33.0", "@yudiel/react-qr-scanner": "^2.0.8", "axios": "^1.7.7", diff --git a/public/favicon.ico b/public/favicon.ico index 67a5686e32ffe2212a032deb9ee098827e52f887..d712ea36545e74e1b50e9097c54194bf8e17a6a4 100644 GIT binary patch literal 15086 zcmeHOTW=dh6dpTCn~UwlP8;XaII&#^=T=e@r%4m%QYvyms?<;rNL0`?5f!LFq9P>d zLxHLf`~nd0&VMNMHvny_KJgFQ7odQkI-GC4>x}K0b=GlQn{K6(SJxBaED zquToqa(CPD7CJiGs+8zLn9?7ND02^T5_GW9`L`unoQ@BU`VY7xhtFOeR*D^WE2qLn z=a1OHaFAae@oyjU)7*#p_O&>cT4LO5A9gf8xcoI^Z7I*dZGZdm!|ng-d7ahQp7s6{ zne3po&t_=tbG6KEj!+=lME<@;rF2iW7ahM~qw_~>VCe9{4IHKMAt!%MUmT>(?^d+3 zv^`FBt@`h${mviiczg$j9S3l9`K$Ak+x~93ca05qO{yEfMPod*J3MKqX8CdM0SH75~ z3pdrWaODKG#+u0&X;cbyu+jM=_Q07QCAPtdxq+jOzf>>VWUu>9bP`SGBGjjoSwaBN`Y``P@?8NY1ojF>KexBc__h}(ap`ChfZzrCrWwEoqSHh-*K zOHqB$tIZ$K!A6&Vkl%rk*GKGrJL*5ky~(q^lzJ_pl#ZbQ@!qQ*k9Dxo`6G5-e%Hs! ztou3Q@1R|Z;g(DPf8dWjuyVCWrQ?7*_8=>bTQ0o2!Y4khRsPKVI`-h1|NR=ghx^9) z0i1ydh*jqQpoZ?@0ds!YIKPoOgpxTwlj%!1hl0HHca;e^?V!KQ=Vxw!zbA7O?%&F_ zzzslgyW^ZzKg$A3_M8@<;Zpqb@L8c#{0wjN9O1VE?^_v++rTuaWw4*dS(C@iVT$kf z2bOZ>eW!7LWb8kj;$y!Ob52=GJbwc0f1KcBofhX^VrM!j_M$0#jXJwETnz@W9pU?W z8)^7_U%_51>Y&r$=<1#0^BRg4pLH(2qj$-+{n5Vzyfzga@MWcIJV;}2#0s82>Y$Tt zv95&}HqXQs-^cqY6PFTn`rVqWMS{i+6Qx5!neq| zF5CNe@hj8*$ld+Z9dvRno+BsDMJcw}Nzuh{Rt8pjD78LN&?is_oopLrU&P3d3oLWI zFrI%suTP)7da_{s;@tHq&gr@D57v7nSUrS^#kv1m(mfWU#*T)9n5cu!vO@`9#3&UXemJ{; zTxp5j92+{z4kdhTu%Sc$cl`ZPBxW&8Sr2S{1IcxjyuQQVfYXfsw7x&5&2M0ExWi(7 zk6C%?AWC2u_ibP+76d9;g>?%4uV%(tMRuJ+wQkfR-elenS^jk>4@HZ(X!@4gw}AVE zrNAHGy%TRG48gU^#`IPCcc((xxg4%5<&WWC$3QkT^;2L$%Dg5yc Zh#^Q7L4uE7Qa})CA{G#kqCTZaF(M!( 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 Apa1{> diff --git a/src/CAREUI/icons/UniconPaths.json b/src/CAREUI/icons/UniconPaths.json index 1a76c51570d..64f97d72d65 100644 --- a/src/CAREUI/icons/UniconPaths.json +++ b/src/CAREUI/icons/UniconPaths.json @@ -247,6 +247,10 @@ 24, "M7,11H17a1,1,0,0,0,0-2H13V5.41l.79.8a1,1,0,0,0,1.42,0,1,1,0,0,0,0-1.42l-2.5-2.5a1,1,0,0,0-.33-.21,1,1,0,0,0-.76,0,1,1,0,0,0-.33.21l-2.5,2.5a1,1,0,0,0,1.42,1.42l.79-.8V9H7a1,1,0,0,0,0,2Zm10,2H7a1,1,0,0,0,0,2h4v3.59l-.79-.8a1,1,0,0,0-1.42,1.42l2.5,2.5a1,1,0,0,0,.33.21.94.94,0,0,0,.76,0,1,1,0,0,0,.33-.21l2.5-2.5a1,1,0,0,0-1.42-1.42l-.79.8V15h4a1,1,0,0,0,0-2Z" ], + "l-arrow-bar-right": [ + 24, + "M8.4 12c0 .4.3.7.7.7h8.3l-3.1 3.1c-.3.3-.3.7 0 1s.7.3 1 0l4.3-4.3c.3-.3.3-.7 0-1 0 0 0 0 0 0l-4.3-4.3c-.3-.3-.7-.3-1 0s-.3.7 0 1l3.1 3.1h-8.3c-.4 0-.7.3-.7.7M4.9 22c-.4 0-.7-.3-.7-.7V2.7c0-.4.3-.7.7-.7s.7.3.7.7v18.6c0 .4-.3.7-.7.7" + ], "l-arrow-circle-down": [ 24, "M11.29,15.71a1,1,0,0,0,.33.21,1,1,0,0,0,.76,0,1,1,0,0,0,.33-.21l3-3a1,1,0,0,0-1.42-1.42L13,12.59V9a1,1,0,0,0-2,0v3.59l-1.29-1.3a1,1,0,0,0-1.42,0,1,1,0,0,0,0,1.42ZM12,22A10,10,0,1,0,2,12,10,10,0,0,0,12,22ZM12,4a8,8,0,1,1-8,8A8,8,0,0,1,12,4Z" @@ -2795,6 +2799,14 @@ 24, "M2.5,10.56l9,5.2a1,1,0,0,0,1,0l9-5.2a1,1,0,0,0,0-1.73l-9-5.2a1,1,0,0,0-1,0l-9,5.2a1,1,0,0,0,0,1.73ZM12,5.65l7,4-7,4.05L5,9.69Zm8.5,7.79L12,18.35,3.5,13.44a1,1,0,0,0-1.37.36,1,1,0,0,0,.37,1.37l9,5.2a1,1,0,0,0,1,0l9-5.2a1,1,0,0,0,.37-1.37A1,1,0,0,0,20.5,13.44Z" ], + "l-layout-sidebar": [ + 24, + "M0 4.5C0 2.8 1.3 1.5 3 1.5h18c1.7 0 3 1.3 3 3v15c0 1.7-1.3 3-3 3H3c-1.7 0-3-1.3-3-3V4.5ZM7.5 3v18h13.5c.8 0 1.5-.7 1.5-1.5V4.5c0-.8-.7-1.5-1.5-1.5H7.5ZM6 3h-3c-.8 0-1.5.7-1.5 1.5v15c0 .8.7 1.5 1.5 1.5h3V3Z" + ], + "l-layout-sidebar-alt": [ + 24, + "M21 1.5H3C1.3 1.5 0 2.8 0 4.5v15c0 1.7 1.3 3 3 3h18c1.7 0 3-1.3 3-3V4.5c0-1.7-1.3-3-3-3ZM22.5 19.5c0 .8-.7 1.5-1.5 1.5H3c-.8 0-1.5-.7-1.5-1.5V4.5c0-.8.7-1.5 1.5-1.5h18c.8 0 1.5.7 1.5 1.5v15ZM10.5 6v12c0 .8-.7 1.5-1.5 1.5h-3c-.8 0-1.5-.7-1.5-1.5V6c0-.8.7-1.5 1.5-1.5h3c.8 0 1.5.7 1.5 1.5Z" + ], "l-left-arrow-from-left": [ 24, "M17,11H5.41l2.3-2.29A1,1,0,1,0,6.29,7.29l-4,4a1,1,0,0,0-.21.33,1,1,0,0,0,0,.76,1,1,0,0,0,.21.33l4,4a1,1,0,0,0,1.42,0,1,1,0,0,0,0-1.42L5.41,13H17a1,1,0,0,0,0-2Zm4-7a1,1,0,0,0-1,1V19a1,1,0,0,0,2,0V5A1,1,0,0,0,21,4Z" diff --git a/src/Components/Common/Breadcrumbs.tsx b/src/Components/Common/Breadcrumbs.tsx index aaee7ac0b64..be35cf6862d 100644 --- a/src/Components/Common/Breadcrumbs.tsx +++ b/src/Components/Common/Breadcrumbs.tsx @@ -63,7 +63,7 @@ export default function Breadcrumbs({ return (
  • @@ -90,7 +90,7 @@ export default function Breadcrumbs({
  • )}
    -
    {/* flexible spacing */} -
    +
    {NavItems.map((i) => { @@ -225,18 +232,28 @@ interface ToggleShrinkProps { toggle: () => void; } -const ToggleShrink = ({ shrinked, toggle }: ToggleShrinkProps) => ( -
    - -
    -); +const ToggleShrink = ({ shrinked, toggle }: ToggleShrinkProps) => { + const { t } = useTranslation(); + return ( + + + + + + +

    {shrinked ? t("expand_sidebar") : t("collapse_sidebar")}

    +
    +
    +
    + ); +}; diff --git a/src/Components/Common/Sidebar/SidebarItem.tsx b/src/Components/Common/Sidebar/SidebarItem.tsx index eeee4284e2f..6db51bbac3a 100644 --- a/src/Components/Common/Sidebar/SidebarItem.tsx +++ b/src/Components/Common/Sidebar/SidebarItem.tsx @@ -29,9 +29,9 @@ const SidebarItemBase = forwardRef( return ( ( {t(props.text)} diff --git a/src/Components/Common/Sidebar/SidebarUserCard.tsx b/src/Components/Common/Sidebar/SidebarUserCard.tsx index 4630438ab70..825507ffb25 100644 --- a/src/Components/Common/Sidebar/SidebarUserCard.tsx +++ b/src/Components/Common/Sidebar/SidebarUserCard.tsx @@ -5,6 +5,13 @@ import CareIcon from "../../../CAREUI/icons/CareIcon"; import { formatName, formatDisplayName } from "../../../Utils/utils"; import useAuthUser, { useAuthContext } from "../../../Common/hooks/useAuthUser"; import { Avatar } from "@/Components/Common/Avatar"; +import { Button } from "@/Components/ui/button"; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuTrigger, +} from "@/Components/ui/dropdown-menu"; interface SidebarUserCardProps { shrinked: boolean; @@ -16,41 +23,59 @@ const SidebarUserCard: React.FC = ({ shrinked }) => { const { signOut } = useAuthContext(); return ( -
    - -
    -
    - -
    - {!shrinked && ( - - {formatName(user)} - - )} -
    - -
    -
    - - {!shrinked && ( -
    - {t("sign_out")} +
    + + +
    -
    +
    + +
    +
    + + + +
    {t("profile")}
    +
    + + +
    {t("sign_out")}
    +
    +
    +
    + + +
    ); }; diff --git a/src/Components/Facility/FacilityList.tsx b/src/Components/Facility/FacilityList.tsx index 503f0fde34d..9143ec29355 100644 --- a/src/Components/Facility/FacilityList.tsx +++ b/src/Components/Facility/FacilityList.tsx @@ -145,7 +145,7 @@ export const FacilityList = () => { return ( { if (loading) return ; return ( - +
    {notices}
    ); diff --git a/src/Components/Patient/ManagePatients.tsx b/src/Components/Patient/ManagePatients.tsx index 46dad347dd5..5259909bebe 100644 --- a/src/Components/Patient/ManagePatients.tsx +++ b/src/Components/Patient/ManagePatients.tsx @@ -786,7 +786,7 @@ export const PatientManager = () => { return (
    , + React.ComponentPropsWithoutRef & { + inset?: boolean; + } +>(({ className, inset, children, ...props }, ref) => ( + + {children} + + +)); +DropdownMenuSubTrigger.displayName = + DropdownMenuPrimitive.SubTrigger.displayName; + +const DropdownMenuSubContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +DropdownMenuSubContent.displayName = + DropdownMenuPrimitive.SubContent.displayName; + +const DropdownMenuContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, sideOffset = 4, ...props }, ref) => ( + + + +)); +DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName; + +const DropdownMenuItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & { + inset?: boolean; + } +>(({ className, inset, ...props }, ref) => ( + +)); +DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName; + +const DropdownMenuCheckboxItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, checked, ...props }, ref) => ( + + + + + + + {children} + +)); +DropdownMenuCheckboxItem.displayName = + DropdownMenuPrimitive.CheckboxItem.displayName; + +const DropdownMenuRadioItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + + + + + + {children} + +)); +DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName; + +const DropdownMenuLabel = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & { + inset?: boolean; + } +>(({ className, inset, ...props }, ref) => ( + +)); +DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName; + +const DropdownMenuSeparator = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName; + +const DropdownMenuShortcut = ({ + className, + ...props +}: React.HTMLAttributes) => { + return ( + + ); +}; +DropdownMenuShortcut.displayName = "DropdownMenuShortcut"; + +export { + DropdownMenu, + DropdownMenuTrigger, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuCheckboxItem, + DropdownMenuRadioItem, + DropdownMenuLabel, + DropdownMenuSeparator, + DropdownMenuShortcut, + DropdownMenuGroup, + DropdownMenuPortal, + DropdownMenuSub, + DropdownMenuSubContent, + DropdownMenuSubTrigger, + DropdownMenuRadioGroup, +}; diff --git a/src/Components/ui/tooltip.tsx b/src/Components/ui/tooltip.tsx new file mode 100644 index 00000000000..be192b1fb66 --- /dev/null +++ b/src/Components/ui/tooltip.tsx @@ -0,0 +1,28 @@ +import * as React from "react"; +import * as TooltipPrimitive from "@radix-ui/react-tooltip"; + +import { cn } from "@/lib/utils"; + +const TooltipProvider = TooltipPrimitive.Provider; + +const Tooltip = TooltipPrimitive.Root; + +const TooltipTrigger = TooltipPrimitive.Trigger; + +const TooltipContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, sideOffset = 4, ...props }, ref) => ( + +)); +TooltipContent.displayName = TooltipPrimitive.Content.displayName; + +export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }; diff --git a/src/Locale/en.json b/src/Locale/en.json index 0df3c961e10..94e9bd0f3a9 100644 --- a/src/Locale/en.json +++ b/src/Locale/en.json @@ -88,8 +88,8 @@ "state": "State", "location": "Location", "ward": "Ward", - "Notice Board": "Notice Board", - "Assets": "Assets", + "notice_board": "Notice Board", + "assets": "Assets", "Notifications": "Notifications", "Submit": "Submit", "Cancel": "Cancel", @@ -416,14 +416,10 @@ "help_entered-in-error": "The statement was entered in error and is not valid.", "search_icd11_placeholder": "Search for ICD-11 Diagnoses", "icd11_as_recommended": "As per ICD-11 recommended by WHO", - "Facilities": "Facilities", - "Patients": "Patients", - "Sample Test": "Sample Test", - "Shifting": "Shifting", - "Resource": "Resource", - "Users": "Users", - "Profile": "Profile", - "Dashboard": "Dashboard", + "patients": "Patients", + "sample_test": "Sample Test", + "resource": "Resource", + "profile": "Profile", "return_to_care": "Return to CARE", "404_message": "It appears that you have stumbled upon a page that either does not exist or has been moved to another URL. Make sure you have entered the correct link!", "error_404": "Error 404", @@ -1050,5 +1046,7 @@ "patient_details": "Patient Details", "width": "Width ({{unit}})", "length": "Length ({{unit}})", + "expand_sidebar": "Expand Sidebar", + "collapse_sidebar": "Collapse Sidebar", "linked_skills": "Linked Skills" } \ No newline at end of file From 1c1db13c63337df7e5f2585023e00cf230b2e1b9 Mon Sep 17 00:00:00 2001 From: Aditya Jindal Date: Wed, 16 Oct 2024 17:39:46 +0530 Subject: [PATCH 17/25] Fixing: Switch Blood Pressure and temperature dropdown to use TextFormField with type="number" instead of a dropdown #8644 (#8728) --- .../e2e/patient_spec/PatientLogUpdate.cy.ts | 4 +- .../pageobject/Patient/PatientLogupdate.ts | 10 +- .../Common/BloodPressureFormField.tsx | 87 ++++------ .../Common/TemperatureFormField.tsx | 155 ++++++++++-------- src/Components/Patient/DailyRounds.tsx | 24 ++- src/Locale/en.json | 6 + 6 files changed, 155 insertions(+), 131 deletions(-) diff --git a/cypress/e2e/patient_spec/PatientLogUpdate.cy.ts b/cypress/e2e/patient_spec/PatientLogUpdate.cy.ts index 7faaeed5a9f..3907784b4b7 100644 --- a/cypress/e2e/patient_spec/PatientLogUpdate.cy.ts +++ b/cypress/e2e/patient_spec/PatientLogUpdate.cy.ts @@ -302,9 +302,9 @@ describe("Patient Log Update in Normal, Critical and TeleIcu", () => { patientRhythm, ]); patientLogupdate.clickUpdateDetail(); - patientLogupdate.clickClearButtonInElement("#systolic"); + patientLogupdate.clearIntoElementById("#systolic"); patientLogupdate.typeSystolic(patientModifiedSystolic); - patientLogupdate.clickClearButtonInElement("#diastolic"); + patientLogupdate.clearIntoElementById("#diastolic"); patientLogupdate.typeDiastolic(patientModifiedDiastolic); cy.submitButton("Continue"); cy.verifyNotification("Brief Update updated successfully"); diff --git a/cypress/pageobject/Patient/PatientLogupdate.ts b/cypress/pageobject/Patient/PatientLogupdate.ts index 857fe7dd972..d7b49fde05e 100644 --- a/cypress/pageobject/Patient/PatientLogupdate.ts +++ b/cypress/pageobject/Patient/PatientLogupdate.ts @@ -43,11 +43,11 @@ class PatientLogupdate { } typeSystolic(systolic: string) { - cy.typeAndSelectOption("#systolic", systolic); + cy.get("#systolic").click().type(systolic); } typeDiastolic(diastolic: string) { - cy.typeAndSelectOption("#diastolic", diastolic); + cy.get("#diastolic").click().type(diastolic); } typePulse(pulse: string) { @@ -55,7 +55,7 @@ class PatientLogupdate { } typeTemperature(temperature: string) { - cy.typeAndSelectOption("#temperature", temperature); + cy.get("#temperature").click().type(temperature); } typeRespiratory(respiratory: string) { @@ -93,8 +93,8 @@ class PatientLogupdate { cy.wait(3000); } - clickClearButtonInElement(elementId: string) { - cy.get(elementId).find("#clear-button").click(); + clearIntoElementById(elementId) { + cy.get(elementId).click().clear(); } clickVitals() { diff --git a/src/Components/Common/BloodPressureFormField.tsx b/src/Components/Common/BloodPressureFormField.tsx index e6fff756d0f..beddd34cf38 100644 --- a/src/Components/Common/BloodPressureFormField.tsx +++ b/src/Components/Common/BloodPressureFormField.tsx @@ -1,13 +1,13 @@ import { useTranslation } from "react-i18next"; import { FieldValidator } from "../Form/FieldValidators"; import FormField from "../Form/FormFields/FormField"; -import RangeAutocompleteFormField from "../Form/FormFields/RangeAutocompleteFormField"; import { FieldChangeEvent, FormFieldBaseProps, useFormFieldPropsResolver, } from "../Form/FormFields/Utils"; import { BloodPressure } from "../Patient/models"; +import TextFormField from "../Form/FormFields/TextFormField"; type Props = FormFieldBaseProps; @@ -16,12 +16,13 @@ export default function BloodPressureFormField(props: Props) { const field = useFormFieldPropsResolver(props); const map = meanArterialPressure(props.value)?.toFixed(); - const handleChange = (event: FieldChangeEvent) => { + const handleChange = (event: FieldChangeEvent) => { + const value = event.value ? parseInt(event.value, 10) : ""; const bp = { systolic: field.value?.systolic, diastolic: field.value?.diastolic, }; - bp[event.name as keyof BloodPressure] = event.value; + bp[event.name as keyof BloodPressure] = value || undefined; field.handleChange(Object.values(bp).filter(Boolean).length ? bp : null); }; @@ -32,63 +33,35 @@ export default function BloodPressureFormField(props: Props) { labelSuffix: map && MAP: {map}, }} > -
    - + - / - / +
    @@ -102,14 +75,20 @@ export const meanArterialPressure = (bp?: BloodPressure | null) => { return (2 * bp.diastolic + bp.systolic) / 3; }; -export const BloodPressureValidator: FieldValidator = (bp) => { +export const BloodPressureValidator: FieldValidator = ( + bp, + t, +) => { if (Object.values(bp).every((v) => v == null)) { return; } - if (bp.diastolic == null) { - return "Diastolic is missing. Either specify both or clear both."; + if (bp.systolic == null || bp.diastolic == null) { + return t("blood_pressure_error.missing"); + } + if (bp.systolic > 250 || bp.diastolic > 250) { + return t("blood_pressure_error.exceed"); } - if (bp.systolic == null) { - return "Systolic is missing. Either specify both or clear both."; + if (bp.systolic < bp.diastolic) { + return t("blood_pressure_error.systolic_less_than_diastolic"); } }; diff --git a/src/Components/Common/TemperatureFormField.tsx b/src/Components/Common/TemperatureFormField.tsx index 236d87826e9..7b2d7124f09 100644 --- a/src/Components/Common/TemperatureFormField.tsx +++ b/src/Components/Common/TemperatureFormField.tsx @@ -1,77 +1,100 @@ -import { useState } from "react"; -import { FormFieldBaseProps } from "../Form/FormFields/Utils"; -import RangeAutocompleteFormField from "../Form/FormFields/RangeAutocompleteFormField"; +import { useState, useEffect } from "react"; +import { FieldChangeEvent, FormFieldBaseProps } from "../Form/FormFields/Utils"; +import { fahrenheitToCelsius, celsiusToFahrenheit } from "@/Utils/utils"; import CareIcon from "../../CAREUI/icons/CareIcon"; import ButtonV2 from "./components/ButtonV2"; -import { fahrenheitToCelsius } from "../../Utils/utils"; +import TextFormField from "../Form/FormFields/TextFormField"; type TemperatureUnit = "celsius" | "fahrenheit"; -type Props = FormFieldBaseProps & { - placeholder?: string; -}; +type TemperatureFormFieldProps = FormFieldBaseProps; -export default function TemperatureFormField(props: Props) { +export default function TemperatureFormField({ + onChange, + id, + label, + error, + value, + name, +}: TemperatureFormFieldProps) { const [unit, setUnit] = useState("fahrenheit"); + const [inputValue, setInputValue] = useState(value || ""); + + useEffect(() => { + if (value) { + const initialTemperature = + unit === "celsius" + ? fahrenheitToCelsius(parseFloat(value)).toFixed(1) + : value; + setInputValue(initialTemperature); + } + }, [value, unit]); + + const handleUnitChange = () => { + setUnit(unit === "celsius" ? "fahrenheit" : "celsius"); + if (inputValue) { + const convertedValue = + unit === "celsius" + ? celsiusToFahrenheit(parseFloat(inputValue)).toFixed(1) + : fahrenheitToCelsius(parseFloat(inputValue)).toFixed(1); + setInputValue(convertedValue); + } + }; + + const handleInputChange = (e: FieldChangeEvent) => { + const newValue = e.value; + + const regex = /^-?\d*\.?\d{0,1}$/; + if (regex.test(newValue)) { + setInputValue(newValue); + } + }; + + const handleBlur = () => { + if (!inputValue) return; + const parsedValue = parseFloat(inputValue); + if (isNaN(parsedValue)) return; + + const finalValue = + unit === "celsius" + ? celsiusToFahrenheit(parsedValue).toString() + : parsedValue.toString(); + + setInputValue(finalValue); + onChange({ name, value: finalValue }); + }; return ( - , - className: "text-danger-500", - }, - { - value: 96.6, - label: "Low", - icon: , - className: "text-warning-500", - }, - { - value: 97.6, - label: "Normal", - icon: , - className: "text-primary-500", - }, - { - value: 99.6, - label: "High", - icon: , - className: "text-warning-500", - }, - { - value: 101.6, - label: "High", - icon: , - className: "text-danger-500", - }, - ]} - optionLabel={(value) => { - const val = unit === "celsius" ? fahrenheitToCelsius(value) : value; - return val.toFixed(1); - }} - labelSuffix={ - setUnit(unit === "celsius" ? "fahrenheit" : "celsius")} - > - - - } - /> +
    + + + + + +
    ); } diff --git a/src/Components/Patient/DailyRounds.tsx b/src/Components/Patient/DailyRounds.tsx index bf25d48f6bf..3e10383e78a 100644 --- a/src/Components/Patient/DailyRounds.tsx +++ b/src/Components/Patient/DailyRounds.tsx @@ -1,5 +1,4 @@ import { navigate } from "raviger"; - import dayjs from "dayjs"; import { useCallback, useEffect, useState } from "react"; import { @@ -126,7 +125,6 @@ export const DailyRounds = (props: any) => { return state; } }; - const [state, dispatch] = useAutoSaveReducer( DailyRoundsFormReducer, initialState, @@ -249,7 +247,9 @@ export const DailyRounds = (props: any) => { } return; case "bp": { - const error = state.form.bp && BloodPressureValidator(state.form.bp); + const error = + state.form.bp && BloodPressureValidator(state.form.bp, t); + if (error) { errors.bp = error; invalidForm = true; @@ -258,6 +258,23 @@ export const DailyRounds = (props: any) => { return; } + case "temperature": { + const temperatureInputValue = state.form["temperature"]; + + if ( + temperatureInputValue && + (temperatureInputValue < 95 || temperatureInputValue > 106) + ) { + errors[field] = t("out_of_range_error", { + start: "95°F (35°C)", + end: "106°F (41.1°C)", + }); + invalidForm = true; + scrollTo("temperature"); + } + return; + } + case "investigations": { for (const investigation of state.form.investigations) { if (!investigation.type?.length) { @@ -773,7 +790,6 @@ export const DailyRounds = (props: any) => { /> )} - {["NORMAL", "TELEMEDICINE", "DOCTORS_LOG"].includes( state.form.rounds_type, ) && ( diff --git a/src/Locale/en.json b/src/Locale/en.json index 94e9bd0f3a9..5f2652fa91b 100644 --- a/src/Locale/en.json +++ b/src/Locale/en.json @@ -813,6 +813,12 @@ "map_acronym": "M.A.P.", "systolic": "Systolic", "diastolic": "Diastolic", + "blood_pressure_error": { + "missing": "Field is required. Either specify both or clear both.", + "exceed": "Value cannot exceed 250 mmHg.", + "systolic_less_than_diastolic": "Systolic must be greater than diastolic." + }, + "out_of_range_error": "Value must be between {{ start }} and {{ end }}.", "pain": "Pain", "pain_chart_description": "Mark region and intensity of pain", "bradycardia": "Bradycardia", From 7491447557fdf9ab43842005b56c49a20df2f351 Mon Sep 17 00:00:00 2001 From: Jacob John Jeevan <40040905+Jacobjeevan@users.noreply.github.com> Date: Wed, 16 Oct 2024 17:40:46 +0530 Subject: [PATCH 18/25] Map mobile view fix (#8793) --- src/Components/Common/GLocationPicker.tsx | 2 +- src/Components/Facility/FacilityCreate.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Components/Common/GLocationPicker.tsx b/src/Components/Common/GLocationPicker.tsx index 0b03d2775ce..1c9c8f963b6 100644 --- a/src/Components/Common/GLocationPicker.tsx +++ b/src/Components/Common/GLocationPicker.tsx @@ -83,7 +83,7 @@ const GLocationPicker = ({ }; return ( -
    +
    { leaveFrom="opacity-100 translate-y-0" leaveTo="opacity-0 translate-y-1" > - + Date: Wed, 16 Oct 2024 17:44:44 +0530 Subject: [PATCH 19/25] Added Infinite Scrolling and Previous Item Persistence in Notifications (#8771) --- .../Notifications/NotificationsList.tsx | 54 ++++++++++++------- 1 file changed, 35 insertions(+), 19 deletions(-) diff --git a/src/Components/Notifications/NotificationsList.tsx b/src/Components/Notifications/NotificationsList.tsx index de9618809b4..30c380fe9a6 100644 --- a/src/Components/Notifications/NotificationsList.tsx +++ b/src/Components/Notifications/NotificationsList.tsx @@ -1,5 +1,5 @@ import { navigate } from "raviger"; -import { useEffect, useState } from "react"; +import { useEffect, useRef, useState } from "react"; import Spinner from "../Common/Spinner"; import { NOTIFICATION_EVENTS } from "../../Common/constants"; import { Error, Success, Warn } from "../../Utils/Notifications.js"; @@ -183,6 +183,7 @@ export default function NotificationsList({ const [isSubscribed, setIsSubscribed] = useState(""); const [isSubscribing, setIsSubscribing] = useState(false); const [showUnread, setShowUnread] = useState(false); + const observerRef = useRef(null); const { t } = useTranslation(); useEffect(() => { @@ -194,6 +195,26 @@ export default function NotificationsList({ if (open) document.addEventListener("keydown", handleKeyDown); return () => document.removeEventListener("keydown", handleKeyDown); }, [open]); + useEffect(() => { + const observer = new IntersectionObserver( + (entries) => { + if (entries[0].isIntersecting && data.length < totalCount) { + setOffset((prevOffset) => prevOffset + RESULT_LIMIT); + } + }, + { threshold: 1.0 }, + ); + + if (observerRef.current) { + observer.observe(observerRef.current); + } + + return () => { + if (observerRef.current) { + observer.unobserve(observerRef.current); + } + }; + }, [data, totalCount]); useEffect(() => { let intervalId: ReturnType; if (isSubscribing) { @@ -374,7 +395,15 @@ export default function NotificationsList({ }) .then((res) => { if (res && res.data) { - setData(res.data.results); + setData((prev) => { + const newNotifications = res?.data?.results || []; + const allNotifications = + offset === 0 ? newNotifications : [...prev, ...newNotifications]; + const uniqueNotifications = Array.from( + new Set(allNotifications.map((n) => n.id)), + ).map((id) => allNotifications.find((n) => n.id === id)); + return uniqueNotifications; + }); setUnreadCount( res.data.results?.reduce( (acc: number, result: any) => acc + (result.read_at ? 0 : 1), @@ -391,7 +420,9 @@ export default function NotificationsList({ }); intialSubscriptionState(); }, [reload, open, offset, eventFilter, isSubscribed]); - + useEffect(() => { + setOffset(0); + }, [eventFilter, showUnread]); if (!offset && isLoading) { manageResults = (
    @@ -414,27 +445,12 @@ export default function NotificationsList({ setShowNotifications={setOpen} /> ))} +
    {isLoading && (
    )} - {!showUnread && - totalCount > RESULT_LIMIT && - offset < totalCount - RESULT_LIMIT && ( -
    - setOffset((prev) => prev + RESULT_LIMIT)} - > - {isLoading ? t("loading") : t("load_more")} - -
    - )} ); } else if (data && data.length === 0) { From 7e25fc6a5b7baf1156b8db8aaf394752d0c1303b Mon Sep 17 00:00:00 2001 From: Mohammed Nihal <57055998+nihal467@users.noreply.github.com> Date: Wed, 16 Oct 2024 14:24:53 +0200 Subject: [PATCH 20/25] fixed the favicon (#8803) --- public/favicon.ico | Bin 15086 -> 161630 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/public/favicon.ico b/public/favicon.ico index d712ea36545e74e1b50e9097c54194bf8e17a6a4..51fe5064a91773fc5c8e5001cb20f61ac00b4bca 100644 GIT binary patch literal 161630 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 literal 15086 zcmeHOTW=dh6dpTCn~UwlP8;XaII&#^=T=e@r%4m%QYvyms?<;rNL0`?5f!LFq9P>d zLxHLf`~nd0&VMNMHvny_KJgFQ7odQkI-GC4>x}K0b=GlQn{K6(SJxBaED zquToqa(CPD7CJiGs+8zLn9?7ND02^T5_GW9`L`unoQ@BU`VY7xhtFOeR*D^WE2qLn z=a1OHaFAae@oyjU)7*#p_O&>cT4LO5A9gf8xcoI^Z7I*dZGZdm!|ng-d7ahQp7s6{ zne3po&t_=tbG6KEj!+=lME<@;rF2iW7ahM~qw_~>VCe9{4IHKMAt!%MUmT>(?^d+3 zv^`FBt@`h${mviiczg$j9S3l9`K$Ak+x~93ca05qO{yEfMPod*J3MKqX8CdM0SH75~ z3pdrWaODKG#+u0&X;cbyu+jM=_Q07QCAPtdxq+jOzf>>VWUu>9bP`SGBGjjoSwaBN`Y``P@?8NY1ojF>KexBc__h}(ap`ChfZzrCrWwEoqSHh-*K zOHqB$tIZ$K!A6&Vkl%rk*GKGrJL*5ky~(q^lzJ_pl#ZbQ@!qQ*k9Dxo`6G5-e%Hs! ztou3Q@1R|Z;g(DPf8dWjuyVCWrQ?7*_8=>bTQ0o2!Y4khRsPKVI`-h1|NR=ghx^9) z0i1ydh*jqQpoZ?@0ds!YIKPoOgpxTwlj%!1hl0HHca;e^?V!KQ=Vxw!zbA7O?%&F_ zzzslgyW^ZzKg$A3_M8@<;Zpqb@L8c#{0wjN9O1VE?^_v++rTuaWw4*dS(C@iVT$kf z2bOZ>eW!7LWb8kj;$y!Ob52=GJbwc0f1KcBofhX^VrM!j_M$0#jXJwETnz@W9pU?W z8)^7_U%_51>Y&r$=<1#0^BRg4pLH(2qj$-+{n5Vzyfzga@MWcIJV;}2#0s82>Y$Tt zv95&}HqXQs-^cqY6PFTn`rVqWMS{i+6Qx5!neq| zF5CNe@hj8*$ld+Z9dvRno+BsDMJcw}Nzuh{Rt8pjD78LN&?is_oopLrU&P3d3oLWI zFrI%suTP)7da_{s;@tHq&gr@D57v7nSUrS^#kv1m(mfWU#*T)9n5cu!vO@`9#3&UXemJ{; zTxp5j92+{z4kdhTu%Sc$cl`ZPBxW&8Sr2S{1IcxjyuQQVfYXfsw7x&5&2M0ExWi(7 zk6C%?AWC2u_ibP+76d9;g>?%4uV%(tMRuJ+wQkfR-elenS^jk>4@HZ(X!@4gw}AVE zrNAHGy%TRG48gU^#`IPCcc((xxg4%5<&WWC$3QkT^;2L$%Dg5yc Z Date: Wed, 16 Oct 2024 18:00:24 +0530 Subject: [PATCH 21/25] Investigations Print Preview Page (#8679) --- .../Investigations/InvestigationTable.tsx | 198 +++++++++++------- .../InvestigationsPrintPreview.tsx | 138 ++++++++++++ .../Investigations/ShowInvestigation.tsx | 62 ++++-- .../Investigations/ViewInvestigations.tsx | 37 +++- src/Locale/en.json | 2 + src/Routers/routes/ConsultationRoutes.tsx | 10 + 6 files changed, 338 insertions(+), 109 deletions(-) create mode 100644 src/Components/Facility/Investigations/InvestigationsPrintPreview.tsx diff --git a/src/Components/Facility/Investigations/InvestigationTable.tsx b/src/Components/Facility/Investigations/InvestigationTable.tsx index 18c64108b6f..84198eea50c 100644 --- a/src/Components/Facility/Investigations/InvestigationTable.tsx +++ b/src/Components/Facility/Investigations/InvestigationTable.tsx @@ -5,8 +5,10 @@ import TextFormField from "../../Form/FormFields/TextFormField"; import { classNames } from "../../../Utils/utils"; import { useState } from "react"; import { useTranslation } from "react-i18next"; +import { navigate } from "raviger"; const TestRow = ({ data, i, onChange, showForm, value, isChanged }: any) => { + const { t } = useTranslation(); return ( { )} x-description="Even row" > - - {data?.investigation_object?.name || "---"} + +

    + {data?.investigation_object.name || "---"} +

    +

    + + {t("investigations__range")}:{" "} + {data?.investigation_object.min_value || ""} + {data?.investigation_object.min_value ? " - " : ""} + {data?.investigation_object.max_value || ""} + +

    +

    + {t("investigations__unit")}:{" "} + {data?.investigation_object.unit || "---"} +

    - + {showForm ? ( data?.investigation_object?.investigation_type === "Choice" ? ( { value || "---" )} - - {data.investigation_object.unit || "---"} - - - {data.investigation_object.min_value || "---"} - - - {data.investigation_object.max_value || "---"} - - + {data.investigation_object.ideal_value || "---"} ); }; +const HeadingRow = () => { + const { t } = useTranslation(); + const commonClass = + "px-6 py-3 text-xs font-semibold uppercase tracking-wider text-secondary-800"; + return ( + + + {t("investigations__name")} + + + {t("investigations__result")} + + + {t("investigations__ideal_value")} + + + ); +}; + export const InvestigationTable = ({ title, data, @@ -70,6 +108,10 @@ export const InvestigationTable = ({ changedFields, handleUpdateCancel, handleSave, + facilityId, + patientId, + consultationId, + sessionId, }: any) => { const { t } = useTranslation(); const [searchFilter, setSearchFilter] = useState(""); @@ -85,11 +127,9 @@ export const InvestigationTable = ({ return (
    -
    - {title && ( -
    {title}
    - )} -
    +
    + {title &&
    {title}
    } +
    handleSave()} + onClick={() => { + handleSave(); + setShowForm((prev) => !prev); + }} className="my-2 mr-2" > - Save + {t("save")} )} + + navigate( + `/facility/${facilityId}/patient/${patientId}/consultation/${consultationId}/investigation/${sessionId}/print`, + ) + } + > + + {t("print")} +
    setSearchFilter(e.value)} />
    -
    -
    - - - - {["Name", "Value", "Unit", "Min", "Max", "Ideal"].map( - (heading) => ( - - ), - )} +
    +
    - {heading} -
    + + + + + {filterTests.length > 0 ? ( + filterTests.map((t: any, i) => { + const value = + changedFields[t.id]?.notes ?? + changedFields[t.id]?.value ?? + null; + const isChanged = changedFields[t.id]?.initialValue !== value; + return ( + { + const { target, value } = + t?.investigation_object?.investigation_type === "Float" + ? { + target: `${t.id}.value`, + value: Number(e.value) || null, + } + : { + target: `${t.id}.notes`, + value: e.value, + }; + handleValueChange(value, target); + }} + /> + ); + }) + ) : ( + + - - - {filterTests.length > 0 ? ( - filterTests.map((t: any, i) => { - const value = - changedFields[t.id]?.notes ?? - changedFields[t.id]?.value ?? - null; - const isChanged = changedFields[t.id]?.initialValue !== value; - return ( - { - const { target, value } = - t?.investigation_object?.investigation_type === - "Float" - ? { - target: `${t.id}.value`, - value: Number(e.value) || null, - } - : { - target: `${t.id}.notes`, - value: e.value, - }; - handleValueChange(value, target); - }} - className="print:text-black" - /> - ); - }) - ) : ( - - - - )} - -
    {t("no_tests_taken")}
    {t("no_tests_taken")}
    -
    + )} + +
    ); diff --git a/src/Components/Facility/Investigations/InvestigationsPrintPreview.tsx b/src/Components/Facility/Investigations/InvestigationsPrintPreview.tsx new file mode 100644 index 00000000000..97a5375fa28 --- /dev/null +++ b/src/Components/Facility/Investigations/InvestigationsPrintPreview.tsx @@ -0,0 +1,138 @@ +import * as _ from "lodash-es"; +import { lazy } from "react"; +import routes from "../../../Redux/api"; +import useQuery from "../../../Utils/request/useQuery"; +import PrintPreview from "../../../CAREUI/misc/PrintPreview"; +import { useTranslation } from "react-i18next"; +const Loading = lazy(() => import("../../Common/Loading")); +import { Investigation } from "./Reports/types"; +import careConfig from "@careConfig"; + +const InvestigationEntry = ({ + investigation, +}: { + investigation: Investigation; +}) => { + const { t } = useTranslation(); + return ( + + +

    + {investigation.investigation_object.name || "---"} +

    +

    + + {t("investigations__range")}:{" "} + {investigation.investigation_object.min_value || ""} + {investigation.investigation_object.min_value ? " - " : ""} + {investigation.investigation_object.max_value || ""} + +

    +

    + {t("investigations__unit")}:{" "} + {investigation.investigation_object.unit || "---"} +

    + + + {investigation.value || "---"} + + + {investigation.investigation_object.ideal_value || "---"} + + + ); +}; + +const InvestigationsPreviewTable = ({ + investigations, +}: { + investigations?: Investigation[]; +}) => { + const { t } = useTranslation(); + if (!investigations) { + return ( + + {t("no_tests_taken")} + + ); + } + + return ( + + + + + + + + + + + {investigations.map((item) => ( + + ))} + +
    + {t("investigations")} +
    + {t("investigations__name")} + {t("investigations__result")} {t("investigations__ideal_value")}
    + ); +}; + +interface InvestigationPrintPreviewProps { + consultationId: string; + patientId: string; + sessionId: string; + facilityId: string; +} +export default function InvestigationPrintPreview( + props: InvestigationPrintPreviewProps, +) { + const { consultationId, patientId, sessionId } = props; + const { t } = useTranslation(); + const { loading: investigationLoading, data: investigations } = useQuery( + routes.getInvestigation, + { + pathParams: { + consultation_external_id: consultationId, + }, + query: { + session: sessionId, + }, + }, + ); + + const { data: patient, loading: patientLoading } = useQuery( + routes.getPatient, + { + pathParams: { id: patientId }, + }, + ); + + const { data: consultation } = useQuery(routes.getConsultation, { + pathParams: { id: consultationId }, + prefetch: !!consultationId, + }); + + if (patientLoading || investigationLoading) { + return ; + } + return ( + +
    +

    {consultation?.facility_name}

    + care logo +
    + +
    + ); +} diff --git a/src/Components/Facility/Investigations/ShowInvestigation.tsx b/src/Components/Facility/Investigations/ShowInvestigation.tsx index bc0621af7d9..85f2fb1fd7d 100644 --- a/src/Components/Facility/Investigations/ShowInvestigation.tsx +++ b/src/Components/Facility/Investigations/ShowInvestigation.tsx @@ -1,13 +1,12 @@ import * as _ from "lodash-es"; -import { navigate } from "raviger"; import { useCallback, useReducer } from "react"; import routes from "../../../Redux/api"; import * as Notification from "../../../Utils/Notifications.js"; import request from "../../../Utils/request/request"; import useQuery from "../../../Utils/request/useQuery"; import InvestigationTable from "./InvestigationTable"; -import PrintPreview from "../../../CAREUI/misc/PrintPreview"; import { useTranslation } from "react-i18next"; +import Page from "../../Common/components/Page"; import Loading from "@/Components/Common/Loading"; const initialState = { changedFields: {}, @@ -40,7 +39,7 @@ interface ShowInvestigationProps { facilityId: string; } export default function ShowInvestigation(props: ShowInvestigationProps) { - const { consultationId, patientId, sessionId } = props; + const { consultationId, patientId, sessionId, facilityId } = props; const { t } = useTranslation(); const [state, dispatch] = useReducer(updateFormReducer, initialState); const { loading: investigationLoading } = useQuery(routes.getInvestigation, { @@ -116,9 +115,28 @@ export default function ShowInvestigation(props: ShowInvestigationProps) { Notification.Success({ msg: "Investigation Updated successfully!", }); - navigate( - `/facility/${props.facilityId}/patient/${props.patientId}/consultation/${props.consultationId}`, + const changedDict: any = {}; + Object.values(state.changedFields).forEach( + (field: any) => + (changedDict[field.id] = { + id: field.id, + value: field?.value || null, + notes: field?.notes || null, + }), ); + const changedInitialValues: any = {}; + Object.values(state.initialValues).forEach( + (field: any) => + (changedInitialValues[field.id] = { + ...field, + value: changedDict[field.id].value, + notes: changedDict[field.id].notes, + }), + ); + dispatch({ + type: "set_initial_values", + initialValues: changedInitialValues, + }); } return; } else { @@ -145,22 +163,28 @@ export default function ShowInvestigation(props: ShowInvestigationProps) { return ; } return ( - - - +
    + +
    + ); } diff --git a/src/Components/Facility/Investigations/ViewInvestigations.tsx b/src/Components/Facility/Investigations/ViewInvestigations.tsx index 22c811f41fa..e889fac4c01 100644 --- a/src/Components/Facility/Investigations/ViewInvestigations.tsx +++ b/src/Components/Facility/Investigations/ViewInvestigations.tsx @@ -5,6 +5,8 @@ import { useTranslation } from "react-i18next"; import { formatDateTime } from "../../../Utils/utils"; import { InvestigationResponse } from "./Reports/types"; import { InvestigationSessionType } from "./investigationsTab"; +import ButtonV2 from "../../Common/components/ButtonV2"; +import CareIcon from "../../../CAREUI/icons/CareIcon"; import Loading from "@/Components/Common/Loading"; export default function ViewInvestigations(props: { @@ -56,16 +58,31 @@ export default function ViewInvestigations(props: {
    {formatDateTime(investigationSession.session_created_date)}
    - +
    + + navigate( + `/facility/${facilityId}/patient/${patientId}/consultation/${consultationId}/investigation/${investigationSession.session_external_id}`, + ) + } + ghost + border + > + {t("view")} + + + navigate( + `/facility/${facilityId}/patient/${patientId}/consultation/${consultationId}/investigation/${investigationSession.session_external_id}/print`, + ) + } + ghost + border + > + + {t("print")} + +
    ); })} diff --git a/src/Locale/en.json b/src/Locale/en.json index 5f2652fa91b..ceb022d1f02 100644 --- a/src/Locale/en.json +++ b/src/Locale/en.json @@ -1052,6 +1052,8 @@ "patient_details": "Patient Details", "width": "Width ({{unit}})", "length": "Length ({{unit}})", + "years": "years", + "investigation_report": "Investigation Report", "expand_sidebar": "Expand Sidebar", "collapse_sidebar": "Collapse Sidebar", "linked_skills": "Linked Skills" diff --git a/src/Routers/routes/ConsultationRoutes.tsx b/src/Routers/routes/ConsultationRoutes.tsx index 77efe1081bc..7f1a7fecfb8 100644 --- a/src/Routers/routes/ConsultationRoutes.tsx +++ b/src/Routers/routes/ConsultationRoutes.tsx @@ -12,6 +12,7 @@ import CriticalCareEditor from "../../Components/LogUpdate/CriticalCareEditor"; import PrescriptionsPrintPreview from "../../Components/Medicine/PrintPreview"; import CriticalCarePreview from "../../Components/LogUpdate/CriticalCarePreview"; import FileUploadPage from "../../Components/Patient/FileUploadPage"; +import InvestigationPrintPreview from "../../Components/Facility/Investigations/InvestigationsPrintPreview"; import { AppRoutes } from "../AppRouter"; const consultationRoutes: AppRoutes = { @@ -70,6 +71,15 @@ const consultationRoutes: AppRoutes = { sessionId={sessionId} /> ), + "/facility/:facilityId/patient/:patientId/consultation/:id/investigation/:sessionId/print": + ({ facilityId, patientId, id, sessionId }: any) => ( + + ), "/facility/:facilityId/patient/:patientId/consultation/:id/daily-rounds": ({ facilityId, patientId, From d199132c34e2a2fcffdc428ab257679043d77fa0 Mon Sep 17 00:00:00 2001 From: Shivank Kacker Date: Wed, 16 Oct 2024 18:35:14 +0530 Subject: [PATCH 22/25] Added listing of Hub Facilities in Facility Home (#8729) --- src/Components/Facility/FacilityBlock.tsx | 29 +++++++++++----- src/Components/Facility/FacilityCard.tsx | 26 +++++++++----- src/Components/Facility/FacilityHome.tsx | 41 ++++++++++++++++++----- src/Components/Facility/models.tsx | 4 +-- src/Redux/api.tsx | 6 ++++ 5 files changed, 80 insertions(+), 26 deletions(-) diff --git a/src/Components/Facility/FacilityBlock.tsx b/src/Components/Facility/FacilityBlock.tsx index 891bb4d4e59..3232321637f 100644 --- a/src/Components/Facility/FacilityBlock.tsx +++ b/src/Components/Facility/FacilityBlock.tsx @@ -1,16 +1,29 @@ import { Link } from "raviger"; import { FacilityModel } from "./models"; +import { ReactNode } from "react"; import { Avatar } from "@/Components/Common/Avatar"; -export default function FacilityBlock(props: { facility: FacilityModel }) { - const { facility } = props; +export default function FacilityBlock(props: { + facility: FacilityModel; + redirect?: boolean; +}) { + const { facility, redirect = true } = props; + + const Element = (props: { children: ReactNode; className?: string }) => + redirect ? ( + + {props.children} + + ) : ( + + ); return ( - +
    {facility.read_cover_image_url ? (
    - +
    ); } diff --git a/src/Components/Facility/FacilityCard.tsx b/src/Components/Facility/FacilityCard.tsx index f3614d2685a..69b5b9d421e 100644 --- a/src/Components/Facility/FacilityCard.tsx +++ b/src/Components/Facility/FacilityCard.tsx @@ -13,13 +13,17 @@ import { classNames } from "../../Utils/utils"; import request from "../../Utils/request/request"; import routes from "../../Redux/api"; import careConfig from "@careConfig"; +import { FacilityModel } from "./models"; import { Avatar } from "../Common/Avatar"; -export const FacilityCard = (props: { facility: any; userType: any }) => { +export const FacilityCard = (props: { + facility: FacilityModel; + userType: string; +}) => { const { facility, userType } = props; const { t } = useTranslation(); - const [notifyModalFor, setNotifyModalFor] = useState(undefined); + const [notifyModalFor, setNotifyModalFor] = useState(); const [notifyMessage, setNotifyMessage] = useState(""); const [notifyError, setNotifyError] = useState(""); @@ -61,7 +65,7 @@ export const FacilityCard = (props: { facility: any; userType: any }) => { alt={facility.name} className="h-full max-h-32 w-full object-cover" /> - )) || } + )) || }
    @@ -79,7 +83,7 @@ export const FacilityCard = (props: { facility: any; userType: any }) => { /> )) || ( @@ -117,7 +121,7 @@ export const FacilityCard = (props: { facility: any; userType: any }) => {
    {
    0.85 + (facility.patient_count || 0) / + (facility.bed_count || 0) > + 0.85 ? "button-danger-border bg-red-500" : "button-primary-border bg-primary-100" }`} @@ -185,14 +191,18 @@ export const FacilityCard = (props: { facility: any; userType: any }) => { icon="l-bed" className={classNames( "mr-2", - facility.patient_count / facility.bed_count > 0.85 + (facility.patient_count || 0) / + (facility.bed_count || 0) > + 0.85 ? "text-white" : "text-primary-600", )} />{" "}
    0.85 + (facility.patient_count || 0) / + (facility.bed_count || 0) > + 0.85 ? "text-white" : "text-secondary-700" }`} diff --git a/src/Components/Facility/FacilityHome.tsx b/src/Components/Facility/FacilityHome.tsx index 6f73fee4a54..a50b1e09390 100644 --- a/src/Components/Facility/FacilityHome.tsx +++ b/src/Components/Facility/FacilityHome.tsx @@ -75,6 +75,20 @@ export const FacilityHome = ({ facilityId }: Props) => { }, }); + const spokesQuery = useQuery(routes.getFacilitySpokes, { + pathParams: { + id: facilityId, + }, + silent: true, + }); + + const hubsQuery = useQuery(routes.getFacilityHubs, { + pathParams: { + id: facilityId, + }, + silent: true, + }); + const handleDeleteClose = () => { setOpenDeleteDialog(false); }; @@ -93,13 +107,6 @@ export const FacilityHome = ({ facilityId }: Props) => { }); }; - const spokesQuery = useQuery(routes.getFacilitySpokes, { - pathParams: { - id: facilityId, - }, - silent: true, - }); - if (isLoading) { return ; } @@ -274,7 +281,7 @@ export const FacilityHome = ({ facilityId }: Props) => { />
    - {!!spokesQuery.data?.results.length && ( + {!!spokesQuery.data?.results?.length && (

    @@ -291,6 +298,24 @@ export const FacilityHome = ({ facilityId }: Props) => {

    )} + + {!!hubsQuery.data?.results?.length && ( +
    +
    +

    + {t("hubs")} +

    +
    + {hubsQuery.data.results.map((hub) => ( + + ))} +
    +
    +
    + )}
    diff --git a/src/Components/Facility/models.tsx b/src/Components/Facility/models.tsx index 8103ebb6729..1be0472c1c3 100644 --- a/src/Components/Facility/models.tsx +++ b/src/Components/Facility/models.tsx @@ -87,8 +87,8 @@ export interface FacilityModel { latitude?: string; longitude?: string; kasp_empanelled?: boolean; - patient_count?: string; - bed_count?: string; + patient_count?: number; + bed_count?: number; } export enum SpokeRelationship { diff --git a/src/Redux/api.tsx b/src/Redux/api.tsx index f1130345f46..ea728d7f53c 100644 --- a/src/Redux/api.tsx +++ b/src/Redux/api.tsx @@ -387,6 +387,12 @@ const routes = { TBody: Type>(), }, + getFacilityHubs: { + path: "/api/v1/facility/{id}/hubs", + method: "GET", + TRes: Type>(), + }, + getFacilitySpokes: { path: "/api/v1/facility/{id}/spokes/", method: "GET", From 5455e97d273c3feee8440a7b1109510234dd2cb6 Mon Sep 17 00:00:00 2001 From: Rithvik Nishad Date: Wed, 16 Oct 2024 18:42:55 +0530 Subject: [PATCH 23/25] Adds support for sorting locale file keys in pre-commit (#8806) --- package.json | 8 +- scripts/sort-locales.js | 26 + src/Locale/en.json | 1992 +++++++++++++++++++-------------------- src/Locale/hi.json | 1512 ++++++++++++++--------------- src/Locale/kn.json | 1512 ++++++++++++++--------------- src/Locale/ml.json | 1512 ++++++++++++++--------------- src/Locale/mr.json | 106 +-- src/Locale/ta.json | 1512 ++++++++++++++--------------- 8 files changed, 4105 insertions(+), 4075 deletions(-) create mode 100644 scripts/sort-locales.js diff --git a/package.json b/package.json index 4c57b3e0ee1..57d0c3d3405 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,8 @@ "prepare": "husky install", "lint": "eslint ./src", "lint-fix": "eslint ./src --fix", - "format": "prettier ./src --write" + "format": "prettier ./src --write", + "sort-locales": "node ./scripts/sort-locales.js" }, "dependencies": { "@fontsource/figtree": "^5.1.0", @@ -163,10 +164,13 @@ "prettier --write --ignore-unknown --plugin prettier-plugin-tailwindcss", "eslint --fix", "git update-index --again" + ], + "src/Locale/*.json": [ + "npm run sort-locales" ] }, "engines": { "node": ">=20.12.0" }, "packageManager": "npm@10.5.0" -} +} \ No newline at end of file diff --git a/scripts/sort-locales.js b/scripts/sort-locales.js new file mode 100644 index 00000000000..cf365a41d09 --- /dev/null +++ b/scripts/sort-locales.js @@ -0,0 +1,26 @@ +// eslint-disable-next-line @typescript-eslint/no-var-requires +const fs = require("fs"); +// eslint-disable-next-line @typescript-eslint/no-var-requires +const path = require("path"); + +const directory = "src/Locale"; + +fs.readdir(directory, (err, files) => { + if (err) throw err; + + files.forEach((file) => { + if (file.endsWith(".json")) { + const filePath = path.join(directory, file); + const data = JSON.parse(fs.readFileSync(filePath, "utf8")); + + const sortedData = Object.keys(data) + .sort() + .reduce((acc, key) => { + acc[key] = data[key]; + return acc; + }, {}); + + fs.writeFileSync(filePath, JSON.stringify(sortedData, null, 2) + "\n"); + } + }); +}); diff --git a/src/Locale/en.json b/src/Locale/en.json index ceb022d1f02..a7c2d1a0c21 100644 --- a/src/Locale/en.json +++ b/src/Locale/en.json @@ -1,1060 +1,1060 @@ { - "create_asset": "Create Asset", - "edit_history": "Edit History", - "update_record_for_asset": "Update record for asset", - "edited_on": "Edited On", - "edited_by": "Edited By", - "serviced_on": "Serviced On", - "notes": "Notes", - "back": "Back", - "close": "Close", - "update_asset_service_record": "Update Asset Service Record", - "eg_details_on_functionality_service_etc": "Eg. Details on functionality, service, etc.", - "updating": "Updating", - "update": "Update", - "are_you_still_watching": "Are you still watching?", - "stream_stop_due_to_inativity": "The live feed will stop streaming due to inactivity", - "stream_stopped_due_to_inativity": "The live feed has stopped streaming due to inactivity", - "continue_watching": "Continue watching", - "resume": "Resume", - "username": "Username", - "password": "Password", - "new_password": "New Password", - "confirm_password": "Confirm Password", - "first_name": "First Name", - "last_name": "Last Name", - "email": "Email Address", - "phone_number": "Phone Number", - "whatsapp_number": "Whatsapp Number", - "district": "District", - "gender": "Gender", - "age": "Age", - "login": "Login", - "password_mismatch": "Password and confirm password must be same.", - "enter_valid_age": "Please Enter Valid Age", - "invalid_username": "Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.", - "invalid_password": "Password doesn't meet the requirements", - "invalid_email": "Please Enter a Valid Email Address", - "invalid_phone": "Please enter valid phone number", - "register_hospital": "Register Hospital", - "register_page_title": "Register As Hospital Administrator", - "auth_login_title": "Authorized Login", - "forget_password": "Forgot password?", - "forget_password_instruction": "Enter your username, and if it exists, we will send you a link to reset your password.", - "send_reset_link": "Send Reset Link", - "already_a_member": "Already a member?", - "password_sent": "Password Reset Email Sent", - "password_reset_success": "Password Reset successfully", - "password_reset_failure": "Password Reset Failed", - "reset_password": "Reset Password", - "available_in": "Available in", - "sign_out": "Sign Out", - "back_to_login": "Back to login", - "min_password_len_8": "Minimum password length 8", - "req_atleast_one_digit": "Require at least one digit", - "req_atleast_one_uppercase": "Require at least one upper case", - "req_atleast_one_lowercase": "Require at least one lower case letter", - "req_atleast_one_symbol": "Require at least one symbol", - "bed_search_placeholder": "Search by beds name", + "404_message": "It appears that you have stumbled upon a page that either does not exist or has been moved to another URL. Make sure you have entered the correct link!", + "APPETITE__CANNOT_BE_ASSESSED": "Cannot be assessed", + "APPETITE__INCREASED": "Increased", + "APPETITE__NO_TASTE_FOR_FOOD": "No taste for food", + "APPETITE__REDUCED": "Reduced", + "APPETITE__SATISFACTORY": "Satisfactory", + "AUTOMATED": "Automated", "BED_WITH_OXYGEN_SUPPORT": "Bed with Oxygen Support", - "REGULAR": "Regular", + "BLADDER_DRAINAGE__CONDOM_CATHETER": "Condom Catheter", + "BLADDER_DRAINAGE__CONTINUOUS_INDWELLING_CATHETER": "Continuous Indwelling Catheter", + "BLADDER_DRAINAGE__CONTINUOUS_SUPRAPUBIC_CATHETER": "Continuous Suprapubic Catheter", + "BLADDER_DRAINAGE__DIAPER": "Diaper", + "BLADDER_DRAINAGE__INTERMITTENT_CATHETER": "Intermittent Catheter", + "BLADDER_DRAINAGE__NORMAL": "Normal", + "BLADDER_DRAINAGE__UROSTOMY": "Urostomy", + "BLADDER_ISSUE__HESITANCY": "Hesitancy", + "BLADDER_ISSUE__INCONTINENCE": "Incontinence", + "BLADDER_ISSUE__NO_ISSUES": "No issues", + "BLADDER_ISSUE__RETENTION": "Retention", + "BOWEL_ISSUE__CONSTIPATION": "Constipation", + "BOWEL_ISSUE__DIARRHOEA": "Diarrhoea", + "BOWEL_ISSUE__NO_DIFFICULTY": "No difficulty", + "CONSCIOUSNESS_LEVEL__AGITATED_OR_CONFUSED": "Agitated or Confused", + "CONSCIOUSNESS_LEVEL__ALERT": "Alert", + "CONSCIOUSNESS_LEVEL__ONSET_OF_AGITATION_AND_CONFUSION": "Onset of Agitation and Confusion", + "CONSCIOUSNESS_LEVEL__RESPONDS_TO_PAIN": "Responds to Pain", + "CONSCIOUSNESS_LEVEL__RESPONDS_TO_VOICE": "Responds to Voice", + "CONSCIOUSNESS_LEVEL__UNRESPONSIVE": "Unresponsive", + "CONSULTATION_TAB__ABDM": "ABDM Records", + "CONSULTATION_TAB__ABG": "ABG", + "CONSULTATION_TAB__DIALYSIS": "Dialysis", + "CONSULTATION_TAB__FEED": "Feed", + "CONSULTATION_TAB__FILES": "Files", + "CONSULTATION_TAB__INVESTIGATIONS": "Investigations", + "CONSULTATION_TAB__MEDICINES": "Medicines", + "CONSULTATION_TAB__NEUROLOGICAL_MONITORING": "Neuro", + "CONSULTATION_TAB__NURSING": "Nursing", + "CONSULTATION_TAB__NUTRITION": "Nutrition", + "CONSULTATION_TAB__PRESSURE_SORE": "Pressure Sore", + "CONSULTATION_TAB__SUMMARY": "Vitals", + "CONSULTATION_TAB__UPDATES": "Overview", + "CONSULTATION_TAB__VENTILATOR": "Ventilation", + "Cancel": "Cancel", + "DD/MM/YYYY": "DD/MM/YYYY", + "DOCTORS_LOG": "Progress Note", + "DOMESTIC_HEALTHCARE_SUPPORT__FAMILY_MEMBER": "Family member", + "DOMESTIC_HEALTHCARE_SUPPORT__NO_SUPPORT": "No support", + "DOMESTIC_HEALTHCARE_SUPPORT__PAID_CAREGIVER": "Paid caregiver", + "GENDER__1": "Male", + "GENDER__2": "Female", + "GENDER__3": "Non-binary", + "HEARTBEAT_RHYTHM__IRREGULAR": "Irregular", + "HEARTBEAT_RHYTHM__REGULAR": "Regular", + "HEARTBEAT_RHYTHM__UNKNOWN": "Unknown", "ICU": "ICU", + "INSULIN_INTAKE_FREQUENCY__BD": "Twice a day (BD)", + "INSULIN_INTAKE_FREQUENCY__OD": "Once a day (OD)", + "INSULIN_INTAKE_FREQUENCY__TD": "Thrice a day (TD)", + "INSULIN_INTAKE_FREQUENCY__UNKNOWN": "Unknown", "ISOLATION": "Isolation", - "add_beds": "Add Bed(s)", - "update_bed": "Update Bed", - "bed_type": "Bed Type", - "make_multiple_beds_label": "Do you want to make multiple beds?", - "number_of_beds": "Number of beds", - "number_of_beds_out_of_range_error": "Number of beds cannot be greater than 100", - "bed_created_notification_one": "{{count}} Bed created successfully", - "bed_created_notification_other": "{{count}} Beds created successfully", - "goal": "Our goal is to continuously improve the quality and accessibility of public healthcare services using digital tools.", - "something_wrong": "Something went wrong! Try again later!", - "try_again_later": "Try again later!", - "contribute_github": "Contribute on Github", - "footer_body": "Open Healthcare Network is an open-source public utility designed by a multi-disciplinary team of innovators and volunteers. Open Healthcare Network CARE is a Digital Public Good recognised by the United Nations.", - "reset": "Reset", - "download": "Download", - "downloads": "Downloads", - "downloading": "Downloading", - "generating": "Generating", - "send_email": "Send Email", - "email_address": "Email Address", - "email_success": "We will be sending an email shortly. Please check your inbox.", - "disclaimer": "Disclaimer", - "category": "Category", - "sub_category": "Sub Category", - "download_type": "Download Type", - "state": "State", - "location": "Location", - "ward": "Ward", - "notice_board": "Notice Board", - "assets": "Assets", + "KASP Empanelled": "KASP Empanelled", + "LIMB_RESPONSE__EXTENSION": "Extension", + "LIMB_RESPONSE__FLEXION": "Flexion", + "LIMB_RESPONSE__MODERATE": "Moderate", + "LIMB_RESPONSE__NONE": "None", + "LIMB_RESPONSE__STRONG": "Strong", + "LIMB_RESPONSE__UNKNOWN": "Unknown", + "LIMB_RESPONSE__WEAK": "Weak", + "LOG_UPDATE_CREATED_NOTIFICATION": "{{ roundType }} created successfully", + "LOG_UPDATE_FIELD_LABEL__action": "Action", + "LOG_UPDATE_FIELD_LABEL__appetite": "Appetite", + "LOG_UPDATE_FIELD_LABEL__bladder_drainage": "Drainage", + "LOG_UPDATE_FIELD_LABEL__bladder_issue": "Issues", + "LOG_UPDATE_FIELD_LABEL__blood_sugar_level": "Blood Sugar Level", + "LOG_UPDATE_FIELD_LABEL__bowel_issue": "Bowel", + "LOG_UPDATE_FIELD_LABEL__bp": "Blood Pressure", + "LOG_UPDATE_FIELD_LABEL__consciousness_level": "Level of Consciousness", + "LOG_UPDATE_FIELD_LABEL__is_experiencing_dysuria": "Experiences Dysuria?", + "LOG_UPDATE_FIELD_LABEL__nutrition_route": "Nutrition Route", + "LOG_UPDATE_FIELD_LABEL__oral_issue": "Oral issues", + "LOG_UPDATE_FIELD_LABEL__other_details": "Other details", + "LOG_UPDATE_FIELD_LABEL__patient_category": "Category", + "LOG_UPDATE_FIELD_LABEL__physical_examination_info": "Physical Examination Info", + "LOG_UPDATE_FIELD_LABEL__pulse": "Pulse", + "LOG_UPDATE_FIELD_LABEL__resp": "Respiratory Rate", + "LOG_UPDATE_FIELD_LABEL__review_interval": "Review after", + "LOG_UPDATE_FIELD_LABEL__rhythm": "Heartbeat Rhythm", + "LOG_UPDATE_FIELD_LABEL__rhythm_detail": "Rhythm Description", + "LOG_UPDATE_FIELD_LABEL__rounds_type": "Rounds Type", + "LOG_UPDATE_FIELD_LABEL__sleep": "Sleep", + "LOG_UPDATE_FIELD_LABEL__temperature": "Temperature", + "LOG_UPDATE_FIELD_LABEL__urination_frequency": "Frequency of Urination", + "LOG_UPDATE_FIELD_LABEL__ventilator_spo2": "SpO₂", + "LOG_UPDATE_UPDATED_NOTIFICATION": "{{ roundType }} updated successfully", + "NORMAL": "Brief Update", + "NURSING_CARE_PROCEDURE__ascitic_tapping": "Ascitic Tapping", + "NURSING_CARE_PROCEDURE__bed_bath": "Bed Bath", + "NURSING_CARE_PROCEDURE__catheter_care": "Catheter Care", + "NURSING_CARE_PROCEDURE__catheter_change": "Catheter Change", + "NURSING_CARE_PROCEDURE__chest_tube_care": "Chest Tube Care", + "NURSING_CARE_PROCEDURE__colostomy_care": "Colostomy Care", + "NURSING_CARE_PROCEDURE__colostomy_change": "Colostomy Change", + "NURSING_CARE_PROCEDURE__dressing": "Dressing", + "NURSING_CARE_PROCEDURE__dvt_pump_stocking": "DVT Pump Stocking", + "NURSING_CARE_PROCEDURE__eye_care": "Eye Care", + "NURSING_CARE_PROCEDURE__hair_care": "Hair Care", + "NURSING_CARE_PROCEDURE__iv_sitecare": "IV Site Care", + "NURSING_CARE_PROCEDURE__lymphedema_care": "Lymphedema Care", + "NURSING_CARE_PROCEDURE__nubulisation": "Nubulisation", + "NURSING_CARE_PROCEDURE__oral_care": "Oral Care", + "NURSING_CARE_PROCEDURE__perineal_care": "Perineal Care", + "NURSING_CARE_PROCEDURE__personal_hygiene": "Other Personal Hygiene", + "NURSING_CARE_PROCEDURE__positioning": "Positioning", + "NURSING_CARE_PROCEDURE__pre_enema": "P.R.E. Enema", + "NURSING_CARE_PROCEDURE__restrain": "Restrain", + "NURSING_CARE_PROCEDURE__ryles_tube_care": "Ryle’s Tube Care", + "NURSING_CARE_PROCEDURE__ryles_tube_change": "Ryle’s Tube Change", + "NURSING_CARE_PROCEDURE__skin_care": "Skin Care", + "NURSING_CARE_PROCEDURE__stoma_care": "Stoma Care", + "NURSING_CARE_PROCEDURE__suctioning": "Suctioning", + "NURSING_CARE_PROCEDURE__tracheostomy_care": "Tracheostomy Care", + "NURSING_CARE_PROCEDURE__tracheostomy_tube_change": "Tracheostomy Tube Change", + "NURSING_CARE_PROCEDURE__wound_dressing": "Wound Dressing", + "NUTRITION_ROUTE__GASTROSTOMY_OR_JEJUNOSTOMY": "Gastrostomy / Jejunostomy", + "NUTRITION_ROUTE__ORAL": "Oral", + "NUTRITION_ROUTE__PARENTERAL_TUBING_FLUID": "Parenteral Tubing (Fluid)", + "NUTRITION_ROUTE__PARENTERAL_TUBING_TPN": "Parenteral Tubing (TPN)", + "NUTRITION_ROUTE__PEG": "PEG", + "NUTRITION_ROUTE__RYLES_TUBE": "Ryle's Tube", "Notifications": "Notifications", - "Submit": "Submit", - "Cancel": "Cancel", - "powered_by": "Powered By", - "care": "CARE", - "something_went_wrong": "Something went wrong..!", - "stop": "Stop", - "record": "Record Audio", - "recording": "Recording", - "yes": "Yes", - "no": "No", - "status": "Status", - "created": "Created", - "modified": "Modified", - "updated": "Updated", - "configure": "Configure", - "assigned_to": "Assigned to", - "cancel": "Cancel", - "clear": "Clear", - "apply": "Apply", - "filter_by": "Filter By", - "filter": "Filter", - "settings_and_filters": "Settings and Filters", - "ordering": "Ordering", - "international_mobile": "International Mobile", - "indian_mobile": "Indian Mobile", - "mobile": "Mobile", - "landline": "Indian landline", - "support": "Support", - "emergency_contact_number": "Emergency Contact Number", - "last_modified": "Last Modified", - "patient_address": "Patient Address", - "all_details": "All Details", - "confirm": "Confirm", - "refresh_list": "Refresh List", - "last_edited": "Last Edited", - "audit_log": "Audit Log", - "comments": "Comments", - "contact_person_number": "Contact person number", - "referral_letter": "Referral Letter", - "print": "Print", - "print_referral_letter": "Print Referral Letter", - "date_of_positive_covid_19_swab": "Date of Positive Covid 19 Swab", - "patient_no": "OP/IP No", - "date_of_admission": "Date of Admission", - "unique_id": "Unique Id", - "date_and_time": "Date and Time", - "facility_type": "Facility Type", - "number_of_chronic_diseased_dependents": "Number Of Chronic Diseased Dependents", - "number_of_aged_dependents_above_60": "Number Of Aged Dependents (Above 60)", - "ongoing_medications": "Ongoing Medications", - "countries_travelled": "Countries travelled", - "travel_within_last_28_days": "Domestic/international Travel (within last 28 days)", - "estimated_contact_date": "Estimated contact date", - "blood_group": "Blood Group", - "date_of_birth": "Date of birth", - "date_of_test": "Date of sample collection for Covid testing", - "srf_id": "SRF ID", - "contact_number": "Contact Number", - "diagnosis": "Diagnosis", - "copied_to_clipboard": "Copied to clipboard", - "is": "Is", - "reason": "Reason", - "description": "Description", - "name": "Name", - "address": "Address", - "phone": "Phone", - "nationality": "Nationality", - "allergies": "Allergies", - "type_your_comment": "Type your comment", - "any_other_comments": "Any other comments", - "loading": "Loading...", - "facility": "Facility", - "local_body": "Local body", - "filters": "Filters", - "unknown": "Unknown", + "ORAL_ISSUE__DYSPHAGIA": "Dysphagia", + "ORAL_ISSUE__NO_ISSUE": "No issues", + "ORAL_ISSUE__ODYNOPHAGIA": "Odynophagia", + "OXYGEN_MODALITY__HIGH_FLOW_NASAL_CANNULA": "High Flow Nasal Cannula", + "OXYGEN_MODALITY__NASAL_PRONGS": "Nasal Prongs", + "OXYGEN_MODALITY__NON_REBREATHING_MASK": "Non Rebreathing Mask", + "OXYGEN_MODALITY__SIMPLE_FACE_MASK": "Simple Face Mask", + "PRESCRIPTION_FREQUENCY_BD": "Twice daily", + "PRESCRIPTION_FREQUENCY_HS": "Night only", + "PRESCRIPTION_FREQUENCY_OD": "Once daily", + "PRESCRIPTION_FREQUENCY_Q4H": "4th hourly", + "PRESCRIPTION_FREQUENCY_QID": "6th hourly", + "PRESCRIPTION_FREQUENCY_QOD": "Alternate day", + "PRESCRIPTION_FREQUENCY_QWK": "Once a week", + "PRESCRIPTION_FREQUENCY_STAT": "Imediately", + "PRESCRIPTION_FREQUENCY_TID": "8th hourly", + "PRESCRIPTION_ROUTE_IM": "IM", + "PRESCRIPTION_ROUTE_INHALATION": "Inhalation", + "PRESCRIPTION_ROUTE_INTRATHECAL": "intrathecal injection", + "PRESCRIPTION_ROUTE_IV": "IV", + "PRESCRIPTION_ROUTE_NASOGASTRIC": "Nasogastric / Gastrostomy tube", + "PRESCRIPTION_ROUTE_ORAL": "Oral", + "PRESCRIPTION_ROUTE_RECTAL": "Rectal", + "PRESCRIPTION_ROUTE_SC": "S/C", + "PRESCRIPTION_ROUTE_SUBLINGUAL": "Sublingual", + "PRESCRIPTION_ROUTE_TRANSDERMAL": "Transdermal", + "PUPIL_REACTION__BRISK": "Brisk", + "PUPIL_REACTION__CANNOT_BE_ASSESSED": "Cannot be assessed", + "PUPIL_REACTION__FIXED": "Fixed", + "PUPIL_REACTION__SLUGGISH": "Sluggish", + "PUPIL_REACTION__UNKNOWN": "Unknown", + "REGULAR": "Regular", + "RESPIRATORY_SUPPORT_SHORT__INVASIVE": "IV", + "RESPIRATORY_SUPPORT_SHORT__NON_INVASIVE": "NIV", + "RESPIRATORY_SUPPORT_SHORT__OXYGEN_SUPPORT": "O₂ Support", + "RESPIRATORY_SUPPORT_SHORT__UNKNOWN": "None", + "RESPIRATORY_SUPPORT__INVASIVE": "Invasive ventilator (IV)", + "RESPIRATORY_SUPPORT__NON_INVASIVE": "Non-Invasive ventilator (NIV)", + "RESPIRATORY_SUPPORT__OXYGEN_SUPPORT": "Oxygen Support", + "RESPIRATORY_SUPPORT__UNKNOWN": "None", + "ROUNDS_TYPE__AUTOMATED": "Virtual Nursing Assistant", + "ROUNDS_TYPE__COMMUNITY_NURSES_LOG": "Community Nurse's Log", + "ROUNDS_TYPE__DOCTORS_LOG": "Progress Note", + "ROUNDS_TYPE__NORMAL": "Brief Update", + "ROUNDS_TYPE__TELEMEDICINE": "Tele-medicine Log", + "ROUNDS_TYPE__VENTILATOR": "Detailed Update", + "SLEEP__EXCESSIVE": "Excessive", + "SLEEP__NO_SLEEP": "No sleep", + "SLEEP__SATISFACTORY": "Satisfactory", + "SLEEP__UNSATISFACTORY": "Unsatisfactory", + "SOCIOECONOMIC_STATUS__MIDDLE_CLASS": "Middle Class", + "SOCIOECONOMIC_STATUS__POOR": "Poor", + "SOCIOECONOMIC_STATUS__VERY_POOR": "Very Poor", + "SOCIOECONOMIC_STATUS__WELL_OFF": "Well Off", + "SORT_OPTIONS__-bed__name": "Bed No. N-1", + "SORT_OPTIONS__-category_severity": "Highest Severity category first", + "SORT_OPTIONS__-created_date": "Latest created date first", + "SORT_OPTIONS__-modified_date": "Latest updated date first", + "SORT_OPTIONS__-name": "Patient name Z-A", + "SORT_OPTIONS__-review_time": "Latest review date first", + "SORT_OPTIONS__-taken_at": "Latest taken date first", + "SORT_OPTIONS__bed__name": "Bed No. 1-N", + "SORT_OPTIONS__category_severity": "Lowest Severity category first", + "SORT_OPTIONS__created_date": "Oldest created date first", + "SORT_OPTIONS__facility__name,-last_consultation__current_bed__bed__name": "Bed No. N-1", + "SORT_OPTIONS__facility__name,last_consultation__current_bed__bed__name": "Bed No. 1-N", + "SORT_OPTIONS__modified_date": "Oldest updated date first", + "SORT_OPTIONS__name": "Patient name A-Z", + "SORT_OPTIONS__review_time": "Oldest review date first", + "SORT_OPTIONS__taken_at": "Oldest taken date first", + "Submit": "Submit", + "TELEMEDICINE": "Telemedicine", + "URINATION_FREQUENCY__DECREASED": "Decreased", + "URINATION_FREQUENCY__INCREASED": "Increased", + "URINATION_FREQUENCY__NORMAL": "Normal", + "VENTILATOR": "Detailed Update", + "VENTILATOR_MODE__CMV": "Control Mechanical Ventilation (CMV)", + "VENTILATOR_MODE__PCV": "Pressure Control Ventilation (PCV)", + "VENTILATOR_MODE__PC_SIMV": "Pressure Controlled SIMV (PC-SIMV)", + "VENTILATOR_MODE__PSV": "C-PAP / Pressure Support Ventilation (PSV)", + "VENTILATOR_MODE__SIMV": "Synchronised Intermittent Mandatory Ventilation (SIMV)", + "VENTILATOR_MODE__VCV": "Volume Control Ventilation (VCV)", + "VENTILATOR_MODE__VC_SIMV": "Volume Controlled SIMV (VC-SIMV)", + "View Facility": "View Facility", + "abha_number_linked_successfully": "ABHA number linked successfully", + "access_level": "Access Level", + "action_irreversible": "This action is irreversible", "active": "Active", - "completed": "Completed", - "on": "On", - "open": "Open", - "features": "Features", - "pincode": "Pincode", - "required": "Required", - "field_required": "This field is required", - "litres": "Litres", - "litres_per_day": "Litres/day", - "invalid_pincode": "Invalid Pincode", - "invalid_phone_number": "Invalid Phone Number", - "latitude_invalid": "Latitude must be between -90 and 90", - "longitude_invalid": "Longitude must be between -180 and 180", - "save": "Save", - "continue": "Continue", - "save_and_continue": "Save and Continue", - "select": "Select", - "lsg": "Lsg", - "delete": "Delete", - "remove": "Remove", - "max_size_for_image_uploaded_should_be": "Max size for image uploaded should be", - "allowed_formats_are": "Allowed formats are", - "recommended_aspect_ratio_for": "Recommended aspect ratio for", - "drag_drop_image_to_upload": "Drag & drop image to upload", - "upload_an_image": "Upload an image", - "upload": "Upload", - "uploading": "Uploading", - "switch": "Switch", - "capture": "Capture", - "retake": "Retake", - "submit": "Submit", - "camera": "Camera", - "camera_permission_denied": "Camera Permission denied", - "submitting": "Submitting", - "view_details": "View Details", - "type_to_search": "Type to search", - "show_all": "Show all", - "hide": "Hide", - "select_skills": "Select and add some skills", - "contact_your_admin_to_add_skills": "Contact your admin to add skills", + "active_prescriptions": "Active Prescriptions", "add": "Add", "add_as": "Add as", - "sort_by": "Sort By", - "none": "None", - "choose_file": "Upload From Device", - "open_camera": "Open Camera", - "file_preview": "File Preview", - "file_preview_not_supported": "Can't preview this file. Try downloading it.", - "view_faciliy": "View Facility", - "view_patients": "View Patients", - "frequency": "Frequency", - "days": "Days", - "never": "never", + "add_attachments": "Add Attachments", + "add_beds": "Add Bed(s)", + "add_details_of_patient": "Add Details of Patient", + "add_location": "Add Location", + "add_new_user": "Add New User", "add_notes": "Add notes", - "notes_placeholder": "Type your Notes", - "optional": "Optional", - "discontinue": "Discontinue", - "discontinued": "Discontinued", - "not_specified": "Not Specified", - "all_changes_have_been_saved": "All changes have been saved", - "no_data_found": "No data found", - "other_details": "Other details", - "no_remarks": "No remarks", - "edit": "Edit", - "clear_selection": "Clear selection", - "select_date": "Select date", - "DD/MM/YYYY": "DD/MM/YYYY", - "clear_all_filters": "Clear All Filters", - "summary": "Summary", - "report": "Report", - "treating_doctor": "Treating Doctor", - "hubs": "Hub Facilities", - "spokes": "Spoke Facilities", + "add_policy": "Add Insurance Policy", + "add_prescription_medication": "Add Prescription Medication", + "add_prescription_to_consultation_note": "Add a new prescription to this consultation.", + "add_prn_prescription": "Add PRN Prescription", + "add_remarks": "Add remarks", "add_spoke": "Add Spoke Facility", - "ration_card__NO_CARD": "Non-card holder", - "ration_card__BPL": "BPL", - "ration_card__APL": "APL", - "empty_date_time": "--:-- --; --/--/----", - "caution": "Caution", - "feed_optimal_experience_for_phones": "For optimal viewing experience, consider rotating your device.", - "feed_optimal_experience_for_apple_phones": "For optimal viewing experience, consider rotating your device. Ensure auto-rotate is enabled in your device settings.", - "action_irreversible": "This action is irreversible", - "send_message": "Send Message", - "enter_message": "Start typing...", - "see_attachments": "See Attachments", - "no_attachments_found": "This communication has no attachments.", - "fetching": "Fetching", - "GENDER__1": "Male", - "GENDER__2": "Female", - "GENDER__3": "Non-binary", - "normal": "Normal", - "done": "Done", - "view": "View", - "rename": "Rename", - "more_info": "More Info", + "address": "Address", + "administer": "Administer", + "administer_medicine": "Administer Medicine", + "administer_medicines": "Administer Medicines", + "administer_selected_medicines": "Administer Selected Medicines", + "administered_on": "Administered on", + "administration_dosage_range_error": "Dosage should be between start and target dosage", + "administration_notes": "Administration Notes", + "advanced_filters": "Advanced Filters", + "age": "Age", + "all_changes_have_been_saved": "All changes have been saved", + "all_details": "All Details", + "allergies": "Allergies", + "allowed_formats_are": "Allowed formats are", + "already_a_member": "Already a member?", + "ambulance_driver_name": "Name of ambulance driver", + "ambulance_number": "Ambulance No", + "ambulance_phone_number": "Phone number of Ambulance", + "antenatal": "Antenatal", + "any_other_comments": "Any other comments", + "apply": "Apply", + "approved_by_district_covid_control_room": "Approved by District COVID Control Room", + "approving_facility": "Name of Approving Facility", "archive": "Archive", - "discard": "Discard", - "live": "Live", - "discharged": "Discharged", "archived": "Archived", - "created_on": "Created On", - "no_changes_made": "No changes made", - "user_deleted_successfuly": "User Deleted Successfuly", - "users": "Users", + "are_non_editable_fields": "are non-editable fields", + "are_you_still_watching": "Are you still watching?", "are_you_sure_want_to_delete": "Are you sure you want to delete {{name}}?", - "oxygen_information": "Oxygen Information", - "deleted_successfully": "{{name}} deleted successfully", - "delete_item": "Delete {{name}}", - "unsupported_browser": "Unsupported Browser", - "unsupported_browser_description": "Your browser ({{name}} version {{version}}) is not supported. Please update your browser to the latest version or switch to a supported browser for the best experience.", - "add_remarks": "Add remarks", - "middleware_hostname": "Middleware Hostname", - "local_ipaddress": "Local IP Address", - "personal_information": "Personal Information", - "are_non_editable_fields": "are non-editable fields", - "edit_user_profile": "Edit Profile", - "skills": "Skills", - "access_level": "Access Level", - "qualification": "Qualification", - "years_of_experience": "Years of Experience", - "years_of_experience_of_the_doctor": "Years of Experience of the Doctor", - "medical_council_registration": "Medical Council Registration", - "doctor_s_medical_council_registration": "Doctor's Medical Council Registration", - "video_conference_link": "Video Conference Link", - "new_password_confirmation": "Confirm New Password", - "current_password": "Current Password", + "are_you_sure_want_to_delete_this_record": "Are you sure want to delete this record?", + "asset_class": "Asset Class", + "asset_location": "Asset Location", + "asset_name": "Asset Name", + "asset_not_found_msg": "Oops! The asset you are looking for does not exist. Please check the asset id.", + "asset_qr_id": "Asset QR ID", + "asset_type": "Asset Type", + "assets": "Assets", + "assigned_facility": "Facility assigned", + "assigned_to": "Assigned to", + "audio__allow_permission": "Please allow microphone permission in site settings", + "audio__allow_permission_button": "Click here to know how to allow", + "audio__allow_permission_helper": "You might have denied microphone access in the past.", + "audio__record": "Record Audio", + "audio__record_helper": "Click the button to start recording", + "audio__recorded": "Audio Recorded", + "audio__recording": "Recording", + "audio__recording_helper": "Please speak into your microphone.", + "audio__recording_helper_2": "Click on the button to stop recording.", + "audio__start_again": "Start Again", + "audit_log": "Audit Log", + "auth_login_title": "Authorized Login", + "authorize_shift_delete": "Authorize shift delete", + "auto_generated_for_care": "Auto Generated for Care", + "available_features": "Available Features", + "available_in": "Available in", + "average_weekly_working_hours": "Average weekly working hours", + "awaiting_destination_approval": "AWAITING DESTINATION APPROVAL", + "back": "Back", + "back_dated_encounter_date_caution": "You are creating an encounter for", + "back_to_consultation": "Go back to Consultation", + "back_to_login": "Back to login", + "base_dosage": "Dosage", + "bed_capacity": "Bed Capacity", + "bed_created_notification_one": "{{count}} Bed created successfully", + "bed_created_notification_other": "{{count}} Beds created successfully", + "bed_search_placeholder": "Search by beds name", + "bed_type": "Bed Type", + "bed_type__100": "ICU Bed", + "bed_type__200": "Ordinary Bed", + "bed_type__300": "Oxygen Supported Bed", + "bed_type__400": "Isolation Bed", + "bed_type__500": "Others", + "bladder": "Bladder", + "blood_group": "Blood Group", + "blood_pressure_error": { + "missing": "Field is required. Either specify both or clear both.", + "exceed": "Value cannot exceed 250 mmHg.", + "systolic_less_than_diastolic": "Systolic must be greater than diastolic." + }, + "board_view": "Board View", + "bradycardia": "Bradycardia", + "breathlessness_level": "Breathlessness level", + "camera": "Camera", + "camera_permission_denied": "Camera Permission denied", + "cancel": "Cancel", + "capture": "Capture", + "capture_cover_photo": "Capture Cover Photo", + "care": "CARE", + "category": "Category", + "caution": "Caution", + "central_nursing_station": "Central Nursing Station", + "change_file": "Change File", "change_password": "Change Password", - "language_selection": "Language Selection", - "set_your_local_language": "Set your local language", - "software_update": "Software Update", + "check_eligibility": "Check Eligibility", "check_for_available_update": "Check for available update", - "update_available": "Update Available", - "checking_for_update": "Checking for update", "check_for_update": "Check for Update", - "SORT_OPTIONS__-created_date": "Latest created date first", - "SORT_OPTIONS__created_date": "Oldest created date first", - "SORT_OPTIONS__-category_severity": "Highest Severity category first", - "SORT_OPTIONS__category_severity": "Lowest Severity category first", - "SORT_OPTIONS__-modified_date": "Latest updated date first", - "SORT_OPTIONS__modified_date": "Oldest updated date first", - "SORT_OPTIONS__facility__name,last_consultation__current_bed__bed__name": "Bed No. 1-N", - "SORT_OPTIONS__facility__name,-last_consultation__current_bed__bed__name": "Bed No. N-1", - "SORT_OPTIONS__-review_time": "Latest review date first", - "SORT_OPTIONS__review_time": "Oldest review date first", - "SORT_OPTIONS__taken_at": "Oldest taken date first", - "SORT_OPTIONS__-taken_at": "Latest taken date first", - "SORT_OPTIONS__name": "Patient name A-Z", - "SORT_OPTIONS__-name": "Patient name Z-A", - "SORT_OPTIONS__bed__name": "Bed No. 1-N", - "SORT_OPTIONS__-bed__name": "Bed No. N-1", - "CONSULTATION_TAB__UPDATES": "Overview", - "CONSULTATION_TAB__FEED": "Feed", - "CONSULTATION_TAB__SUMMARY": "Vitals", - "CONSULTATION_TAB__ABG": "ABG", - "CONSULTATION_TAB__MEDICINES": "Medicines", - "CONSULTATION_TAB__FILES": "Files", - "CONSULTATION_TAB__INVESTIGATIONS": "Investigations", - "CONSULTATION_TAB__NEUROLOGICAL_MONITORING": "Neuro", - "CONSULTATION_TAB__VENTILATOR": "Ventilation", - "CONSULTATION_TAB__NUTRITION": "Nutrition", - "CONSULTATION_TAB__PRESSURE_SORE": "Pressure Sore", - "CONSULTATION_TAB__NURSING": "Nursing", - "CONSULTATION_TAB__DIALYSIS": "Dialysis", - "CONSULTATION_TAB__ABDM": "ABDM Records", - "nursing_information": "Nursing Information", - "no_consultation_updates": "No consultation updates", + "check_policy_eligibility": "Check Policy Eligibility", + "checking_eligibility": "Checking Eligibility", + "checking_for_update": "Checking for update", + "checking_policy_eligibility": "Checking Policy Eligibility", + "choose_file": "Upload From Device", + "choose_location": "Choose Location", + "claim__add_item": "Add Item", + "claim__create_claim": "Create Claim", + "claim__create_preauthorization": "Create Pre Authorization", + "claim__creating_claim": "Creating Claim", + "claim__creating_preauthorization": "Creating Pre Authorization", + "claim__error_fetching_claim_approval_results": "Error Fetching Claim Approval Results", + "claim__failed_to_create_claim": "Failed to create Claim", + "claim__failed_to_create_preauthorization": "Failed to create Pre Authorization", + "claim__fetched_claim_approval_results": "Fetched Claim Approval Results", + "claim__item": "Item", + "claim__item__add_at_least_one": "Add at least one item", + "claim__item__category": "Category", + "claim__item__fill_all_details": "Fill all the item details", + "claim__item__id": "ID", + "claim__item__id__example": "PROC001", + "claim__item__name": "Name", + "claim__item__name__example": "Knee Replacement", + "claim__item__price": "Price", + "claim__item__price__example": "100.00", + "claim__item__procedure": "Procedure", + "claim__items": "Items", + "claim__request_claim": "Request Claim", + "claim__requesting_claim": "Requesting Claim", + "claim__status__approved": "Approved", + "claim__status__pending": "Pending", + "claim__status__rejected": "Rejected", + "claim__total_approved_amount": "Total Approved Amount", + "claim__total_claim_amount": "Total Claim Amount", + "claim__use": "Use", + "claim__use__claim": "Claim", + "claim__use__preauthorization": "Pre Authorization", + "claims": "Claims", + "clear": "Clear", + "clear_all_filters": "Clear All Filters", + "clear_home_facility": "Clear Home Facility", + "clear_selection": "Clear selection", + "close": "Close", + "close_scanner": "Close Scanner", + "collapse_sidebar": "Collapse Sidebar", + "comment_added_successfully": "Comment added successfully", + "comment_min_length": "Comment Should Contain At Least 1 Character", + "comments": "Comments", + "communication__sent_to_hcx": "Sent communication to HCX", + "completed": "Completed", + "configure": "Configure", + "configure_facility": "Configure Facility", + "confirm": "Confirm", + "confirm_delete": "Confirm Delete", + "confirm_discontinue": "Confirm Discontinue", + "confirm_password": "Confirm Password", + "confirm_transfer_complete": "Confirm Transfer Complete!", + "confirmed": "Confirmed", + "consultation_not_filed": "You have not filed any consultation for this patient yet.", + "consultation_not_filed_description": "Please file a consultation for this patient to continue.", + "consultation_notes": "General Instructions (Advice)", "consultation_updates": "Consultation updates", - "update_log": "Update Log", - "record_updates": "Record Updates", - "log_lab_results": "Log Lab Results", - "no_log_update_delta": "No changes since previous log update", - "virtual_nursing_assistant": "Virtual Nursing Assistant", + "contact_number": "Contact Number", + "contact_person": "Name of Contact Person at Facility", + "contact_person_at_the_facility": "Contact person at the current facility", + "contact_person_number": "Contact person number", + "contact_phone": "Contact Person Number", + "contact_your_admin_to_add_skills": "Contact your admin to add skills", + "continue": "Continue", + "continue_watching": "Continue watching", + "contribute_github": "Contribute on Github", + "copied_to_clipboard": "Copied to clipboard", + "countries_travelled": "Countries travelled", + "covid_19_cat_gov": "Covid_19 Clinical Category as per Govt. of Kerala guideline (A/B/C)", + "covid_19_death_reporting_form_1": "Covid-19 Death Reporting : Form 1", + "create": "Create", + "create_add_more": "Create & Add More", + "create_asset": "Create Asset", + "create_consultation": "Create Consultation", + "create_facility": "Create a new facility", + "create_new_asset": "Create New Asset", + "create_resource_request": "Create Resource Request", + "created": "Created", + "created_date": "Created Date", + "created_on": "Created On", + "csv_file_in_the_specified_format": "Select a CSV file in the specified format", + "current_password": "Current Password", + "customer_support_email": "Customer Support Email", + "customer_support_name": "Customer Support Name", + "customer_support_number": "Customer support number", + "cylinders": "Cylinders", + "cylinders_per_day": "Cylinders/day", + "date_and_time": "Date and Time", + "date_declared_positive": "Date of declaring positive", + "date_of_admission": "Date of Admission", + "date_of_birth": "Date of birth", + "date_of_positive_covid_19_swab": "Date of Positive Covid 19 Swab", + "date_of_result": "Covid confirmation date", + "date_of_test": "Date of sample collection for Covid testing", + "days": "Days", + "delete": "Delete", + "delete_facility": "Delete Facility", + "delete_item": "Delete {{name}}", + "delete_record": "Delete Record", + "deleted_successfully": "{{name}} deleted successfully", + "describe_why_the_asset_is_not_working": "Describe why the asset is not working", + "description": "Description", + "details_about_the_equipment": "Details about the equipment", + "details_of_assigned_facility": "Details of assigned facility", + "details_of_origin_facility": "Details of origin facility", + "details_of_patient": "Details of patient", + "details_of_shifting_approving_facility": "Details of shifting approving facility", + "diagnoses": "Diagnoses", + "diagnosis": "Diagnosis", + "diagnosis__confirmed": "Confirmed", + "diagnosis__differential": "Differential", + "diagnosis__principal": "Principal", + "diagnosis__provisional": "Provisional", + "diagnosis__unconfirmed": "Unconfirmed", + "diagnosis_already_added": "This diagnosis was already added", + "diagnosis_at_discharge": "Diagnosis at Discharge", + "diastolic": "Diastolic", + "differential": "Differential", + "discard": "Discard", "discharge": "Discharge", - "discharge_summary": "Discharge Summary", "discharge_from_care": "Discharge from CARE", - "generating_discharge_summary": "Generating discharge summary", + "discharge_prescription": "Discharge Prescription", + "discharge_summary": "Discharge Summary", "discharge_summary_not_ready": "Discharge summary is not ready yet.", - "download_discharge_summary": "Download discharge summary", - "email_discharge_summary_description": "Enter your valid email address to receive the discharge summary", - "generated_summary_caution": "This is a computer generated summary using the information captured in the CARE system.", - "NORMAL": "Brief Update", - "VENTILATOR": "Detailed Update", - "DOCTORS_LOG": "Progress Note", - "AUTOMATED": "Automated", - "TELEMEDICINE": "Telemedicine", - "investigations": "Investigations", - "search_investigation_placeholder": "Search Investigation & Groups", - "save_investigation": "Save Investigation", - "investigation_report_for_{{name}}": "Investigation Report for {{name}}", - "investigation_report_of_{{name}}": "Investigation Report of : {{name}}", - "investigation_reports": "Investigation Reports", - "no_investigation": "No investigation Reports found", - "investigations_suggested": "Investigations Suggested", - "no_tests_taken": "No tests taken", - "to_be_conducted": "To be conducted", - "log_report": "Log Report", - "no_investigation_suggestions": "No Investigation Suggestions", - "select_investigation": "Select Investigations (all investigations will be selected by default)", - "select_investigations": "Select Investigations", - "get_tests": "Get Tests", - "select_investigation_groups": "Select Investigation Groups", - "select_groups": "Select Groups", - "generate_report": "Generate Report", - "prev_sessions": "Prev Sessions", - "next_sessions": "Next Sessions", - "no_changes": "No changes", - "back_to_consultation": "Go back to Consultation", - "no_treating_physicians_available": "This facility does not have any home facility doctors. Please contact your admin.", - "encounter_suggestion_edit_disallowed": "Not allowed to switch to this option in edit consultation", - "encounter_suggestion__A": "Admission", - "encounter_suggestion__DC": "Domiciliary Care", - "encounter_suggestion__OP": "Out-patient visit", - "encounter_suggestion__DD": "Consultation", - "encounter_suggestion__HI": "Consultation", - "encounter_suggestion__R": "Consultation", + "discharged": "Discharged", + "discharged_patients": "Discharged Patients", + "discharged_patients_empty": "No discharged patients present in this facility", + "disclaimer": "Disclaimer", + "discontinue": "Discontinue", + "discontinue_caution_note": "Are you sure you want to discontinue this prescription?", + "discontinued": "Discontinued", + "disease_status": "Disease status", + "district": "District", + "district_program_management_supporting_unit": "District Program Management Supporting Unit", + "doctor_s_medical_council_registration": "Doctor's Medical Council Registration", + "domestic_healthcare_support": "Domestic healthcare support", + "done": "Done", + "dosage": "Dosage", + "down": "Down", + "download": "Download", + "download_discharge_summary": "Download discharge summary", + "download_type": "Download Type", + "downloading": "Downloading", + "downloads": "Downloads", + "drag_drop_image_to_upload": "Drag & drop image to upload", + "duplicate_patient_record_birth_unknown": "Please contact your district care coordinator, the shifting facility or the patient themselves if you are not sure about the patient's year of birth.", + "duplicate_patient_record_confirmation": "Admit the patient record to your facility by adding the year of birth", + "duplicate_patient_record_rejection": "I confirm that the suspect / patient I want to create is not on the list.", + "edit": "Edit", + "edit_caution_note": "A new prescription will be added to the consultation with the edited details and the current prescription will be discontinued.", + "edit_cover_photo": "Edit Cover Photo", + "edit_history": "Edit History", + "edit_policy": "Edit Insurance Policy", + "edit_policy_description": "Add or edit patient's insurance details", + "edit_prescriptions": "Edit Prescriptions", + "edit_user_profile": "Edit Profile", + "edited_by": "Edited by", + "edited_on": "Edited on", + "eg_abc": "Eg. ABC", + "eg_details_on_functionality_service_etc": "Eg. Details on functionality, service, etc.", + "eg_mail_example_com": "Eg. mail@example.com", + "eg_xyz": "Eg. XYZ", + "eligible": "Eligible", + "email": "Email Address", + "email_address": "Email Address", + "email_discharge_summary_description": "Enter your valid email address to receive the discharge summary", + "email_success": "We will be sending an email shortly. Please check your inbox.", + "emergency": "Emergency", + "emergency_contact_number": "Emergency Contact Number", + "empty_date_time": "--:-- --; --/--/----", "encounter_date_field_label__A": "Date & Time of Admission to the Facility", "encounter_date_field_label__DC": "Date & Time of Domiciliary Care commencement", - "encounter_date_field_label__OP": "Date & Time of Out-patient visit", "encounter_date_field_label__DD": "Date & Time of Consultation", "encounter_date_field_label__HI": "Date & Time of Consultation", + "encounter_date_field_label__OP": "Date & Time of Out-patient visit", "encounter_date_field_label__R": "Date & Time of Consultation", - "back_dated_encounter_date_caution": "You are creating an encounter for", "encounter_duration_confirmation": "The duration of this encounter would be", - "consultation_notes": "General Instructions (Advice)", - "diagnosis_at_discharge": "Diagnosis at Discharge", - "procedure_suggestions": "Procedure Suggestions", - "patient_notes_thread__Doctors": "Doctor's Discussions", - "patient_notes_thread__Nurses": "Nurse's Discussions", - "edit_cover_photo": "Edit Cover Photo", - "no_cover_photo_uploaded_for_this_facility": "No cover photo uploaded for this facility", - "capture_cover_photo": "Capture Cover Photo", - "diagnoses": "Diagnoses", - "diagnosis_already_added": "This diagnosis was already added", - "principal": "Principal", - "principal_diagnosis": "Principal diagnosis", - "unconfirmed": "Unconfirmed", - "provisional": "Provisional", - "differential": "Differential", - "confirmed": "Confirmed", - "refuted": "Refuted", + "encounter_suggestion__A": "Admission", + "encounter_suggestion__DC": "Domiciliary Care", + "encounter_suggestion__DD": "Consultation", + "encounter_suggestion__HI": "Consultation", + "encounter_suggestion__OP": "Out-patient visit", + "encounter_suggestion__R": "Consultation", + "encounter_suggestion_edit_disallowed": "Not allowed to switch to this option in edit consultation", + "enter_file_name": "Enter File Name", + "enter_message": "Start typing...", + "enter_valid_age": "Please Enter Valid Age", "entered-in-error": "Entered in error", - "help_unconfirmed": "There is not sufficient diagnostic and/or clinical evidence to treat this as a confirmed condition.", - "help_provisional": "This is a tentative diagnosis - still a candidate that is under consideration.", - "help_differential": "One of a set of potential (and typically mutually exclusive) diagnoses asserted to further guide the diagnostic process and preliminary treatment.", + "error_404": "Error 404", + "error_deleting_shifting": "Error while deleting Shifting record", + "error_while_deleting_record": "Error while deleting record", + "escape": "Escape", + "estimated_contact_date": "Estimated contact date", + "expand_sidebar": "Expand Sidebar", + "expected_burn_rate": "Expected Burn Rate", + "facilities": "Facilities", + "facility": "Facility", + "facility_name": "Facility Name", + "facility_preference": "Facility preference", + "facility_search_placeholder": "Search by Facility / District Name", + "facility_type": "Facility Type", + "failed_to_link_abha_number": "Failed to link ABHA number", + "features": "Features", + "feed_is_currently_not_live": "Feed is currently not live", + "feed_optimal_experience_for_apple_phones": "For optimal viewing experience, consider rotating your device. Ensure auto-rotate is enabled in your device settings.", + "feed_optimal_experience_for_phones": "For optimal viewing experience, consider rotating your device.", + "fetched_attachments_successfully": "Fetched attachments successfully", + "fetching": "Fetching", + "field_required": "This field is required", + "file_error__choose_file": "Please choose a file to upload", + "file_error__dynamic": "Error Uploading File: {{statusText}}", + "file_error__file_name": "Please give a name for all files!", + "file_error__file_size": "Maximum size of files is 100 MB", + "file_error__file_type": "Invalid file type \".{{extension}}\" Allowed types: {{allowedExtensions}}", + "file_error__network": "Error Uploading File: Network Error", + "file_error__single_file_name": "Please give a name for the file", + "file_list_headings__consultation": "Consultation Files", + "file_list_headings__patient": "Patient Files", + "file_list_headings__sample_report": "Sample Report", + "file_list_headings__supporting_info": "Supporting Info", + "file_preview": "File Preview", + "file_preview_not_supported": "Can't preview this file. Try downloading it.", + "file_uploaded": "File Uploaded Successfully", + "filter": "Filter", + "filter_by": "Filter By", + "filter_by_category": "Filter by category", + "filters": "Filters", + "first_name": "First Name", + "footer_body": "Open Healthcare Network is an open-source public utility designed by a multi-disciplinary team of innovators and volunteers. Open Healthcare Network CARE is a Digital Public Good recognised by the United Nations.", + "forget_password": "Forgot password?", + "forget_password_instruction": "Enter your username, and if it exists, we will send you a link to reset your password.", + "frequency": "Frequency", + "full_screen": "Full Screen", + "gender": "Gender", + "generate_report": "Generate Report", + "generated_summary_caution": "This is a computer generated summary using the information captured in the CARE system.", + "generating": "Generating", + "generating_discharge_summary": "Generating discharge summary", + "get_tests": "Get Tests", + "goal": "Our goal is to continuously improve the quality and accessibility of public healthcare services using digital tools.", + "has_domestic_healthcare_support": "Has domestic healthcare support?", "help_confirmed": "There is sufficient diagnostic and/or clinical evidence to treat this as a confirmed condition.", - "help_refuted": "This condition has been ruled out by subsequent diagnostic and clinical evidence.", + "help_differential": "One of a set of potential (and typically mutually exclusive) diagnoses asserted to further guide the diagnostic process and preliminary treatment.", "help_entered-in-error": "The statement was entered in error and is not valid.", - "search_icd11_placeholder": "Search for ICD-11 Diagnoses", + "help_provisional": "This is a tentative diagnosis - still a candidate that is under consideration.", + "help_refuted": "This condition has been ruled out by subsequent diagnostic and clinical evidence.", + "help_unconfirmed": "There is not sufficient diagnostic and/or clinical evidence to treat this as a confirmed condition.", + "hide": "Hide", + "home_facility": "Home Facility", + "hubs": "Hub Facilities", "icd11_as_recommended": "As per ICD-11 recommended by WHO", - "patients": "Patients", - "sample_test": "Sample Test", - "resource": "Resource", - "profile": "Profile", - "return_to_care": "Return to CARE", - "404_message": "It appears that you have stumbled upon a page that either does not exist or has been moved to another URL. Make sure you have entered the correct link!", - "error_404": "Error 404", - "page_not_found": "Page Not Found", - "session_expired": "Session Expired", - "invalid_password_reset_link": "Invalid password reset link", + "inconsistent_dosage_units_error": "Dosage units must be same", + "indian_mobile": "Indian Mobile", + "indicator": "Indicator", + "inidcator_event": "Indicator Event", + "instruction_on_titration": "Instruction on titration", + "international_mobile": "International Mobile", + "invalid_asset_id_msg": "Oops! The asset ID you entered does not appear to be valid.", + "invalid_email": "Please Enter a Valid Email Address", "invalid_link_msg": "It appears that the password reset link you have used is either invalid or expired. Please request a new password reset link.", - "return_to_password_reset": "Return to Password Reset", - "return_to_login": "Return to Login", - "session_expired_msg": "It appears that your session has expired. This could be due to inactivity. Please login again to continue.", + "invalid_password": "Password doesn't meet the requirements", + "invalid_password_reset_link": "Invalid password reset link", + "invalid_phone": "Please enter valid phone number", + "invalid_phone_number": "Invalid Phone Number", + "invalid_pincode": "Invalid Pincode", "invalid_reset": "Invalid Reset", - "please_upload_a_csv_file": "Please Upload A CSV file", - "csv_file_in_the_specified_format": "Select a CSV file in the specified format", - "sample_format": "Sample Format", - "search_for_facility": "Search for Facility", - "select_local_body": "Select Local Body", - "select_wards": "Select wards", - "result_date": "Result Date", - "sample_collection_date": "Sample Collection Date", - "record_has_been_deleted_successfully": "Record has been deleted successfully.", - "error_while_deleting_record": "Error while deleting record", - "result_details": "Result details", - "confirm_delete": "Confirm Delete", - "are_you_sure_want_to_delete_this_record": "Are you sure want to delete this record?", - "patient_category": "Patient Category", - "source": "Source", - "result": "Result", - "sample_type": "Sample Type", - "patient_status": "Patient Status", - "mobile_number": "Mobile Number", - "patient_created": "Patient Created", - "update_record": "Update Record", - "facility_search_placeholder": "Search by Facility / District Name", - "advanced_filters": "Advanced Filters", - "facility_name": "Facility Name", - "KASP Empanelled": "KASP Empanelled", - "View Facility": "View Facility", - "no_duplicate_facility": "You should not create duplicate facilities", - "no_facilities": "No Facilities found", - "no_staff": "No staff found", - "no_bed_types_found": "No Bed Types found", - "total_beds": "Total Beds", - "create_facility": "Create a new facility", - "staff_list": "Staff List", - "bed_capacity": "Bed Capacity", - "cylinders": "Cylinders", - "cylinders_per_day": "Cylinders/day", - "liquid_oxygen_capacity": "Liquid Oxygen Capacity", - "expected_burn_rate": "Expected Burn Rate", - "type_b_cylinders": "B Type Cylinders", - "type_c_cylinders": "C Type Cylinders", - "type_d_cylinders": "D Type Cylinders", - "update_asset": "Update Asset", - "create_new_asset": "Create New Asset", - "you_need_at_least_a_location_to_create_an_assest": "You need at least a location to create an assest.", - "add_location": "Add Location", - "close_scanner": "Close Scanner", - "scan_asset_qr": "Scan Asset QR!", - "create": "Create", - "asset_name": "Asset Name", - "asset_location": "Asset Location", - "asset_type": "Asset Type", - "asset_class": "Asset Class", - "details_about_the_equipment": "Details about the equipment", - "working_status": "Working Status", - "why_the_asset_is_not_working": "Why the asset is not working?", - "describe_why_the_asset_is_not_working": "Describe why the asset is not working", - "asset_qr_id": "Asset QR ID", - "manufacturer": "Manufacturer", - "eg_xyz": "Eg. XYZ", - "eg_abc": "Eg. ABC", - "warranty_amc_expiry": "Warranty / AMC Expiry", - "customer_support_name": "Customer Support Name", - "customer_support_number": "Customer support number", - "customer_support_email": "Customer Support Email", - "eg_mail_example_com": "Eg. mail@example.com", - "vendor_name": "Vendor Name", - "serial_number": "Serial Number", - "last_serviced_on": "Last Serviced On", - "create_add_more": "Create & Add More", - "discharged_patients": "Discharged Patients", - "discharged_patients_empty": "No discharged patients present in this facility", - "update_facility_middleware_success": "Facility middleware updated successfully", - "treatment_summary__head_title": "Treatment Summary", - "treatment_summary__print": "Print Treatment Summary", - "treatment_summary__heading": "INTERIM TREATMENT SUMMARY", - "patient_registration__name": "Name", - "patient_registration__address": "Address", - "patient_registration__age": "Age", - "patient_consultation__op": "OP", - "patient_consultation__ip": "IP", - "patient_consultation__dc_admission": "Date of domiciliary care commenced", - "patient_consultation__admission": "Date of admission", - "patient_registration__gender": "Gender", - "patient_registration__contact": "Emergency Contact", - "patient_registration__comorbidities": "Comorbidities", - "patient_registration__comorbidities__disease": "Disease", - "patient_registration__comorbidities__details": "Details", - "patient_consultation__consultation_notes": "General Instructions", - "patient_consultation__special_instruction": "Special Instructions", - "suggested_investigations": "Suggested Investigations", + "invalid_username": "Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.", + "inventory_management": "Inventory Management", + "investigation_report": "Investigation Report", + "investigation_report_for_{{name}}": "Investigation Report for {{name}}", + "investigation_report_of_{{name}}": "Investigation Report of : {{name}}", + "investigation_reports": "Investigation Reports", + "investigations": "Investigations", "investigations__date": "Date", - "investigations__name": "Name", - "investigations__result": "Result", "investigations__ideal_value": "Ideal Value", + "investigations__name": "Name", "investigations__range": "Value Range", + "investigations__result": "Result", "investigations__unit": "Unit", - "patient_consultation__treatment__plan": "Plan", - "patient_consultation__treatment__summary": "Summary", - "patient_consultation__treatment__summary__date": "Date", - "patient_consultation__treatment__summary__spo2": "SpO2", - "patient_consultation__treatment__summary__temperature": "Temperature", - "diagnosis__principal": "Principal", - "diagnosis__confirmed": "Confirmed", - "diagnosis__provisional": "Provisional", - "diagnosis__unconfirmed": "Unconfirmed", - "diagnosis__differential": "Differential", - "active_prescriptions": "Active Prescriptions", - "prescriptions__medicine": "Medicine", - "prescriptions__route": "Route", - "prescriptions__dosage_frequency": "Dosage & Frequency", - "prescriptions__start_date": "Prescribed On", - "select_facility_for_discharged_patients_warning": "Facility needs to be selected to view discharged patients.", - "duplicate_patient_record_confirmation": "Admit the patient record to your facility by adding the year of birth", - "duplicate_patient_record_rejection": "I confirm that the suspect / patient I want to create is not on the list.", - "duplicate_patient_record_birth_unknown": "Please contact your district care coordinator, the shifting facility or the patient themselves if you are not sure about the patient's year of birth.", - "patient_transfer_birth_match_note": "Note: Year of birth must match the patient to process the transfer request.", - "bed_type__100": "ICU Bed", - "bed_type__200": "Ordinary Bed", - "bed_type__300": "Oxygen Supported Bed", - "bed_type__400": "Isolation Bed", - "bed_type__500": "Others", - "available_features": "Available Features", - "update_facility": "Update Facility", - "configure_facility": "Configure Facility", - "inventory_management": "Inventory Management", - "location_management": "Location Management", - "resource_request": "Resource Request", - "view_asset": "View Assets", - "view_users": "View Users", - "view_abdm_records": "View ABDM Records", - "delete_facility": "Delete Facility", - "central_nursing_station": "Central Nursing Station", - "add_details_of_patient": "Add Details of Patient", - "choose_location": "Choose Location", + "investigations_suggested": "Investigations Suggested", + "is": "Is", + "is_antenatal": "Is Antenatal", + "is_declared_positive": "Whether declared positive", + "is_emergency": "Is emergency", + "is_emergency_case": "Is emergency case", + "is_it_upshift": "is it upshift", + "is_this_an_emergency": "Is this an emergency?", + "is_this_an_upshift": "Is this an upshift?", + "is_up_shift": "Is up shift", + "is_upshift_case": "Is upshift case", + "is_vaccinated": "Whether vaccinated", + "landline": "Indian landline", + "language_selection": "Language Selection", + "last_administered": "Last administered", + "last_edited": "Last Edited", + "last_modified": "Last Modified", + "last_name": "Last Name", + "last_online": "Last Online", + "last_serviced_on": "Last Serviced On", + "latitude_invalid": "Latitude must be between -90 and 90", + "left": "Left", + "length": "Length ({{unit}})", + "linked_facilities": "Linked Facilities", + "linked_skills": "Linked Skills", + "liquid_oxygen_capacity": "Liquid Oxygen Capacity", + "list_view": "List View", + "litres": "Litres", + "litres_per_day": "Litres/day", + "live": "Live", "live_monitoring": "Live Monitoring", - "open_live_monitoring": "Open Live Monitoring", - "abha_number_linked_successfully": "ABHA number linked successfully", - "failed_to_link_abha_number": "Failed to link ABHA number", - "audio__allow_permission": "Please allow microphone permission in site settings", - "audio__allow_permission_helper": "You might have denied microphone access in the past.", - "audio__allow_permission_button": "Click here to know how to allow", - "audio__record": "Record Audio", - "audio__record_helper": "Click the button to start recording", - "audio__recording": "Recording", - "audio__recording_helper": "Please speak into your microphone.", - "audio__recording_helper_2": "Click on the button to stop recording.", - "audio__recorded": "Audio Recorded", - "audio__start_again": "Start Again", - "enter_file_name": "Enter File Name", + "load_more": "Load More", + "loading": "Loading...", + "local_body": "Local body", + "local_ipaddress": "Local IP Address", + "location": "Location", + "location_management": "Location Management", + "log_lab_results": "Log Lab Results", + "log_report": "Log Report", + "login": "Login", + "longitude_invalid": "Longitude must be between -180 and 180", + "lsg": "Lsg", + "make_multiple_beds_label": "Do you want to make multiple beds?", + "manage_prescriptions": "Manage Prescriptions", + "manufacturer": "Manufacturer", + "map_acronym": "M.A.P.", + "mark_all_as_read": "Mark all as Read", + "mark_as_read": "Mark as Read", + "mark_as_unread": "Mark as Unread", + "mark_this_transfer_as_complete_question": "Are you sure you want to mark this transfer as complete? The Origin facility will no longer have access to this patient", + "mark_transfer_complete_confirmation": "Are you sure you want to mark this transfer as complete? The Origin facility will no longer have access to this patient", + "max_dosage_24_hrs": "Max. dosage in 24 hrs.", + "max_dosage_in_24hrs_gte_base_dosage_error": "Max. dosage in 24 hours must be greater than or equal to base dosage", + "max_size_for_image_uploaded_should_be": "Max size for image uploaded should be", + "medical_council_registration": "Medical Council Registration", + "medical_worker": "Medical Worker", + "medicine": "Medicine", + "medicine_administration_history": "Medicine Administration History", + "medicines_administered": "Medicine(s) administered", + "medicines_administered_error": "Error administering medicine(s)", + "middleware_hostname": "Middleware Hostname", + "min_password_len_8": "Minimum password length 8", + "min_time_bw_doses": "Min. time b/w doses", + "mobile": "Mobile", + "mobile_number": "Mobile Number", + "modification_caution_note": "No modifications possible once added", + "modified": "Modified", + "modified_date": "Modified Date", + "monitor": "Monitor", + "more_info": "More Info", + "moving_camera": "Moving Camera", + "name": "Name", + "name_of_hospital": "Name of Hospital", + "name_of_shifting_approving_facility": "Name of shifting approving facility", + "nationality": "Nationality", + "never": "never", + "new_password": "New Password", + "new_password_confirmation": "Confirm New Password", + "next_sessions": "Next Sessions", + "no": "No", + "no_attachments_found": "This communication has no attachments.", + "no_bed_types_found": "No Bed Types found", + "no_changes": "No changes", + "no_changes_made": "No changes made", + "no_consultation_updates": "No consultation updates", + "no_cover_photo_uploaded_for_this_facility": "No cover photo uploaded for this facility", + "no_data_found": "No data found", + "no_duplicate_facility": "You should not create duplicate facilities", + "no_facilities": "No Facilities found", "no_files_found": "No {{type}} files found", - "upload_headings__patient": "Upload New Patient File", - "upload_headings__consultation": "Upload New Consultation File", - "upload_headings__sample_report": "Upload Sample Report", - "upload_headings__supporting_info": "Upload Supporting Info", - "file_list_headings__patient": "Patient Files", - "file_list_headings__consultation": "Consultation Files", - "file_list_headings__sample_report": "Sample Report", - "file_list_headings__supporting_info": "Supporting Info", - "file_error__choose_file": "Please choose a file to upload", - "file_error__file_name": "Please give a name for all files!", - "file_error__single_file_name": "Please give a name for the file", - "change_file": "Change File", - "file_error__file_size": "Maximum size of files is 100 MB", - "file_error__file_type": "Invalid file type \".{{extension}}\" Allowed types: {{allowedExtensions}}", - "file_uploaded": "File Uploaded Successfully", - "file_error__dynamic": "Error Uploading File: {{statusText}}", - "file_error__network": "Error Uploading File: Network Error", - "checking_policy_eligibility": "Checking Policy Eligibility", - "check_policy_eligibility": "Check Policy Eligibility", - "add_policy": "Add Insurance Policy", - "edit_policy": "Edit Insurance Policy", - "edit_policy_description": "Add or edit patient's insurance details", - "select_policy": "Select an Insurance Policy", - "select_eligible_policy": "Select an Eligible Insurance Policy", - "no_policy_found": "No Insurance Policy Found for this Patient", + "no_home_facility": "No home facility assigned", + "no_investigation": "No investigation Reports found", + "no_investigation_suggestions": "No Investigation Suggestions", + "no_linked_facilities": "No Linked Facilities", + "no_log_update_delta": "No changes since previous log update", + "no_notices_for_you": "No notices for you.", + "no_patients_to_show": "No patients to show.", "no_policy_added": "No Insurance Policy Added", - "checking_eligibility": "Checking Eligibility", - "check_eligibility": "Check Eligibility", - "eligible": "Eligible", + "no_policy_found": "No Insurance Policy Found for this Patient", + "no_remarks": "No remarks", + "no_results_found": "No Results Found", + "no_staff": "No staff found", + "no_tests_taken": "No tests taken", + "no_treating_physicians_available": "This facility does not have any home facility doctors. Please contact your admin.", + "no_users_found": "No Users Found", + "none": "None", + "normal": "Normal", "not_eligible": "Not Eligible", - "policy": "Policy", - "policy__subscriber_id": "Member ID", - "policy__subscriber_id__example": "SUB001", - "policy__policy_id": "Policy ID / Policy Name", - "policy__policy_id__example": "POL001", - "policy__insurer": "Insurer", - "policy__insurer__example": "GICOFINDIA", - "policy__insurer_id": "Insurer ID", - "policy__insurer_id__example": "GICOFINDIA", - "policy__insurer_name": "Insurer Name", - "policy__insurer_name__example": "GIC OF INDIA", - "claims": "Claims", - "claim__item": "Item", - "claim__items": "Items", - "claim__add_item": "Add Item", - "claim__item__add_at_least_one": "Add at least one item", - "claim__item__fill_all_details": "Fill all the item details", - "claim__item__category": "Category", - "claim__item__procedure": "Procedure", - "claim__item__id": "ID", - "claim__item__id__example": "PROC001", - "claim__item__name": "Name", - "claim__item__name__example": "Knee Replacement", - "claim__item__price": "Price", - "claim__item__price__example": "100.00", - "claim__failed_to_create_preauthorization": "Failed to create Pre Authorization", - "claim__failed_to_create_claim": "Failed to create Claim", - "claim__creating_preauthorization": "Creating Pre Authorization", - "claim__creating_claim": "Creating Claim", - "claim__create_preauthorization": "Create Pre Authorization", - "claim__create_claim": "Create Claim", - "claim__use": "Use", - "claim__use__preauthorization": "Pre Authorization", - "claim__use__claim": "Claim", - "select_policy_to_add_items": "Select a Policy to Add Items", - "total_amount": "Total Amount", - "claim__status__rejected": "Rejected", - "claim__status__approved": "Approved", - "claim__status__pending": "Pending", - "claim__total_claim_amount": "Total Claim Amount", - "claim__total_approved_amount": "Total Approved Amount", - "communication__sent_to_hcx": "Sent communication to HCX", - "fetched_attachments_successfully": "Fetched attachments successfully", - "add_attachments": "Add Attachments", - "claim__request_claim": "Request Claim", - "claim__requesting_claim": "Requesting Claim", - "claim__fetched_claim_approval_results": "Fetched Claim Approval Results", - "claim__error_fetching_claim_approval_results": "Error Fetching Claim Approval Results", - "monitor": "Monitor", - "show_default_presets": "Show Default Presets", - "show_patient_presets": "Show Patient Presets", - "moving_camera": "Moving Camera", - "full_screen": "Full Screen", - "feed_is_currently_not_live": "Feed is currently not live", - "zoom_out": "Zoom Out", - "zoom_in": "Zoom In", - "right": "Right", - "left": "Left", - "down": "Down", - "up": "Up", - "LOG_UPDATE_CREATED_NOTIFICATION": "{{ roundType }} created successfully", - "LOG_UPDATE_UPDATED_NOTIFICATION": "{{ roundType }} updated successfully", - "LOG_UPDATE_FIELD_LABEL__rounds_type": "Rounds Type", - "LOG_UPDATE_FIELD_LABEL__patient_category": "Category", - "LOG_UPDATE_FIELD_LABEL__consciousness_level": "Level of Consciousness", - "LOG_UPDATE_FIELD_LABEL__sleep": "Sleep", - "LOG_UPDATE_FIELD_LABEL__bowel_issue": "Bowel", - "LOG_UPDATE_FIELD_LABEL__bladder_drainage": "Drainage", - "LOG_UPDATE_FIELD_LABEL__bladder_issue": "Issues", - "LOG_UPDATE_FIELD_LABEL__is_experiencing_dysuria": "Experiences Dysuria?", - "LOG_UPDATE_FIELD_LABEL__urination_frequency": "Frequency of Urination", - "LOG_UPDATE_FIELD_LABEL__nutrition_route": "Nutrition Route", - "LOG_UPDATE_FIELD_LABEL__oral_issue": "Oral issues", - "LOG_UPDATE_FIELD_LABEL__appetite": "Appetite", - "LOG_UPDATE_FIELD_LABEL__physical_examination_info": "Physical Examination Info", - "LOG_UPDATE_FIELD_LABEL__bp": "Blood Pressure", - "LOG_UPDATE_FIELD_LABEL__blood_sugar_level": "Blood Sugar Level", - "LOG_UPDATE_FIELD_LABEL__action": "Action", - "LOG_UPDATE_FIELD_LABEL__review_interval": "Review after", - "LOG_UPDATE_FIELD_LABEL__rhythm": "Heartbeat Rhythm", - "LOG_UPDATE_FIELD_LABEL__rhythm_detail": "Rhythm Description", - "LOG_UPDATE_FIELD_LABEL__ventilator_spo2": "SpO₂", - "LOG_UPDATE_FIELD_LABEL__resp": "Respiratory Rate", - "LOG_UPDATE_FIELD_LABEL__temperature": "Temperature", - "LOG_UPDATE_FIELD_LABEL__other_details": "Other details", - "LOG_UPDATE_FIELD_LABEL__pulse": "Pulse", - "ROUNDS_TYPE__NORMAL": "Brief Update", - "ROUNDS_TYPE__COMMUNITY_NURSES_LOG": "Community Nurse's Log", - "ROUNDS_TYPE__VENTILATOR": "Detailed Update", - "ROUNDS_TYPE__DOCTORS_LOG": "Progress Note", - "ROUNDS_TYPE__AUTOMATED": "Virtual Nursing Assistant", - "ROUNDS_TYPE__TELEMEDICINE": "Tele-medicine Log", - "RESPIRATORY_SUPPORT_SHORT__UNKNOWN": "None", - "RESPIRATORY_SUPPORT_SHORT__OXYGEN_SUPPORT": "O₂ Support", - "RESPIRATORY_SUPPORT_SHORT__NON_INVASIVE": "NIV", - "RESPIRATORY_SUPPORT_SHORT__INVASIVE": "IV", - "RESPIRATORY_SUPPORT__UNKNOWN": "None", - "RESPIRATORY_SUPPORT__OXYGEN_SUPPORT": "Oxygen Support", - "RESPIRATORY_SUPPORT__NON_INVASIVE": "Non-Invasive ventilator (NIV)", - "RESPIRATORY_SUPPORT__INVASIVE": "Invasive ventilator (IV)", - "VENTILATOR_MODE__CMV": "Control Mechanical Ventilation (CMV)", - "VENTILATOR_MODE__VCV": "Volume Control Ventilation (VCV)", - "VENTILATOR_MODE__PCV": "Pressure Control Ventilation (PCV)", - "VENTILATOR_MODE__SIMV": "Synchronised Intermittent Mandatory Ventilation (SIMV)", - "VENTILATOR_MODE__VC_SIMV": "Volume Controlled SIMV (VC-SIMV)", - "VENTILATOR_MODE__PC_SIMV": "Pressure Controlled SIMV (PC-SIMV)", - "VENTILATOR_MODE__PSV": "C-PAP / Pressure Support Ventilation (PSV)", - "CONSCIOUSNESS_LEVEL__UNRESPONSIVE": "Unresponsive", - "CONSCIOUSNESS_LEVEL__RESPONDS_TO_PAIN": "Responds to Pain", - "CONSCIOUSNESS_LEVEL__RESPONDS_TO_VOICE": "Responds to Voice", - "CONSCIOUSNESS_LEVEL__ALERT": "Alert", - "CONSCIOUSNESS_LEVEL__AGITATED_OR_CONFUSED": "Agitated or Confused", - "CONSCIOUSNESS_LEVEL__ONSET_OF_AGITATION_AND_CONFUSION": "Onset of Agitation and Confusion", - "BOWEL_ISSUE__NO_DIFFICULTY": "No difficulty", - "BOWEL_ISSUE__CONSTIPATION": "Constipation", - "BOWEL_ISSUE__DIARRHOEA": "Diarrhoea", - "BLADDER_DRAINAGE__NORMAL": "Normal", - "BLADDER_DRAINAGE__CONDOM_CATHETER": "Condom Catheter", - "BLADDER_DRAINAGE__DIAPER": "Diaper", - "BLADDER_DRAINAGE__INTERMITTENT_CATHETER": "Intermittent Catheter", - "BLADDER_DRAINAGE__CONTINUOUS_INDWELLING_CATHETER": "Continuous Indwelling Catheter", - "BLADDER_DRAINAGE__CONTINUOUS_SUPRAPUBIC_CATHETER": "Continuous Suprapubic Catheter", - "BLADDER_DRAINAGE__UROSTOMY": "Urostomy", - "BLADDER_ISSUE__NO_ISSUES": "No issues", - "BLADDER_ISSUE__INCONTINENCE": "Incontinence", - "BLADDER_ISSUE__RETENTION": "Retention", - "BLADDER_ISSUE__HESITANCY": "Hesitancy", - "URINATION_FREQUENCY__NORMAL": "Normal", - "URINATION_FREQUENCY__DECREASED": "Decreased", - "URINATION_FREQUENCY__INCREASED": "Increased", - "SLEEP__EXCESSIVE": "Excessive", - "SLEEP__SATISFACTORY": "Satisfactory", - "SLEEP__UNSATISFACTORY": "Unsatisfactory", - "SLEEP__NO_SLEEP": "No sleep", - "NUTRITION_ROUTE__ORAL": "Oral", - "NUTRITION_ROUTE__RYLES_TUBE": "Ryle's Tube", - "NUTRITION_ROUTE__GASTROSTOMY_OR_JEJUNOSTOMY": "Gastrostomy / Jejunostomy", - "NUTRITION_ROUTE__PEG": "PEG", - "NUTRITION_ROUTE__PARENTERAL_TUBING_FLUID": "Parenteral Tubing (Fluid)", - "NUTRITION_ROUTE__PARENTERAL_TUBING_TPN": "Parenteral Tubing (TPN)", - "ORAL_ISSUE__NO_ISSUE": "No issues", - "ORAL_ISSUE__DYSPHAGIA": "Dysphagia", - "ORAL_ISSUE__ODYNOPHAGIA": "Odynophagia", - "APPETITE__INCREASED": "Increased", - "APPETITE__SATISFACTORY": "Satisfactory", - "APPETITE__REDUCED": "Reduced", - "APPETITE__NO_TASTE_FOR_FOOD": "No taste for food", - "APPETITE__CANNOT_BE_ASSESSED": "Cannot be assessed", - "PUPIL_REACTION__UNKNOWN": "Unknown", - "PUPIL_REACTION__BRISK": "Brisk", - "PUPIL_REACTION__SLUGGISH": "Sluggish", - "PUPIL_REACTION__FIXED": "Fixed", - "PUPIL_REACTION__CANNOT_BE_ASSESSED": "Cannot be assessed", - "LIMB_RESPONSE__UNKNOWN": "Unknown", - "LIMB_RESPONSE__STRONG": "Strong", - "LIMB_RESPONSE__MODERATE": "Moderate", - "LIMB_RESPONSE__WEAK": "Weak", - "LIMB_RESPONSE__FLEXION": "Flexion", - "LIMB_RESPONSE__EXTENSION": "Extension", - "LIMB_RESPONSE__NONE": "None", - "OXYGEN_MODALITY__NASAL_PRONGS": "Nasal Prongs", - "OXYGEN_MODALITY__SIMPLE_FACE_MASK": "Simple Face Mask", - "OXYGEN_MODALITY__NON_REBREATHING_MASK": "Non Rebreathing Mask", - "OXYGEN_MODALITY__HIGH_FLOW_NASAL_CANNULA": "High Flow Nasal Cannula", - "INSULIN_INTAKE_FREQUENCY__UNKNOWN": "Unknown", - "INSULIN_INTAKE_FREQUENCY__OD": "Once a day (OD)", - "INSULIN_INTAKE_FREQUENCY__BD": "Twice a day (BD)", - "INSULIN_INTAKE_FREQUENCY__TD": "Thrice a day (TD)", - "NURSING_CARE_PROCEDURE__oral_care": "Oral Care", - "NURSING_CARE_PROCEDURE__hair_care": "Hair Care", - "NURSING_CARE_PROCEDURE__bed_bath": "Bed Bath", - "NURSING_CARE_PROCEDURE__eye_care": "Eye Care", - "NURSING_CARE_PROCEDURE__perineal_care": "Perineal Care", - "NURSING_CARE_PROCEDURE__skin_care": "Skin Care", - "NURSING_CARE_PROCEDURE__pre_enema": "P.R.E. Enema", - "NURSING_CARE_PROCEDURE__wound_dressing": "Wound Dressing", - "NURSING_CARE_PROCEDURE__lymphedema_care": "Lymphedema Care", - "NURSING_CARE_PROCEDURE__ascitic_tapping": "Ascitic Tapping", - "NURSING_CARE_PROCEDURE__colostomy_care": "Colostomy Care", - "NURSING_CARE_PROCEDURE__colostomy_change": "Colostomy Change", - "NURSING_CARE_PROCEDURE__personal_hygiene": "Other Personal Hygiene", - "NURSING_CARE_PROCEDURE__positioning": "Positioning", - "NURSING_CARE_PROCEDURE__suctioning": "Suctioning", - "NURSING_CARE_PROCEDURE__ryles_tube_care": "Ryle’s Tube Care", - "NURSING_CARE_PROCEDURE__ryles_tube_change": "Ryle’s Tube Change", - "NURSING_CARE_PROCEDURE__iv_sitecare": "IV Site Care", - "NURSING_CARE_PROCEDURE__nubulisation": "Nubulisation", - "NURSING_CARE_PROCEDURE__dressing": "Dressing", - "NURSING_CARE_PROCEDURE__dvt_pump_stocking": "DVT Pump Stocking", - "NURSING_CARE_PROCEDURE__restrain": "Restrain", - "NURSING_CARE_PROCEDURE__chest_tube_care": "Chest Tube Care", - "NURSING_CARE_PROCEDURE__tracheostomy_care": "Tracheostomy Care", - "NURSING_CARE_PROCEDURE__tracheostomy_tube_change": "Tracheostomy Tube Change", - "NURSING_CARE_PROCEDURE__stoma_care": "Stoma Care", - "NURSING_CARE_PROCEDURE__catheter_care": "Catheter Care", - "NURSING_CARE_PROCEDURE__catheter_change": "Catheter Change", - "HEARTBEAT_RHYTHM__REGULAR": "Regular", - "HEARTBEAT_RHYTHM__IRREGULAR": "Irregular", - "HEARTBEAT_RHYTHM__UNKNOWN": "Unknown", - "map_acronym": "M.A.P.", - "systolic": "Systolic", - "diastolic": "Diastolic", - "blood_pressure_error": { - "missing": "Field is required. Either specify both or clear both.", - "exceed": "Value cannot exceed 250 mmHg.", - "systolic_less_than_diastolic": "Systolic must be greater than diastolic." - }, + "not_specified": "Not Specified", + "notes": "Notes", + "notes_placeholder": "Type your Notes", + "notice_board": "Notice Board", + "notification_permission_denied": "Notification permission denied", + "notification_permission_granted": "Notification permission granted", + "number_of_aged_dependents_above_60": "Number Of Aged Dependents (Above 60)", + "number_of_beds": "Number of beds", + "number_of_beds_out_of_range_error": "Number of beds cannot be greater than 100", + "number_of_chronic_diseased_dependents": "Number Of Chronic Diseased Dependents", + "nursing_care": "Nursing Care", + "nursing_information": "Nursing Information", + "nutrition": "Nutrition", + "occupation": "Occupation", + "on": "On", + "ongoing_medications": "Ongoing Medications", + "open": "Open", + "open_camera": "Open Camera", + "open_live_monitoring": "Open Live Monitoring", + "optional": "Optional", + "oral_issue_for_non_oral_nutrition_route_error": "Can be specified only if nutrition route is set to Oral", + "ordering": "Ordering", + "origin_facility": "Current facility", + "other_details": "Other details", "out_of_range_error": "Value must be between {{ start }} and {{ end }}.", + "oxygen_information": "Oxygen Information", + "page_not_found": "Page Not Found", "pain": "Pain", "pain_chart_description": "Mark region and intensity of pain", - "bradycardia": "Bradycardia", - "tachycardia": "Tachycardia", - "vitals": "Vitals", - "procedures_select_placeholder": "Select procedures to add details", - "oral_issue_for_non_oral_nutrition_route_error": "Can be specified only if nutrition route is set to Oral", - "routine": "Routine", - "bladder": "Bladder", - "nutrition": "Nutrition", - "nursing_care": "Nursing Care", - "medicine": "Medicine", - "route": "Route", - "dosage": "Dosage", - "base_dosage": "Dosage", - "start_dosage": "Start Dosage", - "target_dosage": "Target Dosage", - "instruction_on_titration": "Instruction on titration", - "titrate_dosage": "Titrate Dosage", - "indicator": "Indicator", - "inidcator_event": "Indicator Event", - "max_dosage_24_hrs": "Max. dosage in 24 hrs.", - "min_time_bw_doses": "Min. time b/w doses", - "manage_prescriptions": "Manage Prescriptions", - "prescription_details": "Prescription Details", - "prescription_medications": "Prescription Medications", - "prn_prescriptions": "PRN Prescriptions", + "passport_number": "Passport Number", + "password": "Password", + "password_mismatch": "Password and confirm password must be same.", + "password_reset_failure": "Password Reset Failed", + "password_reset_success": "Password Reset successfully", + "password_sent": "Password Reset Email Sent", + "patient_address": "Patient Address", + "patient_category": "Patient Category", + "patient_consultation__admission": "Date of admission", + "patient_consultation__consultation_notes": "General Instructions", + "patient_consultation__dc_admission": "Date of domiciliary care commenced", + "patient_consultation__ip": "IP", + "patient_consultation__op": "OP", + "patient_consultation__special_instruction": "Special Instructions", + "patient_consultation__treatment__plan": "Plan", + "patient_consultation__treatment__summary": "Summary", + "patient_consultation__treatment__summary__date": "Date", + "patient_consultation__treatment__summary__spo2": "SpO2", + "patient_consultation__treatment__summary__temperature": "Temperature", + "patient_created": "Patient Created", + "patient_details": "Patient Details", + "patient_name": "Patient name", + "patient_no": "OP/IP No", + "patient_notes_thread__Doctors": "Doctor's Discussions", + "patient_notes_thread__Nurses": "Nurse's Discussions", + "patient_phone_number": "Patient Phone Number", + "patient_registration__address": "Address", + "patient_registration__age": "Age", + "patient_registration__comorbidities": "Comorbidities", + "patient_registration__comorbidities__details": "Details", + "patient_registration__comorbidities__disease": "Disease", + "patient_registration__contact": "Emergency Contact", + "patient_registration__gender": "Gender", + "patient_registration__name": "Name", + "patient_state": "Patient State", + "patient_status": "Patient Status", + "patient_transfer_birth_match_note": "Note: Year of birth must match the patient to process the transfer request.", + "patients": "Patients", + "personal_information": "Personal Information", + "phone": "Phone", + "phone_no": "Phone no.", + "phone_number": "Phone Number", + "phone_number_at_current_facility": "Phone Number of Contact person at current Facility", + "pincode": "Pincode", + "please_enter_a_reason_for_the_shift": "Please enter a reason for the shift.", + "please_select_a_facility": "Please select a facility", + "please_select_breathlessness_level": "Please select Breathlessness Level", + "please_select_facility_type": "Please select Facility Type", + "please_select_patient_category": "Please select Patient Category", + "please_select_preferred_vehicle_type": "Please select Preferred Vehicle Type", + "please_select_status": "Please select Status", + "please_upload_a_csv_file": "Please Upload A CSV file", + "policy": "Policy", + "policy__insurer": "Insurer", + "policy__insurer__example": "GICOFINDIA", + "policy__insurer_id": "Insurer ID", + "policy__insurer_id__example": "GICOFINDIA", + "policy__insurer_name": "Insurer Name", + "policy__insurer_name__example": "GIC OF INDIA", + "policy__policy_id": "Policy ID / Policy Name", + "policy__policy_id__example": "POL001", + "policy__subscriber_id": "Member ID", + "policy__subscriber_id__example": "SUB001", + "post_your_comment": "Post Your Comment", + "powered_by": "Powered By", + "preferred_facility_type": "Preferred Facility Type", + "preferred_vehicle": "Preferred Vehicle", "prescription": "Prescription", - "discharge_prescription": "Discharge Prescription", - "edit_prescriptions": "Edit Prescriptions", - "prescription_medication": "Prescription Medication", - "add_prescription_medication": "Add Prescription Medication", - "prn_prescription": "PRN Prescription", - "add_prn_prescription": "Add PRN Prescription", - "add_prescription_to_consultation_note": "Add a new prescription to this consultation.", - "medicine_administration_history": "Medicine Administration History", - "return_to_patient_dashboard": "Return to Patient Dashboard", - "administered_on": "Administered on", - "administer": "Administer", - "administer_medicine": "Administer Medicine", - "administer_medicines": "Administer Medicines", - "administer_selected_medicines": "Administer Selected Medicines", - "select_for_administration": "Select for Administration", - "medicines_administered": "Medicine(s) administered", - "medicines_administered_error": "Error administering medicine(s)", + "prescription_details": "Prescription Details", "prescription_discontinued": "Prescription discontinued", - "administration_notes": "Administration Notes", - "last_administered": "Last administered", "prescription_logs": "Prescription Logs", - "modification_caution_note": "No modifications possible once added", - "discontinue_caution_note": "Are you sure you want to discontinue this prescription?", - "confirm_discontinue": "Confirm Discontinue", - "edit_caution_note": "A new prescription will be added to the consultation with the edited details and the current prescription will be discontinued.", + "prescription_medication": "Prescription Medication", + "prescription_medications": "Prescription Medications", + "prescriptions__dosage_frequency": "Dosage & Frequency", + "prescriptions__medicine": "Medicine", + "prescriptions__route": "Route", + "prescriptions__start_date": "Prescribed On", + "prev_sessions": "Prev Sessions", + "principal": "Principal", + "principal_diagnosis": "Principal diagnosis", + "print": "Print", + "print_referral_letter": "Print Referral Letter", + "prn_prescription": "PRN Prescription", + "prn_prescriptions": "PRN Prescriptions", + "procedure_suggestions": "Procedure Suggestions", + "procedures_select_placeholder": "Select procedures to add details", + "profile": "Profile", + "provisional": "Provisional", + "qualification": "Qualification", + "ration_card__APL": "APL", + "ration_card__BPL": "BPL", + "ration_card__NO_CARD": "Non-card holder", + "ration_card_category": "Ration Card Category", + "reason": "Reason", "reason_for_discontinuation": "Reason for discontinuation", "reason_for_edit": "Reason for edit", - "PRESCRIPTION_ROUTE_ORAL": "Oral", - "PRESCRIPTION_ROUTE_IV": "IV", - "PRESCRIPTION_ROUTE_IM": "IM", - "PRESCRIPTION_ROUTE_SC": "S/C", - "PRESCRIPTION_ROUTE_INHALATION": "Inhalation", - "PRESCRIPTION_ROUTE_NASOGASTRIC": "Nasogastric / Gastrostomy tube", - "PRESCRIPTION_ROUTE_INTRATHECAL": "intrathecal injection", - "PRESCRIPTION_ROUTE_TRANSDERMAL": "Transdermal", - "PRESCRIPTION_ROUTE_RECTAL": "Rectal", - "PRESCRIPTION_ROUTE_SUBLINGUAL": "Sublingual", - "PRESCRIPTION_FREQUENCY_STAT": "Imediately", - "PRESCRIPTION_FREQUENCY_OD": "Once daily", - "PRESCRIPTION_FREQUENCY_HS": "Night only", - "PRESCRIPTION_FREQUENCY_BD": "Twice daily", - "PRESCRIPTION_FREQUENCY_TID": "8th hourly", - "PRESCRIPTION_FREQUENCY_QID": "6th hourly", - "PRESCRIPTION_FREQUENCY_Q4H": "4th hourly", - "PRESCRIPTION_FREQUENCY_QOD": "Alternate day", - "PRESCRIPTION_FREQUENCY_QWK": "Once a week", - "inconsistent_dosage_units_error": "Dosage units must be same", - "max_dosage_in_24hrs_gte_base_dosage_error": "Max. dosage in 24 hours must be greater than or equal to base dosage", - "administration_dosage_range_error": "Dosage should be between start and target dosage", - "no_notices_for_you": "No notices for you.", - "mark_as_read": "Mark as Read", - "mark_as_unread": "Mark as Unread", - "subscribe": "Subscribe", - "subscribe_on_this_device": "Subscribe on this device", - "notification_permission_denied": "Notification permission denied", - "notification_permission_granted": "Notification permission granted", - "show_unread_notifications": "Show Unread", - "show_all_notifications": "Show All", - "filter_by_category": "Filter by category", - "mark_all_as_read": "Mark all as Read", + "reason_for_referral": "Reason for referral", + "reason_for_shift": "Reason for shift", + "recommended_aspect_ratio_for": "Recommended aspect ratio for", + "record": "Record Audio", + "record_delete_confirm": "Are you sure you want to delete this record?", + "record_has_been_deleted_successfully": "Record has been deleted successfully.", + "record_updates": "Record Updates", + "recording": "Recording", + "redirected_to_create_consultation": "Note: You will be redirected to create consultation form. Please complete the form to finish the transfer process", + "referral_letter": "Referral Letter", + "referred_to": "Referred to", + "refresh_list": "Refresh List", + "refuted": "Refuted", + "register_hospital": "Register Hospital", + "register_page_title": "Register As Hospital Administrator", "reload": "Reload", - "no_results_found": "No Results Found", - "load_more": "Load More", - "subscription_error": "Subscription Error", - "unsubscribe_failed": "Unsubscribe failed.", - "unsubscribe": "Unsubscribe", - "escape": "Escape", - "invalid_asset_id_msg": "Oops! The asset ID you entered does not appear to be valid.", - "asset_not_found_msg": "Oops! The asset you are looking for does not exist. Please check the asset id.", - "occupation": "Occupation", - "ration_card_category": "Ration Card Category", - "socioeconomic_status": "Socioeconomic status", - "domestic_healthcare_support": "Domestic healthcare support", - "has_domestic_healthcare_support": "Has domestic healthcare support?", - "SOCIOECONOMIC_STATUS__MIDDLE_CLASS": "Middle Class", - "SOCIOECONOMIC_STATUS__POOR": "Poor", - "SOCIOECONOMIC_STATUS__VERY_POOR": "Very Poor", - "SOCIOECONOMIC_STATUS__WELL_OFF": "Well Off", - "DOMESTIC_HEALTHCARE_SUPPORT__FAMILY_MEMBER": "Family member", - "DOMESTIC_HEALTHCARE_SUPPORT__PAID_CAREGIVER": "Paid caregiver", - "DOMESTIC_HEALTHCARE_SUPPORT__NO_SUPPORT": "No support", - "create_resource_request": "Create Resource Request", - "contact_person": "Name of Contact Person at Facility", - "approving_facility": "Name of Approving Facility", - "contact_phone": "Contact Person Number", + "remove": "Remove", + "rename": "Rename", + "report": "Report", + "req_atleast_one_digit": "Require at least one digit", + "req_atleast_one_lowercase": "Require at least one lower case letter", + "req_atleast_one_symbol": "Require at least one symbol", + "req_atleast_one_uppercase": "Require at least one upper case", + "request_description": "Description of Request", + "request_description_placeholder": "Type your description here", "request_title": "Request Title", "request_title_placeholder": "Type your title here", + "required": "Required", "required_quantity": "Required Quantity", - "request_description": "Description of Request", - "request_description_placeholder": "Type your description here", + "reset": "Reset", + "reset_password": "Reset Password", + "resource": "Resource", + "resource_approving_facility": "Resource approving facility", + "resource_origin_facility": "Origin Facility", + "resource_request": "Resource Request", + "result": "Result", + "result_date": "Result Date", + "result_details": "Result details", + "resume": "Resume", + "retake": "Retake", + "return_to_care": "Return to CARE", + "return_to_login": "Return to Login", + "return_to_password_reset": "Return to Password Reset", + "return_to_patient_dashboard": "Return to Patient Dashboard", + "right": "Right", + "route": "Route", + "routine": "Routine", + "sample_collection_date": "Sample Collection Date", + "sample_format": "Sample Format", + "sample_test": "Sample Test", + "sample_type": "Sample Type", + "save": "Save", + "save_and_continue": "Save and Continue", + "save_investigation": "Save Investigation", + "scan_asset_qr": "Scan Asset QR!", + "search_by_username": "Search by username", + "search_for_facility": "Search for Facility", + "search_icd11_placeholder": "Search for ICD-11 Diagnoses", + "search_investigation_placeholder": "Search Investigation & Groups", + "search_patient": "Search Patient", "search_resource": "Search Resource", - "emergency": "Emergency", - "up_shift": "Up Shift", - "antenatal": "Antenatal", - "phone_no": "Phone no.", - "patient_name": "Patient name", - "disease_status": "Disease status", - "breathlessness_level": "Breathlessness level", - "assigned_facility": "Facility assigned", - "origin_facility": "Current facility", - "shifting_approval_facility": "Shifting approval facility", + "see_attachments": "See Attachments", + "select": "Select", + "select_date": "Select date", + "select_eligible_policy": "Select an Eligible Insurance Policy", + "select_facility_for_discharged_patients_warning": "Facility needs to be selected to view discharged patients.", + "select_for_administration": "Select for Administration", + "select_groups": "Select Groups", + "select_investigation": "Select Investigations (all investigations will be selected by default)", + "select_investigation_groups": "Select Investigation Groups", + "select_investigations": "Select Investigations", + "select_local_body": "Select Local Body", + "select_policy": "Select an Insurance Policy", + "select_policy_to_add_items": "Select a Policy to Add Items", + "select_skills": "Select and add some skills", + "select_wards": "Select wards", + "send_email": "Send Email", + "send_message": "Send Message", + "send_reset_link": "Send Reset Link", + "serial_number": "Serial Number", + "serviced_on": "Serviced on", + "session_expired": "Session Expired", + "session_expired_msg": "It appears that your session has expired. This could be due to inactivity. Please login again to continue.", + "set_average_weekly_working_hours_for": "Set Average weekly working hours for", + "set_your_local_language": "Set your local language", + "settings_and_filters": "Settings and Filters", + "severity_of_breathlessness": "Severity of Breathlessness", + "shift_request_updated_successfully": "Shift request updated successfully", "shifting": "Shifting", - "search_patient": "Search Patient", - "list_view": "List View", - "comment_min_length": "Comment Should Contain At Least 1 Character", - "comment_added_successfully": "Comment added successfully", - "post_your_comment": "Post Your Comment", + "shifting_approval_facility": "Shifting approval facility", "shifting_approving_facility": "Shifting approving facility", - "is_emergency_case": "Is emergency case", - "is_upshift_case": "Is upshift case", - "is_antenatal": "Is Antenatal", - "patient_phone_number": "Patient Phone Number", - "created_date": "Created Date", - "modified_date": "Modified Date", - "no_patients_to_show": "No patients to show.", - "shifting_status": "Shifting status", - "transfer_to_receiving_facility": "Transfer to receiving facility", - "confirm_transfer_complete": "Confirm Transfer Complete!", - "mark_transfer_complete_confirmation": "Are you sure you want to mark this transfer as complete? The Origin facility will no longer have access to this patient", - "board_view": "Board View", + "shifting_approving_facility_can_not_be_empty": "Shifting approving facility can not be empty.", "shifting_deleted": "Shifting record has been deleted successfully.", - "details_of_shifting_approving_facility": "Details of shifting approving facility", - "details_of_assigned_facility": "Details of assigned facility", - "details_of_origin_facility": "Details of origin facility", - "details_of_patient": "Details of patient", - "record_delete_confirm": "Are you sure you want to delete this record?", - "phone_number_at_current_facility": "Phone Number of Contact person at current Facility", - "authorize_shift_delete": "Authorize shift delete", - "delete_record": "Delete Record", - "severity_of_breathlessness": "Severity of Breathlessness", - "facility_preference": "Facility preference", - "vehicle_preference": "Vehicle preference", - "is_up_shift": "Is up shift", - "ambulance_driver_name": "Name of ambulance driver", - "ambulance_phone_number": "Phone number of Ambulance", - "ambulance_number": "Ambulance No", - "is_emergency": "Is emergency", - "contact_person_at_the_facility": "Contact person at the current facility", - "update_status_details": "Update Status/Details", "shifting_details": "Shifting details", - "auto_generated_for_care": "Auto Generated for Care", - "approved_by_district_covid_control_room": "Approved by District COVID Control Room", - "treatment_summary": "Treatment Summary", - "reason_for_referral": "Reason for referral", - "referred_to": "Referred to", - "covid_19_cat_gov": "Covid_19 Clinical Category as per Govt. of Kerala guideline (A/B/C)", - "district_program_management_supporting_unit": "District Program Management Supporting Unit", - "name_of_hospital": "Name of Hospital", - "passport_number": "Passport Number", + "shifting_status": "Shifting status", + "show_all": "Show all", + "show_all_notifications": "Show All", + "show_default_presets": "Show Default Presets", + "show_patient_presets": "Show Patient Presets", + "show_unread_notifications": "Show Unread", + "sign_out": "Sign Out", + "skills": "Skills", + "socioeconomic_status": "Socioeconomic status", + "software_update": "Software Update", + "something_went_wrong": "Something went wrong..!", + "something_wrong": "Something went wrong! Try again later!", + "sort_by": "Sort By", + "source": "Source", + "spokes": "Spoke Facilities", + "srf_id": "SRF ID", + "staff_list": "Staff List", + "start_dosage": "Start Dosage", + "state": "State", + "status": "Status", + "stop": "Stop", + "stream_stop_due_to_inativity": "The live feed will stop streaming due to inactivity", + "stream_stopped_due_to_inativity": "The live feed has stopped streaming due to inactivity", + "sub_category": "Sub Category", + "submit": "Submit", + "submitting": "Submitting", + "subscribe": "Subscribe", + "subscribe_on_this_device": "Subscribe on this device", + "subscription_error": "Subscription Error", + "suggested_investigations": "Suggested Investigations", + "summary": "Summary", + "support": "Support", + "switch": "Switch", + "systolic": "Systolic", + "tachycardia": "Tachycardia", + "target_dosage": "Target Dosage", "test_type": "Type of test done", - "medical_worker": "Medical Worker", - "error_deleting_shifting": "Error while deleting Shifting record", + "titrate_dosage": "Titrate Dosage", + "to_be_conducted": "To be conducted", + "total_amount": "Total Amount", + "total_beds": "Total Beds", + "total_users": "Total Users", + "transfer_in_progress": "TRANSFER IN PROGRESS", + "transfer_to_receiving_facility": "Transfer to receiving facility", + "travel_within_last_28_days": "Domestic/international Travel (within last 28 days)", + "treating_doctor": "Treating Doctor", + "treatment_summary": "Treatment Summary", + "treatment_summary__head_title": "Treatment Summary", + "treatment_summary__heading": "INTERIM TREATMENT SUMMARY", + "treatment_summary__print": "Print Treatment Summary", + "try_again_later": "Try again later!", "type_any_extra_comments_here": "type any extra comments here", + "type_b_cylinders": "B Type Cylinders", + "type_c_cylinders": "C Type Cylinders", + "type_d_cylinders": "D Type Cylinders", + "type_to_search": "Type to search", + "type_your_comment": "Type your comment", "type_your_reason_here": "Type your reason here", - "reason_for_shift": "Reason for shift", - "preferred_facility_type": "Preferred Facility Type", - "preferred_vehicle": "Preferred Vehicle", - "is_it_upshift": "is it upshift", - "is_this_an_upshift": "Is this an upshift?", - "is_this_an_emergency": "Is this an emergency?", - "what_facility_assign_the_patient_to": "What facility would you like to assign the patient to", - "name_of_shifting_approving_facility": "Name of shifting approving facility", + "unconfirmed": "Unconfirmed", + "unique_id": "Unique Id", + "unknown": "Unknown", + "unsubscribe": "Unsubscribe", + "unsubscribe_failed": "Unsubscribe failed.", + "unsupported_browser": "Unsupported Browser", + "unsupported_browser_description": "Your browser ({{name}} version {{version}}) is not supported. Please update your browser to the latest version or switch to a supported browser for the best experience.", + "up": "Up", + "up_shift": "Up Shift", + "update": "Update", + "update_asset": "Update Asset", + "update_asset_service_record": "Update Asset Service Record", + "update_available": "Update Available", + "update_bed": "Update Bed", + "update_facility": "Update Facility", + "update_facility_middleware_success": "Facility middleware updated successfully", + "update_log": "Update Log", + "update_record": "Update Record", + "update_record_for_asset": "Update record for asset", "update_shift_request": "Update Shift Request", - "shift_request_updated_successfully": "Shift request updated successfully", - "please_enter_a_reason_for_the_shift": "Please enter a reason for the shift.", - "please_select_preferred_vehicle_type": "Please select Preferred Vehicle Type", - "please_select_facility_type": "Please select Facility Type", - "please_select_breathlessness_level": "Please select Breathlessness Level", - "please_select_a_facility": "Please select a facility", - "please_select_status": "Please select Status", - "please_select_patient_category": "Please select Patient Category", - "shifting_approving_facility_can_not_be_empty": "Shifting approving facility can not be empty.", - "redirected_to_create_consultation": "Note: You will be redirected to create consultation form. Please complete the form to finish the transfer process", - "mark_this_transfer_as_complete_question": "Are you sure you want to mark this transfer as complete? The Origin facility will no longer have access to this patient", - "transfer_in_progress": "TRANSFER IN PROGRESS", - "patient_state": "Patient State", - "yet_to_be_decided": "Yet to be decided", - "awaiting_destination_approval": "AWAITING DESTINATION APPROVAL", + "update_status_details": "Update Status/Details", + "updated": "Updated", + "updating": "Updating", + "upload": "Upload", + "upload_an_image": "Upload an image", + "upload_headings__consultation": "Upload New Consultation File", + "upload_headings__patient": "Upload New Patient File", + "upload_headings__sample_report": "Upload Sample Report", + "upload_headings__supporting_info": "Upload Supporting Info", + "uploading": "Uploading", + "user_deleted_successfuly": "User Deleted Successfuly", "user_management": "User Management", - "facilities": "Facilities", - "add_new_user": "Add New User", - "no_users_found": "No Users Found", - "home_facility": "Home Facility", - "no_home_facility": "No home facility assigned", - "clear_home_facility": "Clear Home Facility", - "linked_facilities": "Linked Facilities", - "no_linked_facilities": "No Linked Facilities", - "average_weekly_working_hours": "Average weekly working hours", - "set_average_weekly_working_hours_for": "Set Average weekly working hours for", - "search_by_username": "Search by username", - "last_online": "Last Online", - "total_users": "Total Users", - "covid_19_death_reporting_form_1": "Covid-19 Death Reporting : Form 1", - "is_declared_positive": "Whether declared positive", - "date_declared_positive": "Date of declaring positive", - "date_of_result": "Covid confirmation date", - "is_vaccinated": "Whether vaccinated", - "resource_origin_facility": "Origin Facility", - "resource_approving_facility": "Resource approving facility", - "consultation_not_filed": "You have not filed any consultation for this patient yet.", - "consultation_not_filed_description": "Please file a consultation for this patient to continue.", - "create_consultation": "Create Consultation", - "patient_details": "Patient Details", + "username": "Username", + "users": "Users", + "vehicle_preference": "Vehicle preference", + "vendor_name": "Vendor Name", + "video_conference_link": "Video Conference Link", + "view": "View", + "view_abdm_records": "View ABDM Records", + "view_asset": "View Assets", + "view_details": "View Details", + "view_faciliy": "View Facility", + "view_patients": "View Patients", + "view_users": "View Users", + "virtual_nursing_assistant": "Virtual Nursing Assistant", + "vitals": "Vitals", + "ward": "Ward", + "warranty_amc_expiry": "Warranty / AMC Expiry", + "what_facility_assign_the_patient_to": "What facility would you like to assign the patient to", + "whatsapp_number": "Whatsapp Number", + "why_the_asset_is_not_working": "Why the asset is not working?", "width": "Width ({{unit}})", - "length": "Length ({{unit}})", + "working_status": "Working Status", "years": "years", - "investigation_report": "Investigation Report", - "expand_sidebar": "Expand Sidebar", - "collapse_sidebar": "Collapse Sidebar", - "linked_skills": "Linked Skills" -} \ No newline at end of file + "years_of_experience": "Years of Experience", + "years_of_experience_of_the_doctor": "Years of Experience of the Doctor", + "yes": "Yes", + "yet_to_be_decided": "Yet to be decided", + "you_need_at_least_a_location_to_create_an_assest": "You need at least a location to create an assest.", + "zoom_in": "Zoom In", + "zoom_out": "Zoom Out" +} diff --git a/src/Locale/hi.json b/src/Locale/hi.json index 4844a2d787d..93d9ef32f34 100644 --- a/src/Locale/hi.json +++ b/src/Locale/hi.json @@ -1,813 +1,813 @@ { - "create_asset": "संपत्ति बनाएं", - "edit_history": "इतिहास संपादित करें", - "update_record_for_asset": "संपत्ति के लिए रिकॉर्ड अपडेट करें", - "edited_on": "संपादित किया गया", - "edited_by": "द्वारा संपादित", - "serviced_on": "सेवा पर", - "notes": "नोट्स", - "back": "पीछे", - "close": "बंद करना", - "update_asset_service_record": "एसेट सेवा रिकॉर्ड अपडेट करें", - "eg_details_on_functionality_service_etc": "उदाहरणार्थ, कार्यक्षमता, सेवा आदि का विवरण।", - "updating": "अद्यतन करने", - "update": "अद्यतन", - "are_you_still_watching": "क्या आप अभी भी देख रहे हैं?", - "stream_stop_due_to_inativity": "निष्क्रियता के कारण लाइव फ़ीड स्ट्रीमिंग बंद हो जाएगी", - "stream_stopped_due_to_inativity": "निष्क्रियता के कारण लाइव फ़ीड की स्ट्रीमिंग बंद हो गई है", - "continue_watching": "देखना जारी रखें", - "resume": "फिर शुरू करना", - "username": "उपयोगकर्ता नाम", - "password": "पासवर्ड", - "new_password": "नया पासवर्ड", - "confirm_password": "पासवर्ड की पुष्टि कीजिये", - "first_name": "पहला नाम", - "last_name": "उपनाम", - "email": "मेल पता", - "phone_number": "फ़ोन नंबर", - "district": "ज़िला", - "gender": "लिंग", - "age": "आयु", - "login": "लॉग इन करें", - "password_mismatch": "पासवर्ड और पुष्टि पासवर्ड एक ही होना चाहिए.", - "enter_valid_age": "कृपया वैध आयु दर्ज करें", - "invalid_username": "आवश्यक। 150 अक्षर या उससे कम। केवल अक्षर, अंक और @/./+/-/_।", - "invalid_password": "पासवर्ड आवश्यकताओं को पूरा नहीं करता है", - "invalid_email": "कृपया एक मान्य ईमेल पता प्रविष्ट करें", - "invalid_phone": "कृपया एक वैध नंबर डालें", - "register_hospital": "अस्पताल रजिस्टर करें", - "register_page_title": "अस्पताल प्रशासक के रूप में पंजीकरण करें", - "auth_login_title": "अधिकृत लॉगिन", - "forget_password": "पासवर्ड भूल गए?", - "forget_password_instruction": "अपना उपयोगकर्ता नाम दर्ज करें, और यदि यह मौजूद है, तो हम आपको अपना पासवर्ड रीसेट करने के लिए एक लिंक भेजेंगे।", - "send_reset_link": "रीसेट लिंक भेजें", - "already_a_member": "क्या पहले से ही सदस्य हैं?", - "password_sent": "पासवर्ड रीसेट ईमेल भेजा गया", - "password_reset_success": "पासवर्ड सफलतापूर्वक रीसेट हो गया", - "password_reset_failure": "पासवर्ड रीसेट विफल", - "reset_password": "पासवर्ड रीसेट", - "available_in": "में उपलब्ध", - "sign_out": "साइन आउट", - "back_to_login": "लॉगिन पर वापस जाएं", - "min_password_len_8": "न्यूनतम पासवर्ड लंबाई 8", - "req_atleast_one_digit": "कम से कम एक अंक की आवश्यकता है", - "req_atleast_one_uppercase": "कम से कम एक अपर केस की आवश्यकता है", - "req_atleast_one_lowercase": "कम से कम एक लोअर केस अक्षर की आवश्यकता है", - "req_atleast_one_symbol": "कम से कम एक प्रतीक की आवश्यकता है", - "bed_search_placeholder": "बिस्तर के नाम से खोजें", + "404_message": "ऐसा लगता है कि आप किसी ऐसे पेज पर आ गए हैं जो या तो मौजूद नहीं है या उसे किसी दूसरे URL पर ले जाया गया है। सुनिश्चित करें कि आपने सही लिंक डाला है!", + "AUTOMATED": "स्वचालित", + "Assets": "संपत्ति", "BED_WITH_OXYGEN_SUPPORT": "ऑक्सीजन सपोर्ट वाला बिस्तर", - "REGULAR": "नियमित", + "CONSCIOUSNESS_LEVEL__AGITATED_OR_CONFUSED": "उत्तेजित या भ्रमित", + "CONSCIOUSNESS_LEVEL__ALERT": "चेतावनी", + "CONSCIOUSNESS_LEVEL__ONSET_OF_AGITATION_AND_CONFUSION": "उत्तेजना और भ्रम की शुरुआत", + "CONSCIOUSNESS_LEVEL__RESPONDS_TO_PAIN": "दर्द का जवाब देता है", + "CONSCIOUSNESS_LEVEL__RESPONDS_TO_VOICE": "आवाज़ का जवाब देता है", + "CONSCIOUSNESS_LEVEL__UNRESPONSIVE": "अनुत्तरदायी", + "Cancel": "रद्द करना", + "DD/MM/YYYY": "दिनांक/माह/वर्ष", + "DOCTORS_LOG": "प्रगति नोट", + "Dashboard": "डैशबोर्ड", + "Facilities": "सुविधाएँ", + "GENDER__1": "पुरुष", + "GENDER__2": "महिला", + "GENDER__3": "नॉन-बाइनरी", + "HEARTBEAT_RHYTHM__IRREGULAR": "अनियमित", + "HEARTBEAT_RHYTHM__REGULAR": "नियमित", + "HEARTBEAT_RHYTHM__UNKNOWN": "अज्ञात", "ICU": "आईसीयू", + "INSULIN_INTAKE_FREQUENCY__BD": "दिन में दो बार (बीडी)", + "INSULIN_INTAKE_FREQUENCY__OD": "दिन में एक बार (OD)", + "INSULIN_INTAKE_FREQUENCY__TD": "दिन में तीन बार (टीडी)", + "INSULIN_INTAKE_FREQUENCY__UNKNOWN": "अज्ञात", "ISOLATION": "एकांत", - "add_beds": "बिस्तर(बिस्तर) जोड़ें", - "update_bed": "बिस्तर अपडेट करें", - "bed_type": "बिस्तर का प्रकार", - "make_multiple_beds_label": "क्या आप कई बिस्तर बनाना चाहते हैं?", - "number_of_beds": "बिस्तरों की संख्या", - "number_of_beds_out_of_range_error": "बिस्तरों की संख्या 100 से अधिक नहीं हो सकती", - "goal": "हमारा लक्ष्य डिजिटल उपकरणों का उपयोग करके सार्वजनिक स्वास्थ्य सेवाओं की गुणवत्ता और पहुंच में निरंतर सुधार करना है।", - "something_wrong": "कुछ ग़लत हुआ! बाद में पुनः प्रयास करें!", - "try_again_later": "बाद में पुन: प्रयास!", - "contribute_github": "गिटहब पर योगदान दें", - "footer_body": "ओपन हेल्थकेयर नेटवर्क एक ओपन-सोर्स पब्लिक यूटिलिटी है जिसे इनोवेटर्स और स्वयंसेवकों की एक बहु-विषयक टीम द्वारा डिज़ाइन किया गया है। ओपन हेल्थकेयर नेटवर्क केयर एक डिजिटल पब्लिक गुड है जिसे संयुक्त राष्ट्र द्वारा मान्यता प्राप्त है।", - "reset": "रीसेट करें", - "download": "डाउनलोड करना", - "downloads": "डाउनलोड", - "downloading": "डाउनलोड", - "generating": "उत्पादक", - "send_email": "ईमेल भेजें", - "email_address": "मेल पता", - "email_success": "हम जल्द ही आपको ईमेल भेजेंगे। कृपया अपना इनबॉक्स देखें।", - "disclaimer": "अस्वीकरण", - "category": "वर्ग", - "sub_category": "उप श्रेणी", - "download_type": "डाउनलोड प्रकार", - "state": "राज्य", - "location": "जगह", - "ward": "वार्ड", + "KASP Empanelled": "KASP पैनलबद्ध", + "LIMB_RESPONSE__EXTENSION": "विस्तार", + "LIMB_RESPONSE__FLEXION": "मोड़", + "LIMB_RESPONSE__MODERATE": "मध्यम", + "LIMB_RESPONSE__NONE": "कोई नहीं", + "LIMB_RESPONSE__STRONG": "मज़बूत", + "LIMB_RESPONSE__UNKNOWN": "अज्ञात", + "LIMB_RESPONSE__WEAK": "कमज़ोर", + "NORMAL": "संक्षिप्त अद्यतन", + "NURSING_CARE_PROCEDURE__catheter_care": "कैथेटर देखभाल", + "NURSING_CARE_PROCEDURE__chest_tube_care": "चेस्ट ट्यूब की देखभाल", + "NURSING_CARE_PROCEDURE__dressing": "ड्रेसिंग", + "NURSING_CARE_PROCEDURE__dvt_pump_stocking": "डीवीटी पंप स्टॉकिंग", + "NURSING_CARE_PROCEDURE__iv_sitecare": "IV साइट देखभाल", + "NURSING_CARE_PROCEDURE__nubulisation": "नूबुलाइज़ेशन", + "NURSING_CARE_PROCEDURE__personal_hygiene": "व्यक्तिगत स्वच्छता", + "NURSING_CARE_PROCEDURE__positioning": "पोजिशनिंग", + "NURSING_CARE_PROCEDURE__restrain": "नियंत्रित करना", + "NURSING_CARE_PROCEDURE__ryles_tube_care": "राइल्स ट्यूब केयर", + "NURSING_CARE_PROCEDURE__stoma_care": "स्टोमा देखभाल", + "NURSING_CARE_PROCEDURE__suctioning": "सक्शनिंग", + "NURSING_CARE_PROCEDURE__tracheostomy_care": "ट्रैकियोस्टोमी देखभाल", "Notice Board": "सूचना पट्ट", - "Assets": "संपत्ति", "Notifications": "सूचनाएं", + "OXYGEN_MODALITY__HIGH_FLOW_NASAL_CANNULA": "उच्च प्रवाह नाक प्रवेशनी", + "OXYGEN_MODALITY__NASAL_PRONGS": "नाक के कांटे", + "OXYGEN_MODALITY__NON_REBREATHING_MASK": "नॉन रीब्रीदिंग मास्क", + "OXYGEN_MODALITY__SIMPLE_FACE_MASK": "सरल फेस मास्क", + "PRESCRIPTION_FREQUENCY_BD": "दो बार दैनिक लें", + "PRESCRIPTION_FREQUENCY_HS": "केवल रात्रि", + "PRESCRIPTION_FREQUENCY_OD": "एक बार दैनिक", + "PRESCRIPTION_FREQUENCY_Q4H": "4 घंटे प्रति घंटा", + "PRESCRIPTION_FREQUENCY_QID": "6वाँ प्रति घंटा", + "PRESCRIPTION_FREQUENCY_QOD": "वैकल्पिक दिन", + "PRESCRIPTION_FREQUENCY_QWK": "एक सप्ताह में एक बार", + "PRESCRIPTION_FREQUENCY_STAT": "तुरन्त", + "PRESCRIPTION_FREQUENCY_TID": "8वाँ प्रति घंटा", + "PRESCRIPTION_ROUTE_IM": "मैं हूँ", + "PRESCRIPTION_ROUTE_INHALATION": "साँस लेना", + "PRESCRIPTION_ROUTE_INTRATHECAL": "अंतःकपाल इंजेक्शन", + "PRESCRIPTION_ROUTE_IV": "चतुर्थ", + "PRESCRIPTION_ROUTE_NASOGASTRIC": "नासोगैस्ट्रिक / गैस्ट्रोस्टोमी ट्यूब", + "PRESCRIPTION_ROUTE_ORAL": "मौखिक", + "PRESCRIPTION_ROUTE_RECTAL": "रेक्टल", + "PRESCRIPTION_ROUTE_SC": "अनुसूचित जाति", + "PRESCRIPTION_ROUTE_SUBLINGUAL": "सबलिंगुअल", + "PRESCRIPTION_ROUTE_TRANSDERMAL": "ट्रांसडर्मल", + "PUPIL_REACTION__BRISK": "तेज", + "PUPIL_REACTION__CANNOT_BE_ASSESSED": "मूल्यांकन नहीं किया जा सकता", + "PUPIL_REACTION__FIXED": "तय", + "PUPIL_REACTION__SLUGGISH": "सुस्त", + "PUPIL_REACTION__UNKNOWN": "अज्ञात", + "Patients": "मरीजों", + "Profile": "प्रोफ़ाइल", + "REGULAR": "नियमित", + "RESPIRATORY_SUPPORT_SHORT__INVASIVE": "चतुर्थ", + "RESPIRATORY_SUPPORT_SHORT__NON_INVASIVE": "एनआईवी", + "RESPIRATORY_SUPPORT_SHORT__OXYGEN_SUPPORT": "O2 समर्थन", + "RESPIRATORY_SUPPORT_SHORT__UNKNOWN": "कोई नहीं", + "RESPIRATORY_SUPPORT__INVASIVE": "इनवेसिव वेंटिलेटर (IV)", + "RESPIRATORY_SUPPORT__NON_INVASIVE": "नॉन-इनवेसिव वेंटिलेटर (एनआईवी)", + "RESPIRATORY_SUPPORT__OXYGEN_SUPPORT": "ऑक्सीजन सहायता", + "RESPIRATORY_SUPPORT__UNKNOWN": "कोई नहीं", + "Resource": "संसाधन", + "SORT_OPTIONS__-bed__name": "बिस्तर संख्या एन-1", + "SORT_OPTIONS__-category_severity": "सर्वोच्च गंभीरता श्रेणी पहले", + "SORT_OPTIONS__-created_date": "नवीनतम निर्माण तिथि पहले", + "SORT_OPTIONS__-modified_date": "नवीनतम अद्यतन तिथि पहले", + "SORT_OPTIONS__-name": "मरीज का नाम ZA", + "SORT_OPTIONS__-review_time": "नवीनतम समीक्षा तिथि पहले", + "SORT_OPTIONS__-taken_at": "नवीनतम ली गई तिथि पहले", + "SORT_OPTIONS__bed__name": "बिस्तर नं. 1-एन", + "SORT_OPTIONS__category_severity": "सबसे कम गंभीरता वाली श्रेणी पहले", + "SORT_OPTIONS__created_date": "सबसे पुरानी निर्माण तिथि पहले", + "SORT_OPTIONS__facility__name,-last_consultation__current_bed__bed__name": "बिस्तर संख्या एन-1", + "SORT_OPTIONS__facility__name,last_consultation__current_bed__bed__name": "बिस्तर नं. 1-एन", + "SORT_OPTIONS__modified_date": "सबसे पुरानी अद्यतन तिथि पहले", + "SORT_OPTIONS__name": "मरीज़ का नाम AZ", + "SORT_OPTIONS__review_time": "सबसे पुरानी समीक्षा तिथि पहले", + "SORT_OPTIONS__taken_at": "सबसे पुरानी ली गई तारीख पहले", + "Sample Test": "नमूना परीक्षण", + "Shifting": "स्थानांतरण", "Submit": "जमा करना", - "Cancel": "रद्द करना", - "powered_by": "द्वारा संचालित", - "care": "देखभाल", - "something_went_wrong": "कुछ गलत हो गया..!", - "stop": "रुकना", - "record": "ऑडियो रिकॉर्ड करें", - "recording": "रिकॉर्डिंग", - "yes": "हाँ", - "no": "नहीं", - "status": "स्थिति", - "created": "बनाया था", - "modified": "संशोधित", - "updated": "अद्यतन", - "configure": "कॉन्फ़िगर", - "assigned_to": "को सौंपना", - "cancel": "रद्द करना", - "clear": "स्पष्ट", - "apply": "आवेदन करना", - "filter_by": "फिल्टर के द्वारा", - "filter": "फ़िल्टर", - "settings_and_filters": "सेटिंग्स और फ़िल्टर", - "ordering": "आदेश", - "international_mobile": "अंतर्राष्ट्रीय मोबाइल", - "indian_mobile": "भारतीय मोबाइल", - "mobile": "गतिमान", - "landline": "भारतीय लैंडलाइन", - "support": "सहायता", - "emergency_contact_number": "आपातकालीन संपर्क नंबर", - "last_modified": "अंतिम संशोधित", - "patient_address": "मरीज का पता", - "all_details": "सभी विवरण", - "confirm": "पुष्टि करना", - "refresh_list": "सूची रीफ़्रेश करें", - "last_edited": "अंतिम बार संपादित", - "audit_log": "ऑडिट लॉग", - "comments": "टिप्पणियाँ", - "contact_person_number": "संपर्क व्यक्ति संख्या", - "referral_letter": "रेफरल पत्र", - "print": "छाप", - "print_referral_letter": "रेफरल पत्र प्रिंट करें", - "date_of_positive_covid_19_swab": "कोविड 19 स्वैब पॉजिटिव होने की तिथि", - "patient_no": "ओपी/आईपी संख्या", - "date_of_admission": "प्रवेश की तिथि", - "india_1": "भारत", - "unique_id": "अनोखा ID", - "date_and_time": "तिथि और समय", - "facility_type": "सुविधा का प्रकार", - "number_of_chronic_diseased_dependents": "दीर्घकालिक रोग से पीड़ित आश्रितों की संख्या", - "number_of_aged_dependents_above_60": "वृद्ध आश्रितों की संख्या (60 से अधिक)", - "ongoing_medications": "चल रही दवाएँ", - "countries_travelled": "यात्रा किये गए देश", - "travel_within_last_28_days": "घरेलू/अंतर्राष्ट्रीय यात्रा (पिछले 28 दिनों के भीतर)", - "estimated_contact_date": "अनुमानित संपर्क तिथि", - "blood_group": "ब्लड ग्रुप", - "date_of_birth": "जन्म तिथि", - "date_of_test": "परीक्षण की तिथि", - "srf_id": "एसआरएफ आईडी", - "contact_number": "संपर्क संख्या", - "diagnosis": "निदान", - "copied_to_clipboard": "क्लिपबोर्ड पर कॉपी किया गया", - "is": "है", - "reason": "कारण", - "description": "विवरण", - "name": "नाम", - "address": "पता", - "phone": "फ़ोन", - "nationality": "राष्ट्रीयता", - "allergies": "एलर्जी", - "type_your_comment": "अपनी टिप्पणी लिखें", - "any_other_comments": "कोई अन्य टिप्पणी", - "loading": "लोड हो रहा है...", - "facility": "सुविधा", - "local_body": "स्थानीय निकाय", - "filters": "फिल्टर", - "unknown": "अज्ञात", + "TELEMEDICINE": "सुदूर", + "Users": "उपयोगकर्ताओं", + "VENTILATOR": "विस्तृत अद्यतन", + "VENTILATOR_MODE__CMV": "मैकेनिकल वेंटिलेशन (CMV) को नियंत्रित करें", + "VENTILATOR_MODE__PCV": "दबाव नियंत्रण वेंटिलेशन (पीसीवी)", + "VENTILATOR_MODE__PC_SIMV": "दबाव नियंत्रित SIMV (PC-SIMV)", + "VENTILATOR_MODE__PSV": "सी-पीएपी / प्रेशर सपोर्ट वेंटिलेशन (पीएसवी)", + "VENTILATOR_MODE__SIMV": "समकालिक आंतरायिक अनिवार्य वेंटिलेशन (एसआईएमवी)", + "VENTILATOR_MODE__VCV": "वॉल्यूम नियंत्रण वेंटिलेशन (VCV)", + "VENTILATOR_MODE__VC_SIMV": "वॉल्यूम नियंत्रित SIMV (VC-SIMV)", + "View Facility": "सुविधा देखें", + "action_irreversible": "यह क्रिया अपरिवर्तनीय है", "active": "सक्रिय", - "completed": "पुरा होना।", - "on": "पर", - "open": "खुला", - "features": "विशेषताएँ", - "pincode": "पिनकोड", - "required": "आवश्यक", - "field_required": "यह फ़ील्ड आवश्यक है", - "litres": "लीटर", - "litres_per_day": "लीटर/दिन", - "invalid_pincode": "अमान्य पिनकोड", - "invalid_phone_number": "अमान्य फ़ोन नंबर", - "latitude_invalid": "अक्षांश -90 और 90 के बीच होना चाहिए", - "longitude_invalid": "देशांतर -180 और 180 के बीच होना चाहिए", - "save": "बचाना", - "continue": "जारी रखना", - "save_and_continue": "सहेजें और जारी रखें", - "select": "चुनना", - "lsg": "एलएसजी", - "delete": "मिटाना", - "remove": "निकालना", - "max_size_for_image_uploaded_should_be": "अपलोड की गई छवि का अधिकतम आकार होना चाहिए", - "allowed_formats_are": "स्वीकृत प्रारूप हैं", - "recommended_aspect_ratio_for": "इसके लिए अनुशंसित पहलू अनुपात", - "drag_drop_image_to_upload": "अपलोड करने के लिए छवि को खींचें और छोड़ें", - "upload_an_image": "एक छवि अपलोड करें", - "upload": "अपलोड करें", - "uploading": "अपलोड हो रहा है", - "switch": "बदलना", - "capture": "कब्जा", - "retake": "फिर से लेना", - "submit": "जमा करना", - "camera": "कैमरा", - "camera_permission_denied": "कैमरा अनुमति नहीं दी गई", - "submitting": "भेजने से", - "view_details": "विवरण देखें", - "type_to_search": "खोजने के लिए टाइप करें", - "show_all": "सब दिखाएं", - "hide": "छिपाना", - "select_skills": "कुछ कौशल चुनें और जोड़ें", - "contact_your_admin_to_add_skills": "कौशल जोड़ने के लिए अपने व्यवस्थापक से संपर्क करें", + "active_prescriptions": "सक्रिय नुस्खे", "add": "जोड़ना", "add_as": "के रूप में जोड़ें", - "sort_by": "इसके अनुसार क्रमबद्ध करें", - "none": "कोई नहीं", - "choose_file": "डिवाइस से अपलोड करें", - "open_camera": "कैमरा खोलें", - "file_preview": "फ़ाइल पूर्वावलोकन", - "file_preview_not_supported": "इस फ़ाइल का पूर्वावलोकन नहीं किया जा सकता। इसे डाउनलोड करने का प्रयास करें।", - "view_faciliy": "सुविधा देखें", - "view_patients": "मरीज़ देखें", - "frequency": "आवृत्ति", - "days": "दिन", - "never": "कभी नहीं", + "add_beds": "बिस्तर(बिस्तर) जोड़ें", + "add_details_of_patient": "मरीज़ का विवरण जोड़ें", + "add_location": "स्थान जोड़ना", + "add_new_user": "नई उपयोगकर्ता को जोड़ना", "add_notes": "नोट्स जोड़ें", - "notes_placeholder": "अपने नोट्स लिखें", - "optional": "वैकल्पिक", - "discontinue": "बंद", - "discontinued": "बंद", - "not_specified": "निर्दिष्ट नहीं है", + "add_prescription_medication": "प्रिस्क्रिप्शन दवा जोड़ें", + "add_prescription_to_consultation_note": "इस परामर्श में एक नया नुस्खा जोड़ें।", + "add_prn_prescription": "PRN प्रिस्क्रिप्शन जोड़ें", + "address": "पता", + "administer": "प्रशासन", + "administer_medicine": "दवाई देना", + "administer_medicines": "दवाइयाँ दें", + "administer_selected_medicines": "चयनित दवाएँ दें", + "administered_on": "प्रशासित", + "administration_dosage_range_error": "खुराक प्रारंभिक और लक्ष्य खुराक के बीच होनी चाहिए", + "administration_notes": "प्रशासन नोट्स", + "advanced_filters": "उन्नत फ़िल्टर", + "age": "आयु", "all_changes_have_been_saved": "सभी परिवर्तन सहेज लिए गए हैं", - "no_data_found": "डाटा प्राप्त नहीं हुआ", - "edit": "संपादन करना", - "clear_selection": "चयन साफ़ करें", - "select_date": "तारीख़ चुनें", - "DD/MM/YYYY": "दिनांक/माह/वर्ष", - "clear_all_filters": "सभी फ़िल्टर साफ़ करें", - "summary": "सारांश", - "report": "प्रतिवेदन", - "treating_doctor": "इलाज करने वाला डॉक्टर", - "ration_card__NO_CARD": "गैर-कार्ड धारक", - "ration_card__BPL": "गरीबी रेखा से नीचे", - "ration_card__APL": "एपीएल", - "empty_date_time": "--:-- --; --/--/----", - "caution": "सावधानी", - "feed_optimal_experience_for_phones": "सर्वोत्तम दृश्य अनुभव के लिए, अपने डिवाइस को घुमाने पर विचार करें।", - "feed_optimal_experience_for_apple_phones": "बेहतरीन दृश्य अनुभव के लिए, अपने डिवाइस को घुमाने पर विचार करें। सुनिश्चित करें कि आपके डिवाइस की सेटिंग में ऑटो-रोटेट सक्षम है।", - "action_irreversible": "यह क्रिया अपरिवर्तनीय है", - "GENDER__1": "पुरुष", - "GENDER__2": "महिला", - "GENDER__3": "नॉन-बाइनरी", - "normal": "सामान्य", - "done": "हो गया", - "view": "देखना", - "rename": "नाम बदलें", - "more_info": "और जानकारी", + "all_details": "सभी विवरण", + "allergies": "एलर्जी", + "allowed_formats_are": "स्वीकृत प्रारूप हैं", + "already_a_member": "क्या पहले से ही सदस्य हैं?", + "ambulance_driver_name": "एम्बुलेंस चालक का नाम", + "ambulance_number": "एम्बुलेंस नं.", + "ambulance_phone_number": "एम्बुलेंस का फ़ोन नंबर", + "antenatal": "उत्पत्ति के पूर्व का", + "any_other_comments": "कोई अन्य टिप्पणी", + "apply": "आवेदन करना", + "approved_by_district_covid_control_room": "जिला कोविड नियंत्रण कक्ष द्वारा अनुमोदित", + "approving_facility": "अनुमोदन सुविधा का नाम", "archive": "पुरालेख", - "discard": "खारिज करना", - "live": "रहना", - "discharged": "छुट्टी दे दी गई", "archived": "संग्रहीत", - "no_changes_made": "कोई परिवर्तन नहीं किया गया", - "user_deleted_successfuly": "उपयोगकर्ता सफलतापूर्वक हटा दिया गया", - "users": "उपयोगकर्ताओं", + "are_you_still_watching": "क्या आप अभी भी देख रहे हैं?", "are_you_sure_want_to_delete": "क्या आप वाकई {{name}}को हटाना चाहते हैं?", - "oxygen_information": "ऑक्सीजन की जानकारी", - "deleted_successfully": "{{name}} सफलतापूर्वक हटा दिया गया", - "delete_item": "{{name}}मिटाएँ", - "unsupported_browser": "असमर्थित ब्राउज़र", - "unsupported_browser_description": "आपका ब्राउज़र ({{name}} संस्करण {{version}}) समर्थित नहीं है। कृपया अपने ब्राउज़र को नवीनतम संस्करण में अपडेट करें या सर्वोत्तम अनुभव के लिए समर्थित ब्राउज़र पर स्विच करें।", - "SORT_OPTIONS__-created_date": "नवीनतम निर्माण तिथि पहले", - "SORT_OPTIONS__created_date": "सबसे पुरानी निर्माण तिथि पहले", - "SORT_OPTIONS__-category_severity": "सर्वोच्च गंभीरता श्रेणी पहले", - "SORT_OPTIONS__category_severity": "सबसे कम गंभीरता वाली श्रेणी पहले", - "SORT_OPTIONS__-modified_date": "नवीनतम अद्यतन तिथि पहले", - "SORT_OPTIONS__modified_date": "सबसे पुरानी अद्यतन तिथि पहले", - "SORT_OPTIONS__facility__name,last_consultation__current_bed__bed__name": "बिस्तर नं. 1-एन", - "SORT_OPTIONS__facility__name,-last_consultation__current_bed__bed__name": "बिस्तर संख्या एन-1", - "SORT_OPTIONS__-review_time": "नवीनतम समीक्षा तिथि पहले", - "SORT_OPTIONS__review_time": "सबसे पुरानी समीक्षा तिथि पहले", - "SORT_OPTIONS__taken_at": "सबसे पुरानी ली गई तारीख पहले", - "SORT_OPTIONS__-taken_at": "नवीनतम ली गई तिथि पहले", - "SORT_OPTIONS__name": "मरीज़ का नाम AZ", - "SORT_OPTIONS__-name": "मरीज का नाम ZA", - "SORT_OPTIONS__bed__name": "बिस्तर नं. 1-एन", - "SORT_OPTIONS__-bed__name": "बिस्तर संख्या एन-1", - "middleware_hostname": "मिडलवेयर होस्टनाम", - "local_ipaddress": "स्थानीय आईपी पता", - "no_consultation_updates": "कोई परामर्श अपडेट नहीं", - "consultation_updates": "परामर्श अद्यतन", - "update_log": "लॉग अपडेट करें", - "record_updates": "रिकॉर्ड अपडेट", - "log_lab_results": "लॉग लैब परिणाम", - "no_log_update_delta": "पिछले लॉग अद्यतन के बाद से कोई परिवर्तन नहीं", - "virtual_nursing_assistant": "वर्चुअल नर्सिंग सहायक", - "discharge": "स्राव होना", - "discharge_summary": "डिस्चार्ज सारांश", - "discharge_from_care": "CARE से छुट्टी", - "generating_discharge_summary": "डिस्चार्ज सारांश तैयार करना", - "discharge_summary_not_ready": "डिस्चार्ज सारांश अभी तैयार नहीं है.", - "download_discharge_summary": "डिस्चार्ज सारांश डाउनलोड करें", - "email_discharge_summary_description": "डिस्चार्ज सारांश प्राप्त करने के लिए अपना वैध ईमेल पता दर्ज करें", - "generated_summary_caution": "यह CARE प्रणाली में प्राप्त जानकारी का उपयोग करके कंप्यूटर द्वारा तैयार किया गया सारांश है।", - "NORMAL": "संक्षिप्त अद्यतन", - "VENTILATOR": "विस्तृत अद्यतन", - "DOCTORS_LOG": "प्रगति नोट", - "AUTOMATED": "स्वचालित", - "TELEMEDICINE": "सुदूर", - "investigations": "जांच", - "search_investigation_placeholder": "खोज जांच और समूह", - "save_investigation": "जांच सहेजें", - "investigation_reports": "जांच रिपोर्ट", - "no_investigation": "कोई जांच रिपोर्ट नहीं मिली", - "investigations_suggested": "सुझाए गए जांच", - "to_be_conducted": "संचालित किया जाना है", - "log_report": "लॉग रिपोर्ट", - "no_investigation_suggestions": "कोई जांच सुझाव नहीं", - "select_investigation": "जांच का चयन करें (सभी जांच डिफ़ॉल्ट रूप से चयनित होंगी)", - "select_investigations": "जांच का चयन करें", - "get_tests": "टेस्ट प्राप्त करें", - "select_investigation_groups": "जांच समूह चुनें", - "select_groups": "समूह चुनें", - "generate_report": "रिपोर्ट तैयार करें", - "prev_sessions": "पिछले सत्र", - "next_sessions": "अगले सत्र", - "no_changes": "कोई परिवर्तन नहीं", - "back_to_consultation": "परामर्श पर वापस जाएँ", - "no_treating_physicians_available": "इस सुविधा में कोई होम फैसिलिटी डॉक्टर नहीं है। कृपया अपने एडमिन से संपर्क करें।", - "encounter_suggestion_edit_disallowed": "संपादन परामर्श में इस विकल्प पर स्विच करने की अनुमति नहीं है", - "encounter_suggestion__A": "प्रवेश", - "encounter_suggestion__DC": "घरेलू देखभाल", - "encounter_suggestion__OP": "बाह्य-रोगी दौरा", - "encounter_suggestion__DD": "परामर्श", - "encounter_suggestion__HI": "परामर्श", - "encounter_suggestion__R": "परामर्श", - "encounter_date_field_label__A": "सुविधा में प्रवेश की तिथि और समय", - "encounter_date_field_label__DC": "घरेलू देखभाल प्रारंभ की तिथि और समय", - "encounter_date_field_label__OP": "बाह्य-रोगी दौरे की तिथि और समय", - "encounter_date_field_label__DD": "परामर्श की तिथि एवं समय", - "encounter_date_field_label__HI": "परामर्श की तिथि एवं समय", - "encounter_date_field_label__R": "परामर्श की तिथि एवं समय", + "are_you_sure_want_to_delete_this_record": "क्या आप वाकई इस रिकॉर्ड को हटाना चाहते हैं?", + "asset_class": "परिसंपत्ति वर्ग", + "asset_location": "परिसंपत्ति स्थान", + "asset_name": "संपत्ति का नाम", + "asset_not_found_msg": "ओह! आप जिस संपत्ति की तलाश कर रहे हैं वह मौजूद नहीं है। कृपया संपत्ति आईडी की जाँच करें।", + "asset_qr_id": "एसेट क्यूआर आईडी", + "asset_type": "संपदा प्रकार", + "assigned_facility": "सुविधा सौंपी गई", + "assigned_to": "को सौंपना", + "audio__allow_permission": "कृपया साइट सेटिंग में माइक्रोफ़ोन की अनुमति दें", + "audio__allow_permission_button": "अनुमति देने का तरीका जानने के लिए यहां क्लिक करें", + "audio__allow_permission_helper": "हो सकता है कि आपने पहले भी माइक्रोफ़ोन तक पहुंच से इनकार किया हो.", + "audio__record": "ऑडियो रिकॉर्ड करें", + "audio__record_helper": "रिकॉर्डिंग शुरू करने के लिए बटन पर क्लिक करें", + "audio__recorded": "ऑडियो रिकॉर्ड किया गया", + "audio__recording": "रिकॉर्डिंग", + "audio__recording_helper": "कृपया अपने माइक्रोफ़ोन में बोलें.", + "audio__recording_helper_2": "रिकॉर्डिंग रोकने के लिए बटन पर क्लिक करें।", + "audio__start_again": "फिर से शुरू करें", + "audit_log": "ऑडिट लॉग", + "auth_login_title": "अधिकृत लॉगिन", + "authorize_shift_delete": "शिफ़्ट डिलीट को अधिकृत करें", + "auto_generated_for_care": "देखभाल के लिए स्वचालित रूप से उत्पन्न", + "available_features": "उपलब्ध सुविधाएँ", + "available_in": "में उपलब्ध", + "average_weekly_working_hours": "औसत साप्ताहिक कार्य घंटे", + "awaiting_destination_approval": "गंतव्य अनुमोदन की प्रतीक्षा में", + "back": "पीछे", "back_dated_encounter_date_caution": "आप एक मुठभेड़ बना रहे हैं", - "encounter_duration_confirmation": "इस मुठभेड़ की अवधि होगी", - "consultation_notes": "सामान्य निर्देश (सलाह)", - "procedure_suggestions": "प्रक्रिया सुझाव", - "edit_cover_photo": "कवर फ़ोटो संपादित करें", - "no_cover_photo_uploaded_for_this_facility": "इस सुविधा के लिए कोई कवर फ़ोटो अपलोड नहीं किया गया", + "back_to_consultation": "परामर्श पर वापस जाएँ", + "back_to_login": "लॉगिन पर वापस जाएं", + "base_dosage": "मात्रा बनाने की विधि", + "bed_capacity": "बिस्तर क्षमता", + "bed_search_placeholder": "बिस्तर के नाम से खोजें", + "bed_type": "बिस्तर का प्रकार", + "blood_group": "ब्लड ग्रुप", + "board_view": "बोर्ड दृश्य", + "bradycardia": "मंदनाड़ी", + "breathlessness_level": "सांस फूलने का स्तर", + "camera": "कैमरा", + "camera_permission_denied": "कैमरा अनुमति नहीं दी गई", + "cancel": "रद्द करना", + "capture": "कब्जा", "capture_cover_photo": "कवर फ़ोटो कैप्चर करें", - "diagnoses": "निदान", - "diagnosis_already_added": "यह निदान पहले ही जोड़ दिया गया था", - "principal": "प्रधानाचार्य", - "principal_diagnosis": "मुख्य निदान", - "unconfirmed": "अपुष्ट", - "provisional": "अनंतिम", - "differential": "अंतर", - "confirmed": "की पुष्टि", - "refuted": "का खंडन किया", - "entered-in-error": "त्रुटिवश प्रविष्ट हुआ", - "help_unconfirmed": "इसे एक पुष्ट स्थिति मानने के लिए पर्याप्त नैदानिक और/या नैदानिक साक्ष्य उपलब्ध नहीं हैं।", - "help_provisional": "यह एक अस्थायी निदान है - अभी भी इस पर विचार किया जा रहा है।", - "help_differential": "संभावित (और आमतौर पर परस्पर अनन्य) निदानों के एक समूह में से एक, जो निदान प्रक्रिया और प्रारंभिक उपचार को आगे बढ़ाने के लिए निर्देशित किया जाता है।", - "help_confirmed": "इस स्थिति को पुष्ट मानने के लिए पर्याप्त नैदानिक और/या नैदानिक साक्ष्य मौजूद हैं।", - "help_refuted": "बाद के निदानात्मक और नैदानिक साक्ष्यों से इस स्थिति को खारिज कर दिया गया है।", - "help_entered-in-error": "यह कथन गलती से दर्ज किया गया है और मान्य नहीं है।", - "search_icd11_placeholder": "ICD-11 निदान खोजें", - "icd11_as_recommended": "विश्व स्वास्थ्य संगठन द्वारा अनुशंसित ICD-11 के अनुसार", - "Facilities": "सुविधाएँ", - "Patients": "मरीजों", - "Sample Test": "नमूना परीक्षण", - "Shifting": "स्थानांतरण", - "Resource": "संसाधन", - "Users": "उपयोगकर्ताओं", - "Profile": "प्रोफ़ाइल", - "Dashboard": "डैशबोर्ड", - "return_to_care": "CARE पर वापस लौटें", - "404_message": "ऐसा लगता है कि आप किसी ऐसे पेज पर आ गए हैं जो या तो मौजूद नहीं है या उसे किसी दूसरे URL पर ले जाया गया है। सुनिश्चित करें कि आपने सही लिंक डाला है!", - "error_404": "त्रुटि 404", - "page_not_found": "पृष्ठ नहीं मिला", - "session_expired": "सत्र समाप्त हुआ", - "invalid_password_reset_link": "अमान्य पासवर्ड रीसेट लिंक", - "invalid_link_msg": "ऐसा प्रतीत होता है कि आपने जो पासवर्ड रीसेट लिंक इस्तेमाल किया है वह या तो अमान्य है या उसकी समय-सीमा समाप्त हो चुकी है। कृपया नया पासवर्ड रीसेट लिंक अनुरोध करें।", - "return_to_password_reset": "पासवर्ड रीसेट पर वापस लौटें", - "return_to_login": "लॉगिन पर वापस लौटें", - "session_expired_msg": "ऐसा लगता है कि आपका सत्र समाप्त हो गया है। यह निष्क्रियता के कारण हो सकता है। कृपया जारी रखने के लिए फिर से लॉगिन करें।", - "invalid_reset": "अमान्य रीसेट", - "please_upload_a_csv_file": "कृपया एक CSV फ़ाइल अपलोड करें", - "csv_file_in_the_specified_format": "निर्दिष्ट प्रारूप में CSV फ़ाइल चुनें", - "sample_format": "नमूना प्रारूप", - "search_for_facility": "सुविधा खोजें", - "select_local_body": "स्थानीय निकाय का चयन करें", - "select_wards": "वार्ड चुनें", - "result_date": "परिणाम दिनांक", - "sample_collection_date": "नमूना संग्रहण तिथि", - "record_has_been_deleted_successfully": "रिकार्ड सफलतापूर्वक हटा दिया गया है.", - "error_while_deleting_record": "रिकॉर्ड हटाते समय त्रुटि हुई", - "result_details": "परिणाम विवरण", + "care": "देखभाल", + "category": "वर्ग", + "caution": "सावधानी", + "central_nursing_station": "सेंट्रल नर्सिंग स्टेशन", + "choose_file": "डिवाइस से अपलोड करें", + "choose_location": "स्थान का चयन", + "clear": "स्पष्ट", + "clear_all_filters": "सभी फ़िल्टर साफ़ करें", + "clear_home_facility": "क्लियर होम सुविधा", + "clear_selection": "चयन साफ़ करें", + "close": "बंद करना", + "close_scanner": "स्कैनर बंद करें", + "comment_added_successfully": "टिप्पणी सफलतापूर्वक जोड़ी गई", + "comment_min_length": "टिप्पणी में कम से कम 1 अक्षर होना चाहिए", + "comments": "टिप्पणियाँ", + "completed": "पुरा होना।", + "configure": "कॉन्फ़िगर", + "configure_facility": "सुविधा कॉन्फ़िगर करें", + "confirm": "पुष्टि करना", "confirm_delete": "मिटाने की पुष्टि करें", - "are_you_sure_want_to_delete_this_record": "क्या आप वाकई इस रिकॉर्ड को हटाना चाहते हैं?", - "patient_category": "रोगी श्रेणी", - "source": "स्रोत", - "result": "परिणाम", - "sample_type": "नमूना प्रकार", - "patient_status": "रोगी की स्थिति", - "mobile_number": "मोबाइल नंबर", - "patient_created": "रोगी बनाया गया", - "update_record": "रिकॉर्ड अपडेट करें", - "facility_search_placeholder": "सुविधा / जिला नाम से खोजें", - "advanced_filters": "उन्नत फ़िल्टर", - "facility_name": "सुविधा का नाम", - "KASP Empanelled": "KASP पैनलबद्ध", - "View Facility": "सुविधा देखें", - "no_duplicate_facility": "आपको डुप्लिकेट सुविधाएं नहीं बनानी चाहिए", - "no_facilities": "कोई सुविधा नहीं मिली", - "no_staff": "कोई कर्मचारी नहीं मिला", - "no_bed_types_found": "कोई बिस्तर प्रकार नहीं मिला", - "total_beds": "कुल बिस्तर", + "confirm_discontinue": "बंद करने की पुष्टि करें", + "confirm_password": "पासवर्ड की पुष्टि कीजिये", + "confirm_transfer_complete": "स्थानांतरण पूर्ण होने की पुष्टि करें!", + "confirmed": "की पुष्टि", + "consultation_notes": "सामान्य निर्देश (सलाह)", + "consultation_updates": "परामर्श अद्यतन", + "contact_number": "संपर्क संख्या", + "contact_person": "सुविधा केंद्र पर संपर्क व्यक्ति का नाम", + "contact_person_at_the_facility": "वर्तमान सुविधा पर संपर्क व्यक्ति", + "contact_person_number": "संपर्क व्यक्ति संख्या", + "contact_phone": "संपर्क व्यक्ति संख्या", + "contact_your_admin_to_add_skills": "कौशल जोड़ने के लिए अपने व्यवस्थापक से संपर्क करें", + "continue": "जारी रखना", + "continue_watching": "देखना जारी रखें", + "contribute_github": "गिटहब पर योगदान दें", + "copied_to_clipboard": "क्लिपबोर्ड पर कॉपी किया गया", + "countries_travelled": "यात्रा किये गए देश", + "covid_19_cat_gov": "केरल सरकार के दिशानिर्देश के अनुसार कोविड_19 क्लिनिकल श्रेणी (ए/बी/सी)", + "create": "बनाएं", + "create_add_more": "और अधिक बनाएं और जोड़ें", + "create_asset": "संपत्ति बनाएं", "create_facility": "एक नई सुविधा बनाएं", - "staff_list": "स्टाफ सूची", - "bed_capacity": "बिस्तर क्षमता", - "cylinders": "सिलेंडर", - "cylinders_per_day": "सिलेंडर/दिन", - "liquid_oxygen_capacity": "द्रव ऑक्सीजन क्षमता", - "expected_burn_rate": "अपेक्षित बर्न दर", - "type_b_cylinders": "बी प्रकार सिलेंडर", - "type_c_cylinders": "सी प्रकार सिलेंडर", - "type_d_cylinders": "डी प्रकार सिलेंडर", - "update_asset": "संपत्ति अपडेट करें", "create_new_asset": "नई संपत्ति बनाएं", - "you_need_at_least_a_location_to_create_an_assest": "संपत्ति बनाने के लिए आपको कम से कम एक स्थान की आवश्यकता होगी।", - "add_location": "स्थान जोड़ना", - "close_scanner": "स्कैनर बंद करें", - "scan_asset_qr": "एसेट क्यूआर स्कैन करें!", - "create": "बनाएं", - "asset_name": "संपत्ति का नाम", - "asset_location": "परिसंपत्ति स्थान", - "asset_type": "संपदा प्रकार", - "asset_class": "परिसंपत्ति वर्ग", - "details_about_the_equipment": "उपकरण के बारे में विवरण", - "working_status": "कामकाजी स्थिति", - "why_the_asset_is_not_working": "परिसंपत्ति काम क्यों नहीं कर रही है?", - "describe_why_the_asset_is_not_working": "बताएं कि परिसंपत्ति काम क्यों नहीं कर रही है", - "asset_qr_id": "एसेट क्यूआर आईडी", - "manufacturer": "उत्पादक", - "eg_xyz": "उदाहरण: XYZ", - "eg_abc": "उदाहरण: एबीसी", - "warranty_amc_expiry": "वारंटी / एएमसी समाप्ति", + "create_resource_request": "संसाधन अनुरोध बनाएँ", + "created": "बनाया था", + "created_date": "सृजित दिनांक", + "csv_file_in_the_specified_format": "निर्दिष्ट प्रारूप में CSV फ़ाइल चुनें", + "customer_support_email": "ग्राहक सहायता ईमेल", "customer_support_name": "ग्राहक सहायता नाम", "customer_support_number": "ग्राहक सहायता नंबर", - "customer_support_email": "ग्राहक सहायता ईमेल", - "eg_mail_example_com": "उदाहरण: mail@example.com", - "vendor_name": "विक्रेता का नाम", - "serial_number": "क्रम संख्या", - "last_serviced_on": "अंतिम सेवा कब दी गई", - "create_add_more": "और अधिक बनाएं और जोड़ें", - "discharged_patients": "छुट्टी दिए गए मरीज़", - "discharged_patients_empty": "इस सुविधा में कोई भी डिस्चार्ज मरीज़ मौजूद नहीं है", - "update_facility_middleware_success": "सुविधा मिडलवेयर सफलतापूर्वक अपडेट किया गया", - "treatment_summary__head_title": "उपचार सारांश", - "treatment_summary__print": "प्रिंट उपचार सारांश", - "treatment_summary__heading": "अंतरिम उपचार सारांश", - "patient_registration__name": "नाम", - "patient_registration__address": "पता", - "patient_registration__age": "आयु", - "patient_consultation__op": "सेशन", - "patient_consultation__ip": "आई पी", - "patient_consultation__dc_admission": "घरेलू देखभाल शुरू होने की तिथि", - "patient_consultation__admission": "प्रवेश की तिथि", - "patient_registration__gender": "लिंग", - "patient_registration__contact": "आपातकालीन संपर्क", - "patient_registration__comorbidities": "comorbidities", - "patient_registration__comorbidities__disease": "बीमारी", - "patient_registration__comorbidities__details": "विवरण", - "patient_consultation__consultation_notes": "सामान्य निर्देश", - "patient_consultation__special_instruction": "विशेष निर्देश", - "suggested_investigations": "सुझाए गए जांच", - "investigations__date": "तारीख", - "investigations__name": "नाम", - "investigations__result": "परिणाम", - "investigations__ideal_value": "आदर्श मूल्य", - "investigations__range": "मूल्य पहुंच", - "investigations__unit": "इकाई", - "patient_consultation__treatment__plan": "योजना", - "patient_consultation__treatment__summary": "सारांश", - "patient_consultation__treatment__summary__date": "तारीख", - "patient_consultation__treatment__summary__spo2": "एसपीओ2", - "patient_consultation__treatment__summary__temperature": "तापमान", - "diagnosis__principal": "प्रधानाचार्य", + "cylinders": "सिलेंडर", + "cylinders_per_day": "सिलेंडर/दिन", + "date_and_time": "तिथि और समय", + "date_of_admission": "प्रवेश की तिथि", + "date_of_birth": "जन्म तिथि", + "date_of_positive_covid_19_swab": "कोविड 19 स्वैब पॉजिटिव होने की तिथि", + "date_of_test": "परीक्षण की तिथि", + "days": "दिन", + "delete": "मिटाना", + "delete_facility": "सुविधा हटाएं", + "delete_item": "{{name}}मिटाएँ", + "delete_record": "रिकॉर्ड मिटाएँ", + "deleted_successfully": "{{name}} सफलतापूर्वक हटा दिया गया", + "describe_why_the_asset_is_not_working": "बताएं कि परिसंपत्ति काम क्यों नहीं कर रही है", + "description": "विवरण", + "details_about_the_equipment": "उपकरण के बारे में विवरण", + "details_of_assigned_facility": "निर्दिष्ट सुविधा का विवरण", + "details_of_origin_facility": "मूल सुविधा का विवरण", + "details_of_patient": "मरीज का विवरण", + "details_of_shifting_approving_facility": "स्थानांतरण अनुमोदन सुविधा का विवरण", + "diagnoses": "निदान", + "diagnosis": "निदान", "diagnosis__confirmed": "की पुष्टि", + "diagnosis__differential": "अंतर", + "diagnosis__principal": "प्रधानाचार्य", "diagnosis__provisional": "अनंतिम", "diagnosis__unconfirmed": "अपुष्ट", - "diagnosis__differential": "अंतर", - "active_prescriptions": "सक्रिय नुस्खे", - "prescriptions__medicine": "दवा", - "prescriptions__route": "मार्ग", - "prescriptions__dosage_frequency": "खुराक और आवृत्ति", - "prescriptions__start_date": "निर्धारित", - "select_facility_for_discharged_patients_warning": "छुट्टी दिए गए मरीजों को देखने के लिए सुविधा का चयन किया जाना आवश्यक है।", + "diagnosis_already_added": "यह निदान पहले ही जोड़ दिया गया था", + "diastolic": "डायस्टोलिक", + "differential": "अंतर", + "discard": "खारिज करना", + "discharge": "स्राव होना", + "discharge_from_care": "CARE से छुट्टी", + "discharge_prescription": "डिस्चार्ज प्रिस्क्रिप्शन", + "discharge_summary": "डिस्चार्ज सारांश", + "discharge_summary_not_ready": "डिस्चार्ज सारांश अभी तैयार नहीं है.", + "discharged": "छुट्टी दे दी गई", + "discharged_patients": "छुट्टी दिए गए मरीज़", + "discharged_patients_empty": "इस सुविधा में कोई भी डिस्चार्ज मरीज़ मौजूद नहीं है", + "disclaimer": "अस्वीकरण", + "discontinue": "बंद", + "discontinue_caution_note": "क्या आप वाकई इस नुस्खे को बंद करना चाहते हैं?", + "discontinued": "बंद", + "disease_status": "रोग की स्थिति", + "district": "ज़िला", + "district_program_management_supporting_unit": "जिला कार्यक्रम प्रबंधन सहायक इकाई", + "done": "हो गया", + "dosage": "मात्रा बनाने की विधि", + "down": "नीचे", + "download": "डाउनलोड करना", + "download_discharge_summary": "डिस्चार्ज सारांश डाउनलोड करें", + "download_type": "डाउनलोड प्रकार", + "downloading": "डाउनलोड", + "downloads": "डाउनलोड", + "drag_drop_image_to_upload": "अपलोड करने के लिए छवि को खींचें और छोड़ें", + "duplicate_patient_record_birth_unknown": "यदि आप रोगी के जन्म वर्ष के बारे में निश्चित नहीं हैं तो कृपया अपने जिला देखभाल समन्वयक, स्थानांतरण सुविधा या रोगी से संपर्क करें।", "duplicate_patient_record_confirmation": "जन्म का वर्ष जोड़कर मरीज का रिकॉर्ड अपने अस्पताल में भर्ती करें", "duplicate_patient_record_rejection": "मैं पुष्टि करता हूं कि जिस संदिग्ध/रोगी की सूची मैं बनाना चाहता हूं वह सूची में नहीं है।", - "duplicate_patient_record_birth_unknown": "यदि आप रोगी के जन्म वर्ष के बारे में निश्चित नहीं हैं तो कृपया अपने जिला देखभाल समन्वयक, स्थानांतरण सुविधा या रोगी से संपर्क करें।", - "patient_transfer_birth_match_note": "ध्यान दें: स्थानांतरण अनुरोध पर कार्रवाई करने के लिए जन्म का वर्ष मरीज से मेल खाना चाहिए।", - "available_features": "उपलब्ध सुविधाएँ", - "update_facility": "अद्यतन सुविधा", - "configure_facility": "सुविधा कॉन्फ़िगर करें", - "inventory_management": "सूची प्रबंधन", - "location_management": "स्थान प्रबंधन", - "resource_request": "संसाधन अनुरोध", - "view_asset": "संपत्तियां देखें", - "view_users": "उपयोगकर्ता देखें", - "view_abdm_records": "ABDM रिकॉर्ड देखें", - "delete_facility": "सुविधा हटाएं", - "central_nursing_station": "सेंट्रल नर्सिंग स्टेशन", - "add_details_of_patient": "मरीज़ का विवरण जोड़ें", - "choose_location": "स्थान का चयन", - "live_monitoring": "लाइव मॉनिटरिंग", - "open_live_monitoring": "लाइव मॉनिटरिंग खोलें", - "audio__allow_permission": "कृपया साइट सेटिंग में माइक्रोफ़ोन की अनुमति दें", - "audio__allow_permission_helper": "हो सकता है कि आपने पहले भी माइक्रोफ़ोन तक पहुंच से इनकार किया हो.", - "audio__allow_permission_button": "अनुमति देने का तरीका जानने के लिए यहां क्लिक करें", - "audio__record": "ऑडियो रिकॉर्ड करें", - "audio__record_helper": "रिकॉर्डिंग शुरू करने के लिए बटन पर क्लिक करें", - "audio__recording": "रिकॉर्डिंग", - "audio__recording_helper": "कृपया अपने माइक्रोफ़ोन में बोलें.", - "audio__recording_helper_2": "रिकॉर्डिंग रोकने के लिए बटन पर क्लिक करें।", - "audio__recorded": "ऑडियो रिकॉर्ड किया गया", - "audio__start_again": "फिर से शुरू करें", + "edit": "संपादन करना", + "edit_caution_note": "परामर्श में संपादित विवरण के साथ एक नया नुस्खा जोड़ा जाएगा तथा वर्तमान नुस्खा बंद कर दिया जाएगा।", + "edit_cover_photo": "कवर फ़ोटो संपादित करें", + "edit_history": "इतिहास संपादित करें", + "edit_prescriptions": "नुस्खे संपादित करें", + "edited_by": "द्वारा संपादित", + "edited_on": "संपादित किया गया", + "eg_abc": "उदाहरण: एबीसी", + "eg_details_on_functionality_service_etc": "उदाहरणार्थ, कार्यक्षमता, सेवा आदि का विवरण।", + "eg_mail_example_com": "उदाहरण: mail@example.com", + "eg_xyz": "उदाहरण: XYZ", + "email": "मेल पता", + "email_address": "मेल पता", + "email_discharge_summary_description": "डिस्चार्ज सारांश प्राप्त करने के लिए अपना वैध ईमेल पता दर्ज करें", + "email_success": "हम जल्द ही आपको ईमेल भेजेंगे। कृपया अपना इनबॉक्स देखें।", + "emergency": "आपातकाल", + "emergency_contact_number": "आपातकालीन संपर्क नंबर", + "empty_date_time": "--:-- --; --/--/----", + "encounter_date_field_label__A": "सुविधा में प्रवेश की तिथि और समय", + "encounter_date_field_label__DC": "घरेलू देखभाल प्रारंभ की तिथि और समय", + "encounter_date_field_label__DD": "परामर्श की तिथि एवं समय", + "encounter_date_field_label__HI": "परामर्श की तिथि एवं समय", + "encounter_date_field_label__OP": "बाह्य-रोगी दौरे की तिथि और समय", + "encounter_date_field_label__R": "परामर्श की तिथि एवं समय", + "encounter_duration_confirmation": "इस मुठभेड़ की अवधि होगी", + "encounter_suggestion__A": "प्रवेश", + "encounter_suggestion__DC": "घरेलू देखभाल", + "encounter_suggestion__DD": "परामर्श", + "encounter_suggestion__HI": "परामर्श", + "encounter_suggestion__OP": "बाह्य-रोगी दौरा", + "encounter_suggestion__R": "परामर्श", + "encounter_suggestion_edit_disallowed": "संपादन परामर्श में इस विकल्प पर स्विच करने की अनुमति नहीं है", "enter_file_name": "फ़ाइल का नाम दर्ज करें", - "no_files_found": "कोई {{type}} फ़ाइल नहीं मिली", - "upload_headings__patient": "नई रोगी फ़ाइल अपलोड करें", - "upload_headings__consultation": "नई परामर्श फ़ाइल अपलोड करें", - "upload_headings__sample_report": "नमूना रिपोर्ट अपलोड करें", - "upload_headings__supporting_info": "सहायक जानकारी अपलोड करें", - "file_list_headings__patient": "रोगी फ़ाइलें", - "file_list_headings__consultation": "परामर्श फ़ाइलें", - "file_list_headings__sample_report": "नमूना रिपोर्ट", - "file_list_headings__supporting_info": "सहायक जानकारी", + "enter_valid_age": "कृपया वैध आयु दर्ज करें", + "entered-in-error": "त्रुटिवश प्रविष्ट हुआ", + "error_404": "त्रुटि 404", + "error_deleting_shifting": "शिफ्टिंग रिकॉर्ड हटाते समय त्रुटि", + "error_while_deleting_record": "रिकॉर्ड हटाते समय त्रुटि हुई", + "escape": "पलायन", + "estimated_contact_date": "अनुमानित संपर्क तिथि", + "expected_burn_rate": "अपेक्षित बर्न दर", + "facilities": "सुविधाएँ", + "facility": "सुविधा", + "facility_name": "सुविधा का नाम", + "facility_preference": "सुविधा वरीयता", + "facility_search_placeholder": "सुविधा / जिला नाम से खोजें", + "facility_type": "सुविधा का प्रकार", + "features": "विशेषताएँ", + "feed_is_currently_not_live": "फ़ीड वर्तमान में लाइव नहीं है", + "feed_optimal_experience_for_apple_phones": "बेहतरीन दृश्य अनुभव के लिए, अपने डिवाइस को घुमाने पर विचार करें। सुनिश्चित करें कि आपके डिवाइस की सेटिंग में ऑटो-रोटेट सक्षम है।", + "feed_optimal_experience_for_phones": "सर्वोत्तम दृश्य अनुभव के लिए, अपने डिवाइस को घुमाने पर विचार करें।", + "field_required": "यह फ़ील्ड आवश्यक है", "file_error__choose_file": "कृपया अपलोड करने के लिए कोई फ़ाइल चुनें", + "file_error__dynamic": "फ़ाइल अपलोड करते समय त्रुटि: {{statusText}}", "file_error__file_name": "कृपया फ़ाइल का नाम दर्ज करें", "file_error__file_size": "फ़ाइलों का अधिकतम आकार 100 एमबी है", "file_error__file_type": "अमान्य फ़ाइल प्रकार \".{{extension}}\" स्वीकृत प्रकार: {{allowedExtensions}}", - "file_uploaded": "फ़ाइल सफलतापूर्वक अपलोड की गई", - "file_error__dynamic": "फ़ाइल अपलोड करते समय त्रुटि: {{statusText}}", "file_error__network": "फ़ाइल अपलोड करते समय त्रुटि: नेटवर्क त्रुटि", - "monitor": "निगरानी करना", - "show_default_presets": "डिफ़ॉल्ट प्रीसेट दिखाएं", - "show_patient_presets": "मरीज़ प्रीसेट दिखाएँ", - "moving_camera": "चलता कैमरा", + "file_list_headings__consultation": "परामर्श फ़ाइलें", + "file_list_headings__patient": "रोगी फ़ाइलें", + "file_list_headings__sample_report": "नमूना रिपोर्ट", + "file_list_headings__supporting_info": "सहायक जानकारी", + "file_preview": "फ़ाइल पूर्वावलोकन", + "file_preview_not_supported": "इस फ़ाइल का पूर्वावलोकन नहीं किया जा सकता। इसे डाउनलोड करने का प्रयास करें।", + "file_uploaded": "फ़ाइल सफलतापूर्वक अपलोड की गई", + "filter": "फ़िल्टर", + "filter_by": "फिल्टर के द्वारा", + "filter_by_category": "श्रेणी के अनुसार फ़िल्टर करें", + "filters": "फिल्टर", + "first_name": "पहला नाम", + "footer_body": "ओपन हेल्थकेयर नेटवर्क एक ओपन-सोर्स पब्लिक यूटिलिटी है जिसे इनोवेटर्स और स्वयंसेवकों की एक बहु-विषयक टीम द्वारा डिज़ाइन किया गया है। ओपन हेल्थकेयर नेटवर्क केयर एक डिजिटल पब्लिक गुड है जिसे संयुक्त राष्ट्र द्वारा मान्यता प्राप्त है।", + "forget_password": "पासवर्ड भूल गए?", + "forget_password_instruction": "अपना उपयोगकर्ता नाम दर्ज करें, और यदि यह मौजूद है, तो हम आपको अपना पासवर्ड रीसेट करने के लिए एक लिंक भेजेंगे।", + "frequency": "आवृत्ति", "full_screen": "पूर्ण स्क्रीन", - "feed_is_currently_not_live": "फ़ीड वर्तमान में लाइव नहीं है", - "zoom_out": "ज़ूम आउट", - "zoom_in": "ज़ूम इन", - "right": "सही", + "gender": "लिंग", + "generate_report": "रिपोर्ट तैयार करें", + "generated_summary_caution": "यह CARE प्रणाली में प्राप्त जानकारी का उपयोग करके कंप्यूटर द्वारा तैयार किया गया सारांश है।", + "generating": "उत्पादक", + "generating_discharge_summary": "डिस्चार्ज सारांश तैयार करना", + "get_tests": "टेस्ट प्राप्त करें", + "goal": "हमारा लक्ष्य डिजिटल उपकरणों का उपयोग करके सार्वजनिक स्वास्थ्य सेवाओं की गुणवत्ता और पहुंच में निरंतर सुधार करना है।", + "help_confirmed": "इस स्थिति को पुष्ट मानने के लिए पर्याप्त नैदानिक और/या नैदानिक साक्ष्य मौजूद हैं।", + "help_differential": "संभावित (और आमतौर पर परस्पर अनन्य) निदानों के एक समूह में से एक, जो निदान प्रक्रिया और प्रारंभिक उपचार को आगे बढ़ाने के लिए निर्देशित किया जाता है।", + "help_entered-in-error": "यह कथन गलती से दर्ज किया गया है और मान्य नहीं है।", + "help_provisional": "यह एक अस्थायी निदान है - अभी भी इस पर विचार किया जा रहा है।", + "help_refuted": "बाद के निदानात्मक और नैदानिक साक्ष्यों से इस स्थिति को खारिज कर दिया गया है।", + "help_unconfirmed": "इसे एक पुष्ट स्थिति मानने के लिए पर्याप्त नैदानिक और/या नैदानिक साक्ष्य उपलब्ध नहीं हैं।", + "hide": "छिपाना", + "home_facility": "घर की सुविधा", + "icd11_as_recommended": "विश्व स्वास्थ्य संगठन द्वारा अनुशंसित ICD-11 के अनुसार", + "inconsistent_dosage_units_error": "खुराक इकाइयाँ समान होनी चाहिए", + "india_1": "भारत", + "indian_mobile": "भारतीय मोबाइल", + "indicator": "सूचक", + "inidcator_event": "संकेतक घटना", + "instruction_on_titration": "अनुमापन पर निर्देश", + "international_mobile": "अंतर्राष्ट्रीय मोबाइल", + "invalid_asset_id_msg": "ओह! आपके द्वारा दर्ज की गई संपत्ति आईडी वैध नहीं लगती।", + "invalid_email": "कृपया एक मान्य ईमेल पता प्रविष्ट करें", + "invalid_link_msg": "ऐसा प्रतीत होता है कि आपने जो पासवर्ड रीसेट लिंक इस्तेमाल किया है वह या तो अमान्य है या उसकी समय-सीमा समाप्त हो चुकी है। कृपया नया पासवर्ड रीसेट लिंक अनुरोध करें।", + "invalid_password": "पासवर्ड आवश्यकताओं को पूरा नहीं करता है", + "invalid_password_reset_link": "अमान्य पासवर्ड रीसेट लिंक", + "invalid_phone": "कृपया एक वैध नंबर डालें", + "invalid_phone_number": "अमान्य फ़ोन नंबर", + "invalid_pincode": "अमान्य पिनकोड", + "invalid_reset": "अमान्य रीसेट", + "invalid_username": "आवश्यक। 150 अक्षर या उससे कम। केवल अक्षर, अंक और @/./+/-/_।", + "inventory_management": "सूची प्रबंधन", + "investigation_reports": "जांच रिपोर्ट", + "investigations": "जांच", + "investigations__date": "तारीख", + "investigations__ideal_value": "आदर्श मूल्य", + "investigations__name": "नाम", + "investigations__range": "मूल्य पहुंच", + "investigations__result": "परिणाम", + "investigations__unit": "इकाई", + "investigations_suggested": "सुझाए गए जांच", + "is": "है", + "is_antenatal": "क्या यह प्रसवपूर्व है?", + "is_emergency": "क्या आपातकाल है?", + "is_emergency_case": "क्या यह आपातकालीन मामला है?", + "is_it_upshift": "क्या यह अपशिफ्ट है", + "is_this_an_emergency": "क्या यह आपातकाल है?", + "is_this_an_upshift": "क्या यह एक उन्नति है?", + "is_up_shift": "क्या शिफ्ट चालू है", + "is_upshift_case": "क्या अपशिफ्ट मामला है?", + "landline": "भारतीय लैंडलाइन", + "last_administered": "अंतिम प्रशासित", + "last_edited": "अंतिम बार संपादित", + "last_modified": "अंतिम संशोधित", + "last_name": "उपनाम", + "last_online": "अंतिम ऑनलाइन", + "last_serviced_on": "अंतिम सेवा कब दी गई", + "latitude_invalid": "अक्षांश -90 और 90 के बीच होना चाहिए", "left": "बाएं", - "down": "नीचे", - "up": "ऊपर", - "RESPIRATORY_SUPPORT_SHORT__UNKNOWN": "कोई नहीं", - "RESPIRATORY_SUPPORT_SHORT__OXYGEN_SUPPORT": "O2 समर्थन", - "RESPIRATORY_SUPPORT_SHORT__NON_INVASIVE": "एनआईवी", - "RESPIRATORY_SUPPORT_SHORT__INVASIVE": "चतुर्थ", - "RESPIRATORY_SUPPORT__UNKNOWN": "कोई नहीं", - "RESPIRATORY_SUPPORT__OXYGEN_SUPPORT": "ऑक्सीजन सहायता", - "RESPIRATORY_SUPPORT__NON_INVASIVE": "नॉन-इनवेसिव वेंटिलेटर (एनआईवी)", - "RESPIRATORY_SUPPORT__INVASIVE": "इनवेसिव वेंटिलेटर (IV)", - "VENTILATOR_MODE__CMV": "मैकेनिकल वेंटिलेशन (CMV) को नियंत्रित करें", - "VENTILATOR_MODE__VCV": "वॉल्यूम नियंत्रण वेंटिलेशन (VCV)", - "VENTILATOR_MODE__PCV": "दबाव नियंत्रण वेंटिलेशन (पीसीवी)", - "VENTILATOR_MODE__SIMV": "समकालिक आंतरायिक अनिवार्य वेंटिलेशन (एसआईएमवी)", - "VENTILATOR_MODE__VC_SIMV": "वॉल्यूम नियंत्रित SIMV (VC-SIMV)", - "VENTILATOR_MODE__PC_SIMV": "दबाव नियंत्रित SIMV (PC-SIMV)", - "VENTILATOR_MODE__PSV": "सी-पीएपी / प्रेशर सपोर्ट वेंटिलेशन (पीएसवी)", - "CONSCIOUSNESS_LEVEL__UNRESPONSIVE": "अनुत्तरदायी", - "CONSCIOUSNESS_LEVEL__RESPONDS_TO_PAIN": "दर्द का जवाब देता है", - "CONSCIOUSNESS_LEVEL__RESPONDS_TO_VOICE": "आवाज़ का जवाब देता है", - "CONSCIOUSNESS_LEVEL__ALERT": "चेतावनी", - "CONSCIOUSNESS_LEVEL__AGITATED_OR_CONFUSED": "उत्तेजित या भ्रमित", - "CONSCIOUSNESS_LEVEL__ONSET_OF_AGITATION_AND_CONFUSION": "उत्तेजना और भ्रम की शुरुआत", - "PUPIL_REACTION__UNKNOWN": "अज्ञात", - "PUPIL_REACTION__BRISK": "तेज", - "PUPIL_REACTION__SLUGGISH": "सुस्त", - "PUPIL_REACTION__FIXED": "तय", - "PUPIL_REACTION__CANNOT_BE_ASSESSED": "मूल्यांकन नहीं किया जा सकता", - "LIMB_RESPONSE__UNKNOWN": "अज्ञात", - "LIMB_RESPONSE__STRONG": "मज़बूत", - "LIMB_RESPONSE__MODERATE": "मध्यम", - "LIMB_RESPONSE__WEAK": "कमज़ोर", - "LIMB_RESPONSE__FLEXION": "मोड़", - "LIMB_RESPONSE__EXTENSION": "विस्तार", - "LIMB_RESPONSE__NONE": "कोई नहीं", - "OXYGEN_MODALITY__NASAL_PRONGS": "नाक के कांटे", - "OXYGEN_MODALITY__SIMPLE_FACE_MASK": "सरल फेस मास्क", - "OXYGEN_MODALITY__NON_REBREATHING_MASK": "नॉन रीब्रीदिंग मास्क", - "OXYGEN_MODALITY__HIGH_FLOW_NASAL_CANNULA": "उच्च प्रवाह नाक प्रवेशनी", - "INSULIN_INTAKE_FREQUENCY__UNKNOWN": "अज्ञात", - "INSULIN_INTAKE_FREQUENCY__OD": "दिन में एक बार (OD)", - "INSULIN_INTAKE_FREQUENCY__BD": "दिन में दो बार (बीडी)", - "INSULIN_INTAKE_FREQUENCY__TD": "दिन में तीन बार (टीडी)", - "NURSING_CARE_PROCEDURE__personal_hygiene": "व्यक्तिगत स्वच्छता", - "NURSING_CARE_PROCEDURE__positioning": "पोजिशनिंग", - "NURSING_CARE_PROCEDURE__suctioning": "सक्शनिंग", - "NURSING_CARE_PROCEDURE__ryles_tube_care": "राइल्स ट्यूब केयर", - "NURSING_CARE_PROCEDURE__iv_sitecare": "IV साइट देखभाल", - "NURSING_CARE_PROCEDURE__nubulisation": "नूबुलाइज़ेशन", - "NURSING_CARE_PROCEDURE__dressing": "ड्रेसिंग", - "NURSING_CARE_PROCEDURE__dvt_pump_stocking": "डीवीटी पंप स्टॉकिंग", - "NURSING_CARE_PROCEDURE__restrain": "नियंत्रित करना", - "NURSING_CARE_PROCEDURE__chest_tube_care": "चेस्ट ट्यूब की देखभाल", - "NURSING_CARE_PROCEDURE__tracheostomy_care": "ट्रैकियोस्टोमी देखभाल", - "NURSING_CARE_PROCEDURE__stoma_care": "स्टोमा देखभाल", - "NURSING_CARE_PROCEDURE__catheter_care": "कैथेटर देखभाल", - "HEARTBEAT_RHYTHM__REGULAR": "नियमित", - "HEARTBEAT_RHYTHM__IRREGULAR": "अनियमित", - "HEARTBEAT_RHYTHM__UNKNOWN": "अज्ञात", + "linked_facilities": "लिंक्ड सुविधाएं", + "liquid_oxygen_capacity": "द्रव ऑक्सीजन क्षमता", + "list_view": "लिस्ट व्यू", + "litres": "लीटर", + "litres_per_day": "लीटर/दिन", + "live": "रहना", + "live_monitoring": "लाइव मॉनिटरिंग", + "load_more": "और लोड करें", + "loading": "लोड हो रहा है...", + "local_body": "स्थानीय निकाय", + "local_ipaddress": "स्थानीय आईपी पता", + "location": "जगह", + "location_management": "स्थान प्रबंधन", + "log_lab_results": "लॉग लैब परिणाम", + "log_report": "लॉग रिपोर्ट", + "login": "लॉग इन करें", + "longitude_invalid": "देशांतर -180 और 180 के बीच होना चाहिए", + "lsg": "एलएसजी", + "make_multiple_beds_label": "क्या आप कई बिस्तर बनाना चाहते हैं?", + "manage_prescriptions": "नुस्खे प्रबंधित करें", + "manufacturer": "उत्पादक", "map_acronym": "मानचित्र", - "systolic": "सिस्टोलिक", - "diastolic": "डायस्टोलिक", - "pain": "दर्द", - "pain_chart_description": "दर्द का क्षेत्र और तीव्रता चिह्नित करें", - "bradycardia": "मंदनाड़ी", - "tachycardia": "tachycardia", - "medicine": "दवा", - "route": "मार्ग", - "dosage": "मात्रा बनाने की विधि", - "base_dosage": "मात्रा बनाने की विधि", - "start_dosage": "प्रारंभिक खुराक", - "target_dosage": "लक्ष्य खुराक", - "instruction_on_titration": "अनुमापन पर निर्देश", - "titrate_dosage": "टाइट्रेट खुराक", - "indicator": "सूचक", - "inidcator_event": "संकेतक घटना", + "mark_all_as_read": "सभी को पढ़ा हुआ मार्क करें", + "mark_as_read": "पढ़े हुए का चिह्न", + "mark_as_unread": "अपठित के रूप में चिह्नित करें", + "mark_this_transfer_as_complete_question": "क्या आप वाकई इस स्थानांतरण को पूर्ण के रूप में चिह्नित करना चाहते हैं? ओरिजिन सुविधा अब इस रोगी तक पहुँच नहीं पाएगी", + "mark_transfer_complete_confirmation": "क्या आप वाकई इस स्थानांतरण को पूर्ण के रूप में चिह्नित करना चाहते हैं? ओरिजिन सुविधा अब इस रोगी तक पहुँच नहीं पाएगी", "max_dosage_24_hrs": "अधिकतम खुराक 24 घंटे में.", - "min_time_bw_doses": "खुराकों के बीच न्यूनतम समय", - "manage_prescriptions": "नुस्खे प्रबंधित करें", - "prescription_details": "प्रिस्क्रिप्शन विवरण", - "prescription_medications": "प्रिस्क्रिप्शन दवाएं", - "prn_prescriptions": "पीआरएन प्रिस्क्रिप्शन", - "prescription": "नुस्खा", - "discharge_prescription": "डिस्चार्ज प्रिस्क्रिप्शन", - "edit_prescriptions": "नुस्खे संपादित करें", - "prescription_medication": "दवा का पर्चा", - "add_prescription_medication": "प्रिस्क्रिप्शन दवा जोड़ें", - "prn_prescription": "पीआरएन प्रिस्क्रिप्शन", - "add_prn_prescription": "PRN प्रिस्क्रिप्शन जोड़ें", - "add_prescription_to_consultation_note": "इस परामर्श में एक नया नुस्खा जोड़ें।", + "max_dosage_in_24hrs_gte_base_dosage_error": "24 घंटे में अधिकतम खुराक आधार खुराक से अधिक या उसके बराबर होनी चाहिए", + "max_size_for_image_uploaded_should_be": "अपलोड की गई छवि का अधिकतम आकार होना चाहिए", + "medical_worker": "चिकित्साकर्मी", + "medicine": "दवा", "medicine_administration_history": "औषधि प्रशासन इतिहास", - "return_to_patient_dashboard": "मरीज़ डैशबोर्ड पर वापस जाएँ", - "administered_on": "प्रशासित", - "administer": "प्रशासन", - "administer_medicine": "दवाई देना", - "administer_medicines": "दवाइयाँ दें", - "administer_selected_medicines": "चयनित दवाएँ दें", - "select_for_administration": "प्रशासन के लिए चयन करें", "medicines_administered": "दी जाने वाली दवा(एँ)", "medicines_administered_error": "दवा(एँ) देने में त्रुटि", - "prescription_discontinued": "प्रिस्क्रिप्शन बंद कर दिया गया", - "administration_notes": "प्रशासन नोट्स", - "last_administered": "अंतिम प्रशासित", - "prescription_logs": "प्रिस्क्रिप्शन लॉग", + "middleware_hostname": "मिडलवेयर होस्टनाम", + "min_password_len_8": "न्यूनतम पासवर्ड लंबाई 8", + "min_time_bw_doses": "खुराकों के बीच न्यूनतम समय", + "mobile": "गतिमान", + "mobile_number": "मोबाइल नंबर", "modification_caution_note": "एक बार जोड़ देने के बाद कोई संशोधन संभव नहीं", - "discontinue_caution_note": "क्या आप वाकई इस नुस्खे को बंद करना चाहते हैं?", - "confirm_discontinue": "बंद करने की पुष्टि करें", - "edit_caution_note": "परामर्श में संपादित विवरण के साथ एक नया नुस्खा जोड़ा जाएगा तथा वर्तमान नुस्खा बंद कर दिया जाएगा।", - "reason_for_discontinuation": "बंद करने का कारण", - "reason_for_edit": "संपादन का कारण", - "PRESCRIPTION_ROUTE_ORAL": "मौखिक", - "PRESCRIPTION_ROUTE_IV": "चतुर्थ", - "PRESCRIPTION_ROUTE_IM": "मैं हूँ", - "PRESCRIPTION_ROUTE_SC": "अनुसूचित जाति", - "PRESCRIPTION_ROUTE_INHALATION": "साँस लेना", - "PRESCRIPTION_ROUTE_NASOGASTRIC": "नासोगैस्ट्रिक / गैस्ट्रोस्टोमी ट्यूब", - "PRESCRIPTION_ROUTE_INTRATHECAL": "अंतःकपाल इंजेक्शन", - "PRESCRIPTION_ROUTE_TRANSDERMAL": "ट्रांसडर्मल", - "PRESCRIPTION_ROUTE_RECTAL": "रेक्टल", - "PRESCRIPTION_ROUTE_SUBLINGUAL": "सबलिंगुअल", - "PRESCRIPTION_FREQUENCY_STAT": "तुरन्त", - "PRESCRIPTION_FREQUENCY_OD": "एक बार दैनिक", - "PRESCRIPTION_FREQUENCY_HS": "केवल रात्रि", - "PRESCRIPTION_FREQUENCY_BD": "दो बार दैनिक लें", - "PRESCRIPTION_FREQUENCY_TID": "8वाँ प्रति घंटा", - "PRESCRIPTION_FREQUENCY_QID": "6वाँ प्रति घंटा", - "PRESCRIPTION_FREQUENCY_Q4H": "4 घंटे प्रति घंटा", - "PRESCRIPTION_FREQUENCY_QOD": "वैकल्पिक दिन", - "PRESCRIPTION_FREQUENCY_QWK": "एक सप्ताह में एक बार", - "inconsistent_dosage_units_error": "खुराक इकाइयाँ समान होनी चाहिए", - "max_dosage_in_24hrs_gte_base_dosage_error": "24 घंटे में अधिकतम खुराक आधार खुराक से अधिक या उसके बराबर होनी चाहिए", - "administration_dosage_range_error": "खुराक प्रारंभिक और लक्ष्य खुराक के बीच होनी चाहिए", + "modified": "संशोधित", + "modified_date": "संशोधित तिथि", + "monitor": "निगरानी करना", + "more_info": "और जानकारी", + "moving_camera": "चलता कैमरा", + "name": "नाम", + "name_of_hospital": "अस्पताल का नाम", + "name_of_shifting_approving_facility": "स्थानांतरण अनुमोदन सुविधा का नाम", + "nationality": "राष्ट्रीयता", + "never": "कभी नहीं", + "new_password": "नया पासवर्ड", + "next_sessions": "अगले सत्र", + "no": "नहीं", + "no_bed_types_found": "कोई बिस्तर प्रकार नहीं मिला", + "no_changes": "कोई परिवर्तन नहीं", + "no_changes_made": "कोई परिवर्तन नहीं किया गया", + "no_consultation_updates": "कोई परामर्श अपडेट नहीं", + "no_cover_photo_uploaded_for_this_facility": "इस सुविधा के लिए कोई कवर फ़ोटो अपलोड नहीं किया गया", + "no_data_found": "डाटा प्राप्त नहीं हुआ", + "no_duplicate_facility": "आपको डुप्लिकेट सुविधाएं नहीं बनानी चाहिए", + "no_facilities": "कोई सुविधा नहीं मिली", + "no_files_found": "कोई {{type}} फ़ाइल नहीं मिली", + "no_home_facility": "कोई गृह सुविधा निर्दिष्ट नहीं की गई", + "no_investigation": "कोई जांच रिपोर्ट नहीं मिली", + "no_investigation_suggestions": "कोई जांच सुझाव नहीं", + "no_linked_facilities": "कोई लिंक्ड सुविधा नहीं", + "no_log_update_delta": "पिछले लॉग अद्यतन के बाद से कोई परिवर्तन नहीं", "no_notices_for_you": "आपके लिए कोई नोटिस नहीं.", - "mark_as_read": "पढ़े हुए का चिह्न", - "mark_as_unread": "अपठित के रूप में चिह्नित करें", - "subscribe": "सदस्यता लें", - "subscribe_on_this_device": "इस डिवाइस पर सदस्यता लें", + "no_patients_to_show": "दिखाने के लिए कोई मरीज़ नहीं.", + "no_results_found": "कोई परिणाम नहीं मिला", + "no_staff": "कोई कर्मचारी नहीं मिला", + "no_treating_physicians_available": "इस सुविधा में कोई होम फैसिलिटी डॉक्टर नहीं है। कृपया अपने एडमिन से संपर्क करें।", + "no_users_found": "कोई उपयोगकर्ता नहीं मिला", + "none": "कोई नहीं", + "normal": "सामान्य", + "not_specified": "निर्दिष्ट नहीं है", + "notes": "नोट्स", + "notes_placeholder": "अपने नोट्स लिखें", "notification_permission_denied": "सूचना अनुमति नामंजूर", "notification_permission_granted": "सूचना अनुमति प्रदान की गई", - "show_unread_notifications": "अपठित दिखाएँ", - "show_all_notifications": "सब दिखाएं", - "filter_by_category": "श्रेणी के अनुसार फ़िल्टर करें", - "mark_all_as_read": "सभी को पढ़ा हुआ मार्क करें", - "reload": "पुनः लोड करें", - "no_results_found": "कोई परिणाम नहीं मिला", - "load_more": "और लोड करें", - "subscription_error": "सदस्यता त्रुटि", - "unsubscribe_failed": "सदस्यता रद्द करना विफल हुआ.", - "unsubscribe": "सदस्यता रद्द", - "escape": "पलायन", - "invalid_asset_id_msg": "ओह! आपके द्वारा दर्ज की गई संपत्ति आईडी वैध नहीं लगती।", - "asset_not_found_msg": "ओह! आप जिस संपत्ति की तलाश कर रहे हैं वह मौजूद नहीं है। कृपया संपत्ति आईडी की जाँच करें।", - "create_resource_request": "संसाधन अनुरोध बनाएँ", - "contact_person": "सुविधा केंद्र पर संपर्क व्यक्ति का नाम", - "approving_facility": "अनुमोदन सुविधा का नाम", - "contact_phone": "संपर्क व्यक्ति संख्या", + "number_of_aged_dependents_above_60": "वृद्ध आश्रितों की संख्या (60 से अधिक)", + "number_of_beds": "बिस्तरों की संख्या", + "number_of_beds_out_of_range_error": "बिस्तरों की संख्या 100 से अधिक नहीं हो सकती", + "number_of_chronic_diseased_dependents": "दीर्घकालिक रोग से पीड़ित आश्रितों की संख्या", + "on": "पर", + "ongoing_medications": "चल रही दवाएँ", + "open": "खुला", + "open_camera": "कैमरा खोलें", + "open_live_monitoring": "लाइव मॉनिटरिंग खोलें", + "optional": "वैकल्पिक", + "ordering": "आदेश", + "origin_facility": "वर्तमान सुविधा", + "oxygen_information": "ऑक्सीजन की जानकारी", + "page_not_found": "पृष्ठ नहीं मिला", + "pain": "दर्द", + "pain_chart_description": "दर्द का क्षेत्र और तीव्रता चिह्नित करें", + "passport_number": "पासपोर्ट नंबर", + "password": "पासवर्ड", + "password_mismatch": "पासवर्ड और पुष्टि पासवर्ड एक ही होना चाहिए.", + "password_reset_failure": "पासवर्ड रीसेट विफल", + "password_reset_success": "पासवर्ड सफलतापूर्वक रीसेट हो गया", + "password_sent": "पासवर्ड रीसेट ईमेल भेजा गया", + "patient_address": "मरीज का पता", + "patient_category": "रोगी श्रेणी", + "patient_consultation__admission": "प्रवेश की तिथि", + "patient_consultation__consultation_notes": "सामान्य निर्देश", + "patient_consultation__dc_admission": "घरेलू देखभाल शुरू होने की तिथि", + "patient_consultation__ip": "आई पी", + "patient_consultation__op": "सेशन", + "patient_consultation__special_instruction": "विशेष निर्देश", + "patient_consultation__treatment__plan": "योजना", + "patient_consultation__treatment__summary": "सारांश", + "patient_consultation__treatment__summary__date": "तारीख", + "patient_consultation__treatment__summary__spo2": "एसपीओ2", + "patient_consultation__treatment__summary__temperature": "तापमान", + "patient_created": "रोगी बनाया गया", + "patient_name": "मरीज का नाम", + "patient_no": "ओपी/आईपी संख्या", + "patient_phone_number": "मरीज़ का फ़ोन नंबर", + "patient_registration__address": "पता", + "patient_registration__age": "आयु", + "patient_registration__comorbidities": "comorbidities", + "patient_registration__comorbidities__details": "विवरण", + "patient_registration__comorbidities__disease": "बीमारी", + "patient_registration__contact": "आपातकालीन संपर्क", + "patient_registration__gender": "लिंग", + "patient_registration__name": "नाम", + "patient_state": "मरीज की स्थिति", + "patient_status": "रोगी की स्थिति", + "patient_transfer_birth_match_note": "ध्यान दें: स्थानांतरण अनुरोध पर कार्रवाई करने के लिए जन्म का वर्ष मरीज से मेल खाना चाहिए।", + "phone": "फ़ोन", + "phone_no": "फोन नंबर।", + "phone_number": "फ़ोन नंबर", + "phone_number_at_current_facility": "वर्तमान सुविधा पर संपर्क व्यक्ति का फ़ोन नंबर", + "pincode": "पिनकोड", + "please_enter_a_reason_for_the_shift": "कृपया बदलाव का कारण बताएं.", + "please_select_a_facility": "कृपया एक सुविधा चुनें", + "please_select_breathlessness_level": "कृपया सांस फूलने का स्तर चुनें", + "please_select_facility_type": "कृपया सुविधा प्रकार चुनें", + "please_select_patient_category": "कृपया रोगी श्रेणी का चयन करें", + "please_select_preferred_vehicle_type": "कृपया पसंदीदा वाहन प्रकार चुनें", + "please_select_status": "कृपया स्थिति चुनें", + "please_upload_a_csv_file": "कृपया एक CSV फ़ाइल अपलोड करें", + "post_your_comment": "अपनी टिप्पणी पोस्ट करें", + "powered_by": "द्वारा संचालित", + "preferred_facility_type": "पसंदीदा सुविधा प्रकार", + "preferred_vehicle": "पसंदीदा वाहन", + "prescription": "नुस्खा", + "prescription_details": "प्रिस्क्रिप्शन विवरण", + "prescription_discontinued": "प्रिस्क्रिप्शन बंद कर दिया गया", + "prescription_logs": "प्रिस्क्रिप्शन लॉग", + "prescription_medication": "दवा का पर्चा", + "prescription_medications": "प्रिस्क्रिप्शन दवाएं", + "prescriptions__dosage_frequency": "खुराक और आवृत्ति", + "prescriptions__medicine": "दवा", + "prescriptions__route": "मार्ग", + "prescriptions__start_date": "निर्धारित", + "prev_sessions": "पिछले सत्र", + "principal": "प्रधानाचार्य", + "principal_diagnosis": "मुख्य निदान", + "print": "छाप", + "print_referral_letter": "रेफरल पत्र प्रिंट करें", + "prn_prescription": "पीआरएन प्रिस्क्रिप्शन", + "prn_prescriptions": "पीआरएन प्रिस्क्रिप्शन", + "procedure_suggestions": "प्रक्रिया सुझाव", + "provisional": "अनंतिम", + "ration_card__APL": "एपीएल", + "ration_card__BPL": "गरीबी रेखा से नीचे", + "ration_card__NO_CARD": "गैर-कार्ड धारक", + "reason": "कारण", + "reason_for_discontinuation": "बंद करने का कारण", + "reason_for_edit": "संपादन का कारण", + "reason_for_referral": "निर्दिष्ट करने की वजह", + "reason_for_shift": "बदलाव का कारण", + "recommended_aspect_ratio_for": "इसके लिए अनुशंसित पहलू अनुपात", + "record": "ऑडियो रिकॉर्ड करें", + "record_delete_confirm": "क्या आप वाकई इस रिकॉर्ड को हटाना चाहते हैं?", + "record_has_been_deleted_successfully": "रिकार्ड सफलतापूर्वक हटा दिया गया है.", + "record_updates": "रिकॉर्ड अपडेट", + "recording": "रिकॉर्डिंग", + "redirected_to_create_consultation": "नोट: आपको परामर्श फ़ॉर्म बनाने के लिए पुनः निर्देशित किया जाएगा। कृपया स्थानांतरण प्रक्रिया समाप्त करने के लिए फ़ॉर्म पूरा करें", + "referral_letter": "रेफरल पत्र", + "referred_to": "करने के लिए भेजा", + "refresh_list": "सूची रीफ़्रेश करें", + "refuted": "का खंडन किया", + "register_hospital": "अस्पताल रजिस्टर करें", + "register_page_title": "अस्पताल प्रशासक के रूप में पंजीकरण करें", + "reload": "पुनः लोड करें", + "remove": "निकालना", + "rename": "नाम बदलें", + "report": "प्रतिवेदन", + "req_atleast_one_digit": "कम से कम एक अंक की आवश्यकता है", + "req_atleast_one_lowercase": "कम से कम एक लोअर केस अक्षर की आवश्यकता है", + "req_atleast_one_symbol": "कम से कम एक प्रतीक की आवश्यकता है", + "req_atleast_one_uppercase": "कम से कम एक अपर केस की आवश्यकता है", + "request_description": "अनुरोध का विवरण", + "request_description_placeholder": "अपना विवरण यहाँ लिखें", "request_title": "शीर्षक का अनुरोध करें", "request_title_placeholder": "अपना शीर्षक यहाँ लिखें", + "required": "आवश्यक", "required_quantity": "आवश्यक मात्रा", - "request_description": "अनुरोध का विवरण", - "request_description_placeholder": "अपना विवरण यहाँ लिखें", + "reset": "रीसेट करें", + "reset_password": "पासवर्ड रीसेट", + "resource_request": "संसाधन अनुरोध", + "result": "परिणाम", + "result_date": "परिणाम दिनांक", + "result_details": "परिणाम विवरण", + "resume": "फिर शुरू करना", + "retake": "फिर से लेना", + "return_to_care": "CARE पर वापस लौटें", + "return_to_login": "लॉगिन पर वापस लौटें", + "return_to_password_reset": "पासवर्ड रीसेट पर वापस लौटें", + "return_to_patient_dashboard": "मरीज़ डैशबोर्ड पर वापस जाएँ", + "right": "सही", + "route": "मार्ग", + "sample_collection_date": "नमूना संग्रहण तिथि", + "sample_format": "नमूना प्रारूप", + "sample_type": "नमूना प्रकार", + "save": "बचाना", + "save_and_continue": "सहेजें और जारी रखें", + "save_investigation": "जांच सहेजें", + "scan_asset_qr": "एसेट क्यूआर स्कैन करें!", + "search_by_username": "उपयोगकर्ता नाम से खोजें", + "search_for_facility": "सुविधा खोजें", + "search_icd11_placeholder": "ICD-11 निदान खोजें", + "search_investigation_placeholder": "खोज जांच और समूह", + "search_patient": "मरीज खोजें", "search_resource": "संसाधन खोजें", - "emergency": "आपातकाल", - "up_shift": "अप शिफ्ट", - "antenatal": "उत्पत्ति के पूर्व का", - "phone_no": "फोन नंबर।", - "patient_name": "मरीज का नाम", - "disease_status": "रोग की स्थिति", - "breathlessness_level": "सांस फूलने का स्तर", - "assigned_facility": "सुविधा सौंपी गई", - "origin_facility": "वर्तमान सुविधा", - "shifting_approval_facility": "स्थानांतरण अनुमोदन सुविधा", + "select": "चुनना", + "select_date": "तारीख़ चुनें", + "select_facility_for_discharged_patients_warning": "छुट्टी दिए गए मरीजों को देखने के लिए सुविधा का चयन किया जाना आवश्यक है।", + "select_for_administration": "प्रशासन के लिए चयन करें", + "select_groups": "समूह चुनें", + "select_investigation": "जांच का चयन करें (सभी जांच डिफ़ॉल्ट रूप से चयनित होंगी)", + "select_investigation_groups": "जांच समूह चुनें", + "select_investigations": "जांच का चयन करें", + "select_local_body": "स्थानीय निकाय का चयन करें", + "select_skills": "कुछ कौशल चुनें और जोड़ें", + "select_wards": "वार्ड चुनें", + "send_email": "ईमेल भेजें", + "send_reset_link": "रीसेट लिंक भेजें", + "serial_number": "क्रम संख्या", + "serviced_on": "सेवा पर", + "session_expired": "सत्र समाप्त हुआ", + "session_expired_msg": "ऐसा लगता है कि आपका सत्र समाप्त हो गया है। यह निष्क्रियता के कारण हो सकता है। कृपया जारी रखने के लिए फिर से लॉगिन करें।", + "set_average_weekly_working_hours_for": "औसत साप्ताहिक कार्य घंटे निर्धारित करें", + "settings_and_filters": "सेटिंग्स और फ़िल्टर", + "severity_of_breathlessness": "सांस फूलने की गंभीरता", + "shift_request_updated_successfully": "शिफ़्ट अनुरोध सफलतापूर्वक अपडेट किया गया", "shifting": "स्थानांतरण", - "search_patient": "मरीज खोजें", - "list_view": "लिस्ट व्यू", - "comment_min_length": "टिप्पणी में कम से कम 1 अक्षर होना चाहिए", - "comment_added_successfully": "टिप्पणी सफलतापूर्वक जोड़ी गई", - "post_your_comment": "अपनी टिप्पणी पोस्ट करें", + "shifting_approval_facility": "स्थानांतरण अनुमोदन सुविधा", "shifting_approving_facility": "स्थानांतरण अनुमोदन सुविधा", - "is_emergency_case": "क्या यह आपातकालीन मामला है?", - "is_upshift_case": "क्या अपशिफ्ट मामला है?", - "is_antenatal": "क्या यह प्रसवपूर्व है?", - "patient_phone_number": "मरीज़ का फ़ोन नंबर", - "created_date": "सृजित दिनांक", - "modified_date": "संशोधित तिथि", - "no_patients_to_show": "दिखाने के लिए कोई मरीज़ नहीं.", - "shifting_status": "बदलती स्थिति", - "transfer_to_receiving_facility": "प्राप्ति सुविधा में स्थानांतरण", - "confirm_transfer_complete": "स्थानांतरण पूर्ण होने की पुष्टि करें!", - "mark_transfer_complete_confirmation": "क्या आप वाकई इस स्थानांतरण को पूर्ण के रूप में चिह्नित करना चाहते हैं? ओरिजिन सुविधा अब इस रोगी तक पहुँच नहीं पाएगी", - "board_view": "बोर्ड दृश्य", + "shifting_approving_facility_can_not_be_empty": "स्थानांतरण अनुमोदन सुविधा खाली नहीं हो सकती।", "shifting_deleted": "स्थानांतरण रिकॉर्ड सफलतापूर्वक हटा दिया गया है.", - "details_of_shifting_approving_facility": "स्थानांतरण अनुमोदन सुविधा का विवरण", - "details_of_assigned_facility": "निर्दिष्ट सुविधा का विवरण", - "details_of_origin_facility": "मूल सुविधा का विवरण", - "details_of_patient": "मरीज का विवरण", - "record_delete_confirm": "क्या आप वाकई इस रिकॉर्ड को हटाना चाहते हैं?", - "phone_number_at_current_facility": "वर्तमान सुविधा पर संपर्क व्यक्ति का फ़ोन नंबर", - "authorize_shift_delete": "शिफ़्ट डिलीट को अधिकृत करें", - "delete_record": "रिकॉर्ड मिटाएँ", - "severity_of_breathlessness": "सांस फूलने की गंभीरता", - "facility_preference": "सुविधा वरीयता", - "vehicle_preference": "वाहन वरीयता", - "is_up_shift": "क्या शिफ्ट चालू है", - "ambulance_driver_name": "एम्बुलेंस चालक का नाम", - "ambulance_phone_number": "एम्बुलेंस का फ़ोन नंबर", - "ambulance_number": "एम्बुलेंस नं.", - "is_emergency": "क्या आपातकाल है?", - "contact_person_at_the_facility": "वर्तमान सुविधा पर संपर्क व्यक्ति", - "update_status_details": "स्थिति/विवरण अपडेट करें", "shifting_details": "स्थानांतरण विवरण", - "auto_generated_for_care": "देखभाल के लिए स्वचालित रूप से उत्पन्न", - "approved_by_district_covid_control_room": "जिला कोविड नियंत्रण कक्ष द्वारा अनुमोदित", - "treatment_summary": "उपचार सारांश", - "reason_for_referral": "निर्दिष्ट करने की वजह", - "referred_to": "करने के लिए भेजा", - "covid_19_cat_gov": "केरल सरकार के दिशानिर्देश के अनुसार कोविड_19 क्लिनिकल श्रेणी (ए/बी/सी)", - "district_program_management_supporting_unit": "जिला कार्यक्रम प्रबंधन सहायक इकाई", - "name_of_hospital": "अस्पताल का नाम", - "passport_number": "पासपोर्ट नंबर", + "shifting_status": "बदलती स्थिति", + "show_all": "सब दिखाएं", + "show_all_notifications": "सब दिखाएं", + "show_default_presets": "डिफ़ॉल्ट प्रीसेट दिखाएं", + "show_patient_presets": "मरीज़ प्रीसेट दिखाएँ", + "show_unread_notifications": "अपठित दिखाएँ", + "sign_out": "साइन आउट", + "something_went_wrong": "कुछ गलत हो गया..!", + "something_wrong": "कुछ ग़लत हुआ! बाद में पुनः प्रयास करें!", + "sort_by": "इसके अनुसार क्रमबद्ध करें", + "source": "स्रोत", + "srf_id": "एसआरएफ आईडी", + "staff_list": "स्टाफ सूची", + "start_dosage": "प्रारंभिक खुराक", + "state": "राज्य", + "status": "स्थिति", + "stop": "रुकना", + "stream_stop_due_to_inativity": "निष्क्रियता के कारण लाइव फ़ीड स्ट्रीमिंग बंद हो जाएगी", + "stream_stopped_due_to_inativity": "निष्क्रियता के कारण लाइव फ़ीड की स्ट्रीमिंग बंद हो गई है", + "sub_category": "उप श्रेणी", + "submit": "जमा करना", + "submitting": "भेजने से", + "subscribe": "सदस्यता लें", + "subscribe_on_this_device": "इस डिवाइस पर सदस्यता लें", + "subscription_error": "सदस्यता त्रुटि", + "suggested_investigations": "सुझाए गए जांच", + "summary": "सारांश", + "support": "सहायता", + "switch": "बदलना", + "systolic": "सिस्टोलिक", + "tachycardia": "tachycardia", + "target_dosage": "लक्ष्य खुराक", "test_type": "परीक्षण प्रकार", - "medical_worker": "चिकित्साकर्मी", - "error_deleting_shifting": "शिफ्टिंग रिकॉर्ड हटाते समय त्रुटि", + "titrate_dosage": "टाइट्रेट खुराक", + "to_be_conducted": "संचालित किया जाना है", + "total_beds": "कुल बिस्तर", + "total_users": "कुल उपयोगकर्ता", + "transfer_in_progress": "स्थानांतरण प्रगति पर है", + "transfer_to_receiving_facility": "प्राप्ति सुविधा में स्थानांतरण", + "travel_within_last_28_days": "घरेलू/अंतर्राष्ट्रीय यात्रा (पिछले 28 दिनों के भीतर)", + "treating_doctor": "इलाज करने वाला डॉक्टर", + "treatment_summary": "उपचार सारांश", + "treatment_summary__head_title": "उपचार सारांश", + "treatment_summary__heading": "अंतरिम उपचार सारांश", + "treatment_summary__print": "प्रिंट उपचार सारांश", + "try_again_later": "बाद में पुन: प्रयास!", "type_any_extra_comments_here": "कोई भी अतिरिक्त टिप्पणी यहाँ लिखें", + "type_b_cylinders": "बी प्रकार सिलेंडर", + "type_c_cylinders": "सी प्रकार सिलेंडर", + "type_d_cylinders": "डी प्रकार सिलेंडर", + "type_to_search": "खोजने के लिए टाइप करें", + "type_your_comment": "अपनी टिप्पणी लिखें", "type_your_reason_here": "अपना कारण यहाँ लिखें", - "reason_for_shift": "बदलाव का कारण", - "preferred_facility_type": "पसंदीदा सुविधा प्रकार", - "preferred_vehicle": "पसंदीदा वाहन", - "is_it_upshift": "क्या यह अपशिफ्ट है", - "is_this_an_upshift": "क्या यह एक उन्नति है?", - "is_this_an_emergency": "क्या यह आपातकाल है?", - "what_facility_assign_the_patient_to": "आप मरीज़ को कौन सी सुविधा देना चाहेंगे?", - "name_of_shifting_approving_facility": "स्थानांतरण अनुमोदन सुविधा का नाम", + "unconfirmed": "अपुष्ट", + "unique_id": "अनोखा ID", + "unknown": "अज्ञात", + "unsubscribe": "सदस्यता रद्द", + "unsubscribe_failed": "सदस्यता रद्द करना विफल हुआ.", + "unsupported_browser": "असमर्थित ब्राउज़र", + "unsupported_browser_description": "आपका ब्राउज़र ({{name}} संस्करण {{version}}) समर्थित नहीं है। कृपया अपने ब्राउज़र को नवीनतम संस्करण में अपडेट करें या सर्वोत्तम अनुभव के लिए समर्थित ब्राउज़र पर स्विच करें।", + "up": "ऊपर", + "up_shift": "अप शिफ्ट", + "update": "अद्यतन", + "update_asset": "संपत्ति अपडेट करें", + "update_asset_service_record": "एसेट सेवा रिकॉर्ड अपडेट करें", + "update_bed": "बिस्तर अपडेट करें", + "update_facility": "अद्यतन सुविधा", + "update_facility_middleware_success": "सुविधा मिडलवेयर सफलतापूर्वक अपडेट किया गया", + "update_log": "लॉग अपडेट करें", + "update_record": "रिकॉर्ड अपडेट करें", + "update_record_for_asset": "संपत्ति के लिए रिकॉर्ड अपडेट करें", "update_shift_request": "शिफ्ट अनुरोध अपडेट करें", - "shift_request_updated_successfully": "शिफ़्ट अनुरोध सफलतापूर्वक अपडेट किया गया", - "please_enter_a_reason_for_the_shift": "कृपया बदलाव का कारण बताएं.", - "please_select_preferred_vehicle_type": "कृपया पसंदीदा वाहन प्रकार चुनें", - "please_select_facility_type": "कृपया सुविधा प्रकार चुनें", - "please_select_breathlessness_level": "कृपया सांस फूलने का स्तर चुनें", - "please_select_a_facility": "कृपया एक सुविधा चुनें", - "please_select_status": "कृपया स्थिति चुनें", - "please_select_patient_category": "कृपया रोगी श्रेणी का चयन करें", - "shifting_approving_facility_can_not_be_empty": "स्थानांतरण अनुमोदन सुविधा खाली नहीं हो सकती।", - "redirected_to_create_consultation": "नोट: आपको परामर्श फ़ॉर्म बनाने के लिए पुनः निर्देशित किया जाएगा। कृपया स्थानांतरण प्रक्रिया समाप्त करने के लिए फ़ॉर्म पूरा करें", - "mark_this_transfer_as_complete_question": "क्या आप वाकई इस स्थानांतरण को पूर्ण के रूप में चिह्नित करना चाहते हैं? ओरिजिन सुविधा अब इस रोगी तक पहुँच नहीं पाएगी", - "transfer_in_progress": "स्थानांतरण प्रगति पर है", - "patient_state": "मरीज की स्थिति", - "yet_to_be_decided": "अभी निर्णय होना बाकी", - "awaiting_destination_approval": "गंतव्य अनुमोदन की प्रतीक्षा में", + "update_status_details": "स्थिति/विवरण अपडेट करें", + "updated": "अद्यतन", + "updating": "अद्यतन करने", + "upload": "अपलोड करें", + "upload_an_image": "एक छवि अपलोड करें", + "upload_headings__consultation": "नई परामर्श फ़ाइल अपलोड करें", + "upload_headings__patient": "नई रोगी फ़ाइल अपलोड करें", + "upload_headings__sample_report": "नमूना रिपोर्ट अपलोड करें", + "upload_headings__supporting_info": "सहायक जानकारी अपलोड करें", + "uploading": "अपलोड हो रहा है", + "user_deleted_successfuly": "उपयोगकर्ता सफलतापूर्वक हटा दिया गया", "user_management": "प्रयोक्ता प्रबंधन", - "facilities": "सुविधाएँ", - "add_new_user": "नई उपयोगकर्ता को जोड़ना", - "no_users_found": "कोई उपयोगकर्ता नहीं मिला", - "home_facility": "घर की सुविधा", - "no_home_facility": "कोई गृह सुविधा निर्दिष्ट नहीं की गई", - "clear_home_facility": "क्लियर होम सुविधा", - "linked_facilities": "लिंक्ड सुविधाएं", - "no_linked_facilities": "कोई लिंक्ड सुविधा नहीं", - "average_weekly_working_hours": "औसत साप्ताहिक कार्य घंटे", - "set_average_weekly_working_hours_for": "औसत साप्ताहिक कार्य घंटे निर्धारित करें", - "search_by_username": "उपयोगकर्ता नाम से खोजें", - "last_online": "अंतिम ऑनलाइन", - "total_users": "कुल उपयोगकर्ता" -} \ No newline at end of file + "username": "उपयोगकर्ता नाम", + "users": "उपयोगकर्ताओं", + "vehicle_preference": "वाहन वरीयता", + "vendor_name": "विक्रेता का नाम", + "view": "देखना", + "view_abdm_records": "ABDM रिकॉर्ड देखें", + "view_asset": "संपत्तियां देखें", + "view_details": "विवरण देखें", + "view_faciliy": "सुविधा देखें", + "view_patients": "मरीज़ देखें", + "view_users": "उपयोगकर्ता देखें", + "virtual_nursing_assistant": "वर्चुअल नर्सिंग सहायक", + "ward": "वार्ड", + "warranty_amc_expiry": "वारंटी / एएमसी समाप्ति", + "what_facility_assign_the_patient_to": "आप मरीज़ को कौन सी सुविधा देना चाहेंगे?", + "why_the_asset_is_not_working": "परिसंपत्ति काम क्यों नहीं कर रही है?", + "working_status": "कामकाजी स्थिति", + "yes": "हाँ", + "yet_to_be_decided": "अभी निर्णय होना बाकी", + "you_need_at_least_a_location_to_create_an_assest": "संपत्ति बनाने के लिए आपको कम से कम एक स्थान की आवश्यकता होगी।", + "zoom_in": "ज़ूम इन", + "zoom_out": "ज़ूम आउट" +} diff --git a/src/Locale/kn.json b/src/Locale/kn.json index a2738edd9e9..acaebe8e421 100644 --- a/src/Locale/kn.json +++ b/src/Locale/kn.json @@ -1,813 +1,813 @@ { - "create_asset": "ಆಸ್ತಿಯನ್ನು ರಚಿಸಿ", - "edit_history": "ಇತಿಹಾಸವನ್ನು ಸಂಪಾದಿಸಿ", - "update_record_for_asset": "ಆಸ್ತಿಗಾಗಿ ದಾಖಲೆಯನ್ನು ನವೀಕರಿಸಿ", - "edited_on": "ರಂದು ಸಂಪಾದಿಸಲಾಗಿದೆ", - "edited_by": "ಸಂಪಾದಿಸಿದವರು", - "serviced_on": "ಸೇವೆ ಸಲ್ಲಿಸಲಾಗಿದೆ", - "notes": "ಟಿಪ್ಪಣಿಗಳು", - "back": "ಹಿಂದೆ", - "close": "ಮುಚ್ಚಿ", - "update_asset_service_record": "ಸ್ವತ್ತು ಸೇವಾ ದಾಖಲೆಯನ್ನು ನವೀಕರಿಸಿ", - "eg_details_on_functionality_service_etc": "ಉದಾ. ಕಾರ್ಯನಿರ್ವಹಣೆ, ಸೇವೆ ಇತ್ಯಾದಿಗಳ ವಿವರಗಳು.", - "updating": "ನವೀಕರಿಸಲಾಗುತ್ತಿದೆ", - "update": "ನವೀಕರಿಸಿ", - "are_you_still_watching": "ನೀವು ಇನ್ನೂ ನೋಡುತ್ತಿದ್ದೀರಾ?", - "stream_stop_due_to_inativity": "ನಿಷ್ಕ್ರಿಯತೆಯ ಕಾರಣ ಲೈವ್ ಫೀಡ್ ಸ್ಟ್ರೀಮಿಂಗ್ ಅನ್ನು ನಿಲ್ಲಿಸುತ್ತದೆ", - "stream_stopped_due_to_inativity": "ನಿಷ್ಕ್ರಿಯತೆಯಿಂದಾಗಿ ಲೈವ್ ಫೀಡ್ ಸ್ಟ್ರೀಮಿಂಗ್ ಅನ್ನು ನಿಲ್ಲಿಸಿದೆ", - "continue_watching": "ನೋಡುವುದನ್ನು ಮುಂದುವರಿಸಿ", - "resume": "ಪುನರಾರಂಭಿಸಿ", - "username": "ಬಳಕೆದಾರ ಹೆಸರು", - "password": "ಪಾಸ್ವರ್ಡ್", - "new_password": "ಹೊಸ ಪಾಸ್ವರ್ಡ್", - "confirm_password": "ಪಾಸ್ವರ್ಡ್ ದೃಢೀಕರಿಸಿ", - "first_name": "ಮೊದಲ ಹೆಸರು", - "last_name": "ಕೊನೆಯ ಹೆಸರು", - "email": "ಇಮೇಲ್ ವಿಳಾಸ", - "phone_number": "ದೂರವಾಣಿ ಸಂಖ್ಯೆ", - "district": "ಜಿಲ್ಲೆ", - "gender": "ಲಿಂಗ", - "age": "ವಯಸ್ಸು", - "login": "ಲಾಗಿನ್", - "password_mismatch": "ಪಾಸ್ವರ್ಡ್ ಮತ್ತು ದೃಢೀಕರಣ ಪಾಸ್ವರ್ಡ್ ಒಂದೇ ಆಗಿರಬೇಕು.", - "enter_valid_age": "ದಯವಿಟ್ಟು ಮಾನ್ಯವಾದ ವಯಸ್ಸನ್ನು ನಮೂದಿಸಿ", - "invalid_username": "ಅಗತ್ಯವಿದೆ. 150 ಅಕ್ಷರಗಳು ಅಥವಾ ಕಡಿಮೆ. ಅಕ್ಷರಗಳು, ಅಂಕೆಗಳು ಮತ್ತು @/./+/-/_ ಮಾತ್ರ.", - "invalid_password": "ಪಾಸ್ವರ್ಡ್ ಅವಶ್ಯಕತೆಗಳನ್ನು ಪೂರೈಸುವುದಿಲ್ಲ", - "invalid_email": "ದಯವಿಟ್ಟು ಸರಿಯಾದ ಇಮೇಲ್ ವಿಳಾಸವನ್ನು ನಮೂದಿಸಿ", - "invalid_phone": "ದಯವಿಟ್ಟು ಮಾನ್ಯವಾದ ಫೋನ್ ಸಂಖ್ಯೆಯನ್ನು ನಮೂದಿಸಿ", - "register_hospital": "ಆಸ್ಪತ್ರೆಯನ್ನು ನೋಂದಾಯಿಸಿ", - "register_page_title": "ಆಸ್ಪತ್ರೆ ನಿರ್ವಾಹಕರಾಗಿ ನೋಂದಾಯಿಸಿ", - "auth_login_title": "ಅಧಿಕೃತ ಲಾಗಿನ್", - "forget_password": "ಪಾಸ್ವರ್ಡ್ ಮರೆತಿರಾ?", - "forget_password_instruction": "ನಿಮ್ಮ ಬಳಕೆದಾರ ಹೆಸರನ್ನು ನಮೂದಿಸಿ ಮತ್ತು ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಮರುಹೊಂದಿಸಲು ನಾವು ನಿಮಗೆ ಲಿಂಕ್ ಅನ್ನು ಕಳುಹಿಸುತ್ತೇವೆ.", - "send_reset_link": "ಮರುಹೊಂದಿಸುವ ಲಿಂಕ್ ಕಳುಹಿಸಿ", - "already_a_member": "ಈಗಾಗಲೇ ಸದಸ್ಯರೇ?", - "password_sent": "ಪಾಸ್ವರ್ಡ್ ಮರುಹೊಂದಿಸುವ ಇಮೇಲ್ ಕಳುಹಿಸಲಾಗಿದೆ", - "password_reset_success": "ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಮರುಹೊಂದಿಸಲಾಗಿದೆ", - "password_reset_failure": "ಪಾಸ್ವರ್ಡ್ ಮರುಹೊಂದಿಸಲು ವಿಫಲವಾಗಿದೆ", - "reset_password": "ಪಾಸ್ವರ್ಡ್ ಮರುಹೊಂದಿಸಿ", - "available_in": "ಲಭ್ಯವಿರುವ ಭಾಷೆಗಳು", - "sign_out": "ಸೈನ್ ಔಟ್ ಮಾಡಿ", - "back_to_login": "ಲಾಗಿನ್ ಪುಟಕ್ಕೆ ಹಿಂತಿರುಗಿ", - "min_password_len_8": "ಕನಿಷ್ಠ ಪಾಸ್‌ವರ್ಡ್ ಉದ್ದ 8", - "req_atleast_one_digit": "ಕನಿಷ್ಠ ಒಂದು ಅಂಕಿ ಅಗತ್ಯವಿದೆ", - "req_atleast_one_uppercase": "ಕನಿಷ್ಠ ಒಂದು ದೊಡ್ಡ ಪ್ರಕರಣದ ಅಗತ್ಯವಿದೆ", - "req_atleast_one_lowercase": "ಕನಿಷ್ಠ ಒಂದು ಸಣ್ಣ ಅಕ್ಷರದ ಅಗತ್ಯವಿದೆ", - "req_atleast_one_symbol": "ಕನಿಷ್ಠ ಒಂದು ಚಿಹ್ನೆಯ ಅಗತ್ಯವಿದೆ", - "bed_search_placeholder": "ಹಾಸಿಗೆಗಳ ಹೆಸರಿನ ಮೂಲಕ ಹುಡುಕಿ", + "404_message": "ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲದ ಅಥವಾ ಇನ್ನೊಂದು URL ಗೆ ಸರಿಸಿದ ಪುಟದಲ್ಲಿ ನೀವು ಎಡವಿ ಬಿದ್ದಿರುವಂತೆ ತೋರುತ್ತಿದೆ. ನೀವು ಸರಿಯಾದ ಲಿಂಕ್ ಅನ್ನು ನಮೂದಿಸಿದ್ದೀರಿ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ!", + "AUTOMATED": "ಸ್ವಯಂಚಾಲಿತ", + "Assets": "ಸ್ವತ್ತುಗಳು", "BED_WITH_OXYGEN_SUPPORT": "ಆಮ್ಲಜನಕ ಬೆಂಬಲದೊಂದಿಗೆ ಬೆಡ್", - "REGULAR": "ನಿಯಮಿತ", + "CONSCIOUSNESS_LEVEL__AGITATED_OR_CONFUSED": "ಕ್ಷೋಭೆ ಅಥವಾ ಗೊಂದಲ", + "CONSCIOUSNESS_LEVEL__ALERT": "ಎಚ್ಚರಿಕೆ", + "CONSCIOUSNESS_LEVEL__ONSET_OF_AGITATION_AND_CONFUSION": "ಆಂದೋಲನ ಮತ್ತು ಗೊಂದಲದ ಆರಂಭ", + "CONSCIOUSNESS_LEVEL__RESPONDS_TO_PAIN": "ನೋವಿಗೆ ಸ್ಪಂದಿಸುತ್ತದೆ", + "CONSCIOUSNESS_LEVEL__RESPONDS_TO_VOICE": "ಧ್ವನಿಗೆ ಪ್ರತಿಕ್ರಿಯಿಸುತ್ತದೆ", + "CONSCIOUSNESS_LEVEL__UNRESPONSIVE": "ಪ್ರತಿಕ್ರಿಯಿಸದ", + "Cancel": "ರದ್ದುಮಾಡಿ", + "DD/MM/YYYY": "DD/MM/YYYY", + "DOCTORS_LOG": "ಪ್ರಗತಿ ಟಿಪ್ಪಣಿ", + "Dashboard": "ಡ್ಯಾಶ್‌ಬೋರ್ಡ್", + "Facilities": "ಸೌಲಭ್ಯಗಳು", + "GENDER__1": "ಪುರುಷ", + "GENDER__2": "ಹೆಣ್ಣು", + "GENDER__3": "ಬೈನರಿ ಅಲ್ಲದ", + "HEARTBEAT_RHYTHM__IRREGULAR": "ಅನಿಯಮಿತ", + "HEARTBEAT_RHYTHM__REGULAR": "ನಿಯಮಿತ", + "HEARTBEAT_RHYTHM__UNKNOWN": "ಅಜ್ಞಾತ", "ICU": "ಐಸಿಯು", + "INSULIN_INTAKE_FREQUENCY__BD": "ದಿನಕ್ಕೆ ಎರಡು ಬಾರಿ (BD)", + "INSULIN_INTAKE_FREQUENCY__OD": "ದಿನಕ್ಕೆ ಒಮ್ಮೆ (OD)", + "INSULIN_INTAKE_FREQUENCY__TD": "ದಿನಕ್ಕೆ ಮೂರು ಬಾರಿ (ಟಿಡಿ)", + "INSULIN_INTAKE_FREQUENCY__UNKNOWN": "ಅಜ್ಞಾತ", "ISOLATION": "ಪ್ರತ್ಯೇಕತೆ", - "add_beds": "ಬೆಡ್(ಗಳು) ಸೇರಿಸಿ", - "update_bed": "ಹಾಸಿಗೆಯನ್ನು ನವೀಕರಿಸಿ", - "bed_type": "ಹಾಸಿಗೆಯ ಪ್ರಕಾರ", - "make_multiple_beds_label": "ನೀವು ಬಹು ಹಾಸಿಗೆಗಳನ್ನು ಮಾಡಲು ಬಯಸುವಿರಾ?", - "number_of_beds": "ಹಾಸಿಗೆಗಳ ಸಂಖ್ಯೆ", - "number_of_beds_out_of_range_error": "ಹಾಸಿಗೆಗಳ ಸಂಖ್ಯೆ 100 ಕ್ಕಿಂತ ಹೆಚ್ಚಿರಬಾರದು", - "goal": "ಡಿಜಿಟಲ್ ಉಪಕರಣಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಸಾರ್ವಜನಿಕ ಆರೋಗ್ಯ ಸೇವೆಗಳ ಗುಣಮಟ್ಟ ಮತ್ತು ಪ್ರವೇಶವನ್ನು ನಿರಂತರವಾಗಿ ಸುಧಾರಿಸುವುದು ನಮ್ಮ ಗುರಿಯಾಗಿದೆ", - "something_wrong": "ಏನೋ ತಪ್ಪಾಗಿದೆ! ನಂತರ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ!", - "try_again_later": "ನಂತರ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ!", - "contribute_github": "GitHub ನಲ್ಲಿ ಕೊಡುಗೆ ನೀಡಿ", - "footer_body": "ಕೊರೊನಾಸೇಫ್ ನೆಟ್‌ವರ್ಕ್ ಎಂಬುದು ತೆರೆದ ಮೂಲ ಸಾರ್ವಜನಿಕ ಉಪಯುಕ್ತತೆಯಾಗಿದ್ದು, ನಾವೀನ್ಯಕಾರರು ಮತ್ತು ಸ್ವಯಂಸೇವಕರ ಬಹು-ಶಿಸ್ತಿನ ತಂಡದಿಂದ ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ. ಕರೋನಾ ಸೇಫ್ ಕೇರ್ ವಿಶ್ವಸಂಸ್ಥೆಯಿಂದ ಗುರುತಿಸಲ್ಪಟ್ಟ ಡಿಜಿಟಲ್ ಸಾರ್ವಜನಿಕ ಸೇವೆಯಾಗಿದೆ.", - "reset": "ಮರುಹೊಂದಿಸಿ", - "download": "ಡೌನ್‌ಲೋಡ್ ಮಾಡಿ", - "downloads": "ಡೌನ್‌ಲೋಡ್‌ಗಳು", - "downloading": "ಡೌನ್‌ಲೋಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ", - "generating": "ಉತ್ಪಾದಿಸುತ್ತಿದೆ", - "send_email": "ಇಮೇಲ್ ಕಳುಹಿಸಿ", - "email_address": "ಇಮೇಲ್ ವಿಳಾಸ", - "email_success": "ನಾವು ಶೀಘ್ರದಲ್ಲೇ ಇಮೇಲ್ ಕಳುಹಿಸುತ್ತೇವೆ. ದಯವಿಟ್ಟು ನಿಮ್ಮ ಇನ್‌ಬಾಕ್ಸ್ ಪರಿಶೀಲಿಸಿ.", - "disclaimer": "ಹಕ್ಕು ನಿರಾಕರಣೆ", - "category": "ವರ್ಗ", - "sub_category": "ಉಪ ವರ್ಗ", - "download_type": "ಡೌನ್‌ಲೋಡ್ ಪ್ರಕಾರ", - "state": "ರಾಜ್ಯ", - "location": "ಸ್ಥಳ", - "ward": "ವಾರ್ಡ್", + "KASP Empanelled": "ಕೆಎಎಸ್ಪಿ ಎಂಪನೇಲ್ಡ್", + "LIMB_RESPONSE__EXTENSION": "ವಿಸ್ತರಣೆ", + "LIMB_RESPONSE__FLEXION": "ಬಾಗುವಿಕೆ", + "LIMB_RESPONSE__MODERATE": "ಮಧ್ಯಮ", + "LIMB_RESPONSE__NONE": "ಯಾವುದೂ ಇಲ್ಲ", + "LIMB_RESPONSE__STRONG": "ಬಲಶಾಲಿ", + "LIMB_RESPONSE__UNKNOWN": "ಅಜ್ಞಾತ", + "LIMB_RESPONSE__WEAK": "ದುರ್ಬಲ", + "NORMAL": "ಸಂಕ್ಷಿಪ್ತ ನವೀಕರಣ", + "NURSING_CARE_PROCEDURE__catheter_care": "ಕ್ಯಾತಿಟರ್ ಕೇರ್", + "NURSING_CARE_PROCEDURE__chest_tube_care": "ಚೆಸ್ಟ್ ಟ್ಯೂಬ್ ಕೇರ್", + "NURSING_CARE_PROCEDURE__dressing": "ಡ್ರೆಸ್ಸಿಂಗ್", + "NURSING_CARE_PROCEDURE__dvt_pump_stocking": "DVT ಪಂಪ್ ಸ್ಟಾಕಿಂಗ್", + "NURSING_CARE_PROCEDURE__iv_sitecare": "IV ಸೈಟ್ ಕೇರ್", + "NURSING_CARE_PROCEDURE__nubulisation": "ನೂಬುಲೈಸೇಶನ್", + "NURSING_CARE_PROCEDURE__personal_hygiene": "ವೈಯಕ್ತಿಕ ನೈರ್ಮಲ್ಯ", + "NURSING_CARE_PROCEDURE__positioning": "ಸ್ಥಾನೀಕರಣ", + "NURSING_CARE_PROCEDURE__restrain": "ನಿಗ್ರಹಿಸಿ", + "NURSING_CARE_PROCEDURE__ryles_tube_care": "ರೈಲ್ಸ್ ಟ್ಯೂಬ್ ಕೇರ್", + "NURSING_CARE_PROCEDURE__stoma_care": "ಸ್ಟೊಮಾ ಕೇರ್", + "NURSING_CARE_PROCEDURE__suctioning": "ಹೀರುವುದು", + "NURSING_CARE_PROCEDURE__tracheostomy_care": "ಟ್ರಾಕಿಯೊಸ್ಟೊಮಿ ಕೇರ್", "Notice Board": "ಸೂಚನಾ ಫಲಕ", - "Assets": "ಸ್ವತ್ತುಗಳು", "Notifications": "ಅಧಿಸೂಚನೆಗಳು", + "OXYGEN_MODALITY__HIGH_FLOW_NASAL_CANNULA": "ಹೈ ಫ್ಲೋ ನಾಸಲ್ ಕ್ಯಾನುಲಾ", + "OXYGEN_MODALITY__NASAL_PRONGS": "ಮೂಗಿನ ಪ್ರಾಂಗ್ಸ್", + "OXYGEN_MODALITY__NON_REBREATHING_MASK": "ನಾನ್ ರಿಬ್ರೆಥಿಂಗ್ ಮಾಸ್ಕ್", + "OXYGEN_MODALITY__SIMPLE_FACE_MASK": "ಸರಳ ಫೇಸ್ ಮಾಸ್ಕ್", + "PRESCRIPTION_FREQUENCY_BD": "ದಿನಕ್ಕೆ ಎರಡು ಬಾರಿ", + "PRESCRIPTION_FREQUENCY_HS": "ರಾತ್ರಿ ಮಾತ್ರ", + "PRESCRIPTION_FREQUENCY_OD": "ದಿನಕ್ಕೆ ಒಮ್ಮೆ", + "PRESCRIPTION_FREQUENCY_Q4H": "4 ನೇ ಗಂಟೆಗೆ", + "PRESCRIPTION_FREQUENCY_QID": "6 ನೇ ಗಂಟೆಗೆ", + "PRESCRIPTION_FREQUENCY_QOD": "ಪರ್ಯಾಯ ದಿನ", + "PRESCRIPTION_FREQUENCY_QWK": "ವಾರಕ್ಕೊಮ್ಮೆ", + "PRESCRIPTION_FREQUENCY_STAT": "ತಕ್ಷಣವೇ", + "PRESCRIPTION_FREQUENCY_TID": "8 ನೇ ಗಂಟೆಗೆ", + "PRESCRIPTION_ROUTE_IM": "IM", + "PRESCRIPTION_ROUTE_INHALATION": "ಇನ್ಹಲೇಷನ್", + "PRESCRIPTION_ROUTE_INTRATHECAL": "ಇಂಟ್ರಾಥೆಕಲ್ ಇಂಜೆಕ್ಷನ್", + "PRESCRIPTION_ROUTE_IV": "IV", + "PRESCRIPTION_ROUTE_NASOGASTRIC": "ನಾಸೊಗ್ಯಾಸ್ಟ್ರಿಕ್ / ಗ್ಯಾಸ್ಟ್ರೋಸ್ಟೊಮಿ ಟ್ಯೂಬ್", + "PRESCRIPTION_ROUTE_ORAL": "ಮೌಖಿಕ", + "PRESCRIPTION_ROUTE_RECTAL": "ಗುದನಾಳ", + "PRESCRIPTION_ROUTE_SC": "ಎಸ್/ಸಿ", + "PRESCRIPTION_ROUTE_SUBLINGUAL": "ಉಪಭಾಷೆ", + "PRESCRIPTION_ROUTE_TRANSDERMAL": "ಟ್ರಾನ್ಸ್ಡರ್ಮಲ್", + "PUPIL_REACTION__BRISK": "ಚುರುಕಾದ", + "PUPIL_REACTION__CANNOT_BE_ASSESSED": "ಮೌಲ್ಯಮಾಪನ ಮಾಡಲಾಗುವುದಿಲ್ಲ", + "PUPIL_REACTION__FIXED": "ನಿವಾರಿಸಲಾಗಿದೆ", + "PUPIL_REACTION__SLUGGISH": "ಜಡ", + "PUPIL_REACTION__UNKNOWN": "ಅಜ್ಞಾತ", + "Patients": "ರೋಗಿಗಳು", + "Profile": "ಪ್ರೊಫೈಲ್", + "REGULAR": "ನಿಯಮಿತ", + "RESPIRATORY_SUPPORT_SHORT__INVASIVE": "IV", + "RESPIRATORY_SUPPORT_SHORT__NON_INVASIVE": "NIV", + "RESPIRATORY_SUPPORT_SHORT__OXYGEN_SUPPORT": "O2 ಬೆಂಬಲ", + "RESPIRATORY_SUPPORT_SHORT__UNKNOWN": "ಯಾವುದೂ ಇಲ್ಲ", + "RESPIRATORY_SUPPORT__INVASIVE": "ಆಕ್ರಮಣಕಾರಿ ವೆಂಟಿಲೇಟರ್ (IV)", + "RESPIRATORY_SUPPORT__NON_INVASIVE": "ನಾನ್-ಇನ್ವೇಸಿವ್ ವೆಂಟಿಲೇಟರ್ (NIV)", + "RESPIRATORY_SUPPORT__OXYGEN_SUPPORT": "ಆಮ್ಲಜನಕ ಬೆಂಬಲ", + "RESPIRATORY_SUPPORT__UNKNOWN": "ಯಾವುದೂ ಇಲ್ಲ", + "Resource": "ಸಂಪನ್ಮೂಲ", + "SORT_OPTIONS__-bed__name": "ಹಾಸಿಗೆ ಸಂಖ್ಯೆ N-1", + "SORT_OPTIONS__-category_severity": "ಅತ್ಯಧಿಕ ತೀವ್ರತೆಯ ವಿಭಾಗ ಮೊದಲು", + "SORT_OPTIONS__-created_date": "ಇತ್ತೀಚಿಗೆ ರಚಿಸಿದ ದಿನಾಂಕ ಮೊದಲು", + "SORT_OPTIONS__-modified_date": "ಮೊದಲು ಇತ್ತೀಚಿನ ನವೀಕರಿಸಿದ ದಿನಾಂಕ", + "SORT_OPTIONS__-name": "ರೋಗಿಯ ಹೆಸರು ZA", + "SORT_OPTIONS__-review_time": "ಇತ್ತೀಚಿನ ವಿಮರ್ಶೆ ದಿನಾಂಕ ಮೊದಲು", + "SORT_OPTIONS__-taken_at": "ಇತ್ತೀಚೆಗೆ ತೆಗೆದುಕೊಂಡ ದಿನಾಂಕ ಮೊದಲು", + "SORT_OPTIONS__bed__name": "ಹಾಸಿಗೆ ಸಂಖ್ಯೆ 1-N", + "SORT_OPTIONS__category_severity": "ಕಡಿಮೆ ತೀವ್ರತೆಯ ವರ್ಗ ಮೊದಲು", + "SORT_OPTIONS__created_date": "ಮೊದಲು ರಚಿಸಿದ ಹಳೆಯ ದಿನಾಂಕ", + "SORT_OPTIONS__facility__name,-last_consultation__current_bed__bed__name": "ಹಾಸಿಗೆ ಸಂಖ್ಯೆ N-1", + "SORT_OPTIONS__facility__name,last_consultation__current_bed__bed__name": "ಹಾಸಿಗೆ ಸಂಖ್ಯೆ 1-N", + "SORT_OPTIONS__modified_date": "ಹಳೆಯ ನವೀಕರಿಸಿದ ದಿನಾಂಕ ಮೊದಲು", + "SORT_OPTIONS__name": "ರೋಗಿಯ ಹೆಸರು AZ", + "SORT_OPTIONS__review_time": "ಹಳೆಯ ವಿಮರ್ಶೆ ದಿನಾಂಕ ಮೊದಲು", + "SORT_OPTIONS__taken_at": "ಹಳೆಯ ತೆಗೆದ ದಿನಾಂಕ ಮೊದಲು", + "SORT_OPTIONS__unsupported_browser_description": "ನಿಮ್ಮ ಬ್ರೌಸರ್ ({{name}} ಆವೃತ್ತಿ {{version}}) ಬೆಂಬಲಿತವಾಗಿಲ್ಲ. ದಯವಿಟ್ಟು ನಿಮ್ಮ ಬ್ರೌಸರ್ ಅನ್ನು ಇತ್ತೀಚಿನ ಆವೃತ್ತಿಗೆ ನವೀಕರಿಸಿ ಅಥವಾ ಉತ್ತಮ ಅನುಭವಕ್ಕಾಗಿ ಬೆಂಬಲಿತ ಬ್ರೌಸರ್‌ಗೆ ಬದಲಿಸಿ.", + "Sample Test": "ಮಾದರಿ ಪರೀಕ್ಷೆ", + "Shifting": "ಸ್ಥಳಾಂತರ", "Submit": "ಸಲ್ಲಿಸಿ", - "Cancel": "ರದ್ದುಮಾಡಿ", - "powered_by": "ನಡೆಸಲ್ಪಡುತ್ತಿದೆ", - "care": "ಕಾಳಜಿ", - "something_went_wrong": "ಏನೋ ತಪ್ಪಾಗಿದೆ..!", - "stop": "ನಿಲ್ಲಿಸು", - "record": "ರೆಕಾರ್ಡ್ ಆಡಿಯೋ", - "recording": "ರೆಕಾರ್ಡಿಂಗ್", - "yes": "ಹೌದು", - "no": "ಸಂ", - "status": "ಸ್ಥಿತಿ", - "created": "ರಚಿಸಲಾಗಿದೆ", - "modified": "ಮಾರ್ಪಡಿಸಲಾಗಿದೆ", - "updated": "ನವೀಕರಿಸಲಾಗಿದೆ", - "configure": "ಕಾನ್ಫಿಗರ್ ಮಾಡಿ", - "assigned_to": "ಗೆ ನಿಯೋಜಿಸಲಾಗಿದೆ", - "cancel": "ರದ್ದುಮಾಡಿ", - "clear": "ತೆರವುಗೊಳಿಸಿ", - "apply": "ಅನ್ವಯಿಸು", - "filter_by": "ಮೂಲಕ ಫಿಲ್ಟರ್ ಮಾಡಿ", - "filter": "ಫಿಲ್ಟರ್", - "settings_and_filters": "ಸೆಟ್ಟಿಂಗ್‌ಗಳು ಮತ್ತು ಫಿಲ್ಟರ್‌ಗಳು", - "ordering": "ಆರ್ಡರ್ ಮಾಡಲಾಗುತ್ತಿದೆ", - "international_mobile": "ಅಂತಾರಾಷ್ಟ್ರೀಯ ಮೊಬೈಲ್", - "indian_mobile": "ಭಾರತೀಯ ಮೊಬೈಲ್", - "mobile": "ಮೊಬೈಲ್", - "landline": "ಭಾರತೀಯ ಸ್ಥಿರ ದೂರವಾಣಿ", - "support": "ಬೆಂಬಲ", - "emergency_contact_number": "ತುರ್ತು ಸಂಪರ್ಕ ಸಂಖ್ಯೆ", - "last_modified": "ಕೊನೆಯದಾಗಿ ಮಾರ್ಪಡಿಸಲಾಗಿದೆ", - "patient_address": "ರೋಗಿಯ ವಿಳಾಸ", - "all_details": "ಎಲ್ಲಾ ವಿವರಗಳು", - "confirm": "ದೃಢೀಕರಿಸಿ", - "refresh_list": "ಪಟ್ಟಿಯನ್ನು ರಿಫ್ರೆಶ್ ಮಾಡಿ", - "last_edited": "ಕೊನೆಯದಾಗಿ ಸಂಪಾದಿಸಲಾಗಿದೆ", - "audit_log": "ಆಡಿಟ್ ಲಾಗ್", - "comments": "ಕಾಮೆಂಟ್‌ಗಳು", - "contact_person_number": "ಸಂಪರ್ಕ ವ್ಯಕ್ತಿಯ ಸಂಖ್ಯೆ", - "referral_letter": "ಉಲ್ಲೇಖ ಪತ್ರ", - "print": "ಮುದ್ರಿಸು", - "print_referral_letter": "ರೆಫರಲ್ ಲೆಟರ್ ಅನ್ನು ಮುದ್ರಿಸಿ", - "date_of_positive_covid_19_swab": "ಧನಾತ್ಮಕ ಕೋವಿಡ್ 19 ಸ್ವ್ಯಾಬ್ ದಿನಾಂಕ", - "patient_no": "OP/IP ಸಂ", - "date_of_admission": "ಪ್ರವೇಶ ದಿನಾಂಕ", - "india_1": "ಭಾರತ", - "unique_id": "ವಿಶಿಷ್ಟ ಐಡಿ", - "date_and_time": "ದಿನಾಂಕ ಮತ್ತು ಸಮಯ", - "facility_type": "ಸೌಲಭ್ಯದ ಪ್ರಕಾರ", - "number_of_chronic_diseased_dependents": "ದೀರ್ಘಕಾಲದ ರೋಗಗಳ ಅವಲಂಬಿತರ ಸಂಖ್ಯೆ", - "number_of_aged_dependents_above_60": "ವಯಸ್ಸಾದ ಅವಲಂಬಿತರ ಸಂಖ್ಯೆ (60 ಕ್ಕಿಂತ ಹೆಚ್ಚು)", - "ongoing_medications": "ನಡೆಯುತ್ತಿರುವ ಔಷಧಿಗಳು", - "countries_travelled": "ದೇಶಗಳು ಸಂಚರಿಸಿದವು", - "travel_within_last_28_days": "ದೇಶೀಯ/ಅಂತರರಾಷ್ಟ್ರೀಯ ಪ್ರಯಾಣ (ಕಳೆದ 28 ದಿನಗಳಲ್ಲಿ)", - "estimated_contact_date": "ಅಂದಾಜು ಸಂಪರ್ಕ ದಿನಾಂಕ", - "blood_group": "ರಕ್ತದ ಗುಂಪು", - "date_of_birth": "ಹುಟ್ಟಿದ ದಿನಾಂಕ", - "date_of_test": "ಪರೀಕ್ಷೆಯ ದಿನಾಂಕ", - "srf_id": "SRF ID", - "contact_number": "ಸಂಪರ್ಕ ಸಂಖ್ಯೆ", - "diagnosis": "ರೋಗನಿರ್ಣಯ", - "copied_to_clipboard": "ಕ್ಲಿಪ್‌ಬೋರ್ಡ್‌ಗೆ ನಕಲಿಸಲಾಗಿದೆ", - "is": "ಆಗಿದೆ", - "reason": "ಕಾರಣ", - "description": "ವಿವರಣೆ", - "name": "ಹೆಸರು", - "address": "ವಿಳಾಸ", - "phone": "ಫೋನ್", - "nationality": "ರಾಷ್ಟ್ರೀಯತೆ", - "allergies": "ಅಲರ್ಜಿಗಳು", - "type_your_comment": "ನಿಮ್ಮ ಕಾಮೆಂಟ್ ಅನ್ನು ಟೈಪ್ ಮಾಡಿ", - "any_other_comments": "ಯಾವುದೇ ಇತರ ಕಾಮೆಂಟ್‌ಗಳು", - "loading": "ಲೋಡ್ ಆಗುತ್ತಿದೆ...", - "facility": "ಸೌಲಭ್ಯ", - "local_body": "ಸ್ಥಳೀಯ ಸಂಸ್ಥೆ", - "filters": "ಶೋಧಕಗಳು", - "unknown": "ಅಜ್ಞಾತ", + "TELEMEDICINE": "ಟೆಲಿಮೆಡಿಸಿನ್", + "Users": "ಬಳಕೆದಾರರು", + "VENTILATOR": "ವಿವರವಾದ ನವೀಕರಣ", + "VENTILATOR_MODE__CMV": "ಕಂಟ್ರೋಲ್ ಮೆಕ್ಯಾನಿಕಲ್ ವೆಂಟಿಲೇಷನ್ (CMV)", + "VENTILATOR_MODE__PCV": "ಪ್ರೆಶರ್ ಕಂಟ್ರೋಲ್ ವೆಂಟಿಲೇಷನ್ (PCV)", + "VENTILATOR_MODE__PC_SIMV": "ಒತ್ತಡ ನಿಯಂತ್ರಿತ SIMV (PC-SIMV)", + "VENTILATOR_MODE__PSV": "C-PAP / ಪ್ರೆಶರ್ ಸಪೋರ್ಟ್ ವೆಂಟಿಲೇಷನ್ (PSV)", + "VENTILATOR_MODE__SIMV": "ಸಿಂಕ್ರೊನೈಸ್ ಮಾಡಿದ ಮಧ್ಯಂತರ ಕಡ್ಡಾಯ ವಾತಾಯನ (SIMV)", + "VENTILATOR_MODE__VCV": "ವಾಲ್ಯೂಮ್ ಕಂಟ್ರೋಲ್ ವೆಂಟಿಲೇಶನ್ (VCV)", + "VENTILATOR_MODE__VC_SIMV": "ವಾಲ್ಯೂಮ್ ಕಂಟ್ರೋಲ್ಡ್ SIMV (VC-SIMV)", + "View Facility": "ವೀಕ್ಷಣೆ ಸೌಲಭ್ಯ", + "action_irreversible": "ಈ ಕ್ರಿಯೆಯು ಬದಲಾಯಿಸಲಾಗದು", "active": "ಸಕ್ರಿಯ", - "completed": "ಪೂರ್ಣಗೊಂಡಿದೆ", - "on": "ಆನ್", - "open": "ತೆರೆಯಿರಿ", - "features": "ವೈಶಿಷ್ಟ್ಯಗಳು", - "pincode": "ಪಿನ್‌ಕೋಡ್", - "required": "ಅಗತ್ಯವಿದೆ", - "field_required": "ಈ ಕ್ಷೇತ್ರದ ಅಗತ್ಯವಿದೆ", - "litres": "ಲೀಟರ್", - "litres_per_day": "ಲೀಟರ್ / ದಿನ", - "invalid_pincode": "ಅಮಾನ್ಯವಾದ ಪಿನ್‌ಕೋಡ್", - "invalid_phone_number": "ಅಮಾನ್ಯವಾದ ಫೋನ್ ಸಂಖ್ಯೆ", - "latitude_invalid": "ಅಕ್ಷಾಂಶವು -90 ಮತ್ತು 90 ರ ನಡುವೆ ಇರಬೇಕು", - "longitude_invalid": "ರೇಖಾಂಶವು -180 ಮತ್ತು 180 ರ ನಡುವೆ ಇರಬೇಕು", - "save": "ಉಳಿಸಿ", - "continue": "ಮುಂದುವರಿಸಿ", - "save_and_continue": "ಉಳಿಸಿ ಮತ್ತು ಮುಂದುವರಿಸಿ", - "select": "ಆಯ್ಕೆ ಮಾಡಿ", - "lsg": "Lsg", - "delete": "ಅಳಿಸಿ", - "remove": "ತೆಗೆದುಹಾಕಿ", - "max_size_for_image_uploaded_should_be": "ಅಪ್‌ಲೋಡ್ ಮಾಡಿದ ಚಿತ್ರಕ್ಕೆ ಗರಿಷ್ಠ ಗಾತ್ರ ಇರಬೇಕು", - "allowed_formats_are": "ಅನುಮತಿಸಲಾದ ಸ್ವರೂಪಗಳು", - "recommended_aspect_ratio_for": "ಇದಕ್ಕಾಗಿ ಶಿಫಾರಸು ಮಾಡಲಾದ ಆಕಾರ ಅನುಪಾತ", - "drag_drop_image_to_upload": "ಅಪ್‌ಲೋಡ್ ಮಾಡಲು ಚಿತ್ರವನ್ನು ಎಳೆಯಿರಿ ಮತ್ತು ಬಿಡಿ", - "upload_an_image": "ಚಿತ್ರವನ್ನು ಅಪ್‌ಲೋಡ್ ಮಾಡಿ", - "upload": "ಅಪ್ಲೋಡ್ ಮಾಡಿ", - "uploading": "ಅಪ್‌ಲೋಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ", - "switch": "ಬದಲಿಸಿ", - "capture": "ಸೆರೆಹಿಡಿಯಿರಿ", - "retake": "ಮರುಪಡೆಯಿರಿ", - "submit": "ಸಲ್ಲಿಸಿ", - "camera": "ಕ್ಯಾಮೆರಾ", - "camera_permission_denied": "ಕ್ಯಾಮೆರಾ ಅನುಮತಿ ನಿರಾಕರಿಸಲಾಗಿದೆ", - "submitting": "ಸಲ್ಲಿಸಲಾಗುತ್ತಿದೆ", - "view_details": "ವಿವರಗಳನ್ನು ವೀಕ್ಷಿಸಿ", - "type_to_search": "ಹುಡುಕಲು ಟೈಪ್ ಮಾಡಿ", - "show_all": "ಎಲ್ಲವನ್ನೂ ತೋರಿಸು", - "hide": "ಮರೆಮಾಡಿ", - "select_skills": "ಕೆಲವು ಕೌಶಲ್ಯಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ ಮತ್ತು ಸೇರಿಸಿ", - "contact_your_admin_to_add_skills": "ಕೌಶಲ್ಯಗಳನ್ನು ಸೇರಿಸಲು ನಿಮ್ಮ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ", + "active_prescriptions": "ಸಕ್ರಿಯ ಪ್ರಿಸ್ಕ್ರಿಪ್ಷನ್ಗಳು", "add": "ಸೇರಿಸಿ", "add_as": "ಎಂದು ಸೇರಿಸಿ", - "sort_by": "ವಿಂಗಡಿಸಿ", - "none": "ಯಾವುದೂ ಇಲ್ಲ", - "choose_file": "ಸಾಧನದಿಂದ ಅಪ್ಲೋಡ್ ಮಾಡಿ", - "open_camera": "ಕ್ಯಾಮರಾ ತೆರೆಯಿರಿ", - "file_preview": "ಫೈಲ್ ಪೂರ್ವವೀಕ್ಷಣೆ", - "file_preview_not_supported": "ಈ ಫೈಲ್ ಅನ್ನು ಪೂರ್ವವೀಕ್ಷಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ಅದನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡಲು ಪ್ರಯತ್ನಿಸಿ.", - "view_faciliy": "ವೀಕ್ಷಣೆ ಸೌಲಭ್ಯ", - "view_patients": "ರೋಗಿಗಳನ್ನು ವೀಕ್ಷಿಸಿ", - "frequency": "ಆವರ್ತನ", - "days": "ದಿನಗಳು", - "never": "ಎಂದಿಗೂ", + "add_beds": "ಬೆಡ್(ಗಳು) ಸೇರಿಸಿ", + "add_details_of_patient": "ರೋಗಿಯ ವಿವರಗಳನ್ನು ಸೇರಿಸಿ", + "add_location": "ಸ್ಥಳವನ್ನು ಸೇರಿಸಿ", + "add_new_user": "ಹೊಸ ಬಳಕೆದಾರರನ್ನು ಸೇರಿಸಿ", "add_notes": "ಟಿಪ್ಪಣಿಗಳನ್ನು ಸೇರಿಸಿ", - "notes_placeholder": "ನಿಮ್ಮ ಟಿಪ್ಪಣಿಗಳನ್ನು ಟೈಪ್ ಮಾಡಿ", - "optional": "ಐಚ್ಛಿಕ", - "discontinue": "ಸ್ಥಗಿತಗೊಳಿಸಿ", - "discontinued": "ಸ್ಥಗಿತಗೊಳಿಸಲಾಗಿದೆ", - "not_specified": "ನಿರ್ದಿಷ್ಟಪಡಿಸಲಾಗಿಲ್ಲ", + "add_prescription_medication": "ಪ್ರಿಸ್ಕ್ರಿಪ್ಷನ್ ಔಷಧಿಗಳನ್ನು ಸೇರಿಸಿ", + "add_prescription_to_consultation_note": "ಈ ಸಮಾಲೋಚನೆಗೆ ಹೊಸ ಪ್ರಿಸ್ಕ್ರಿಪ್ಷನ್ ಸೇರಿಸಿ.", + "add_prn_prescription": "PRN ಪ್ರಿಸ್ಕ್ರಿಪ್ಷನ್ ಸೇರಿಸಿ", + "address": "ವಿಳಾಸ", + "administer": "ನಿರ್ವಹಿಸು", + "administer_medicine": "ಔಷಧವನ್ನು ನಿರ್ವಹಿಸಿ", + "administer_medicines": "ಔಷಧಗಳನ್ನು ನಿರ್ವಹಿಸಿ", + "administer_selected_medicines": "ಆಯ್ದ ಔಷಧಗಳನ್ನು ನಿರ್ವಹಿಸಿ", + "administered_on": "ರಂದು ನಿರ್ವಹಿಸಲಾಗಿದೆ", + "administration_dosage_range_error": "ಡೋಸೇಜ್ ಪ್ರಾರಂಭ ಮತ್ತು ಗುರಿ ಡೋಸೇಜ್ ನಡುವೆ ಇರಬೇಕು", + "administration_notes": "ಆಡಳಿತ ಟಿಪ್ಪಣಿಗಳು", + "advanced_filters": "ಸುಧಾರಿತ ಫಿಲ್ಟರ್‌ಗಳು", + "age": "ವಯಸ್ಸು", "all_changes_have_been_saved": "ಎಲ್ಲಾ ಬದಲಾವಣೆಗಳನ್ನು ಉಳಿಸಲಾಗಿದೆ", - "no_data_found": "ಯಾವುದೇ ಡೇಟಾ ಕಂಡುಬಂದಿಲ್ಲ", - "edit": "ಸಂಪಾದಿಸು", - "clear_selection": "ಆಯ್ಕೆಯನ್ನು ತೆರವುಗೊಳಿಸಿ", - "select_date": "ದಿನಾಂಕವನ್ನು ಆಯ್ಕೆಮಾಡಿ", - "DD/MM/YYYY": "DD/MM/YYYY", - "clear_all_filters": "ಎಲ್ಲಾ ಫಿಲ್ಟರ್‌ಗಳನ್ನು ತೆರವುಗೊಳಿಸಿ", - "summary": "ಸಾರಾಂಶ", - "report": "ವರದಿ", - "treating_doctor": "ಚಿಕಿತ್ಸೆ ನೀಡುತ್ತಿರುವ ವೈದ್ಯರು", - "ration_card__NO_CARD": "ಕಾರ್ಡ್ ಅಲ್ಲದ ಹೋಲ್ಡರ್", - "ration_card__BPL": "ಬಿಪಿಎಲ್", - "ration_card__APL": "ಎಪಿಎಲ್", - "empty_date_time": "--:-- --; ------------", - "caution": "ಎಚ್ಚರಿಕೆ", - "feed_optimal_experience_for_phones": "ಅತ್ಯುತ್ತಮ ವೀಕ್ಷಣೆಯ ಅನುಭವಕ್ಕಾಗಿ, ನಿಮ್ಮ ಸಾಧನವನ್ನು ತಿರುಗಿಸಲು ಪರಿಗಣಿಸಿ.", - "feed_optimal_experience_for_apple_phones": "ಅತ್ಯುತ್ತಮ ವೀಕ್ಷಣೆಯ ಅನುಭವಕ್ಕಾಗಿ, ನಿಮ್ಮ ಸಾಧನವನ್ನು ತಿರುಗಿಸಲು ಪರಿಗಣಿಸಿ. ನಿಮ್ಮ ಸಾಧನದ ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ಸ್ವಯಂ-ತಿರುಗುವಿಕೆಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ.", - "action_irreversible": "ಈ ಕ್ರಿಯೆಯು ಬದಲಾಯಿಸಲಾಗದು", - "GENDER__1": "ಪುರುಷ", - "GENDER__2": "ಹೆಣ್ಣು", - "GENDER__3": "ಬೈನರಿ ಅಲ್ಲದ", - "normal": "ಸಾಮಾನ್ಯ", - "done": "ಮುಗಿದಿದೆ", - "view": "ವೀಕ್ಷಿಸಿ", - "rename": "ಮರುಹೆಸರಿಸು", - "more_info": "ಹೆಚ್ಚಿನ ಮಾಹಿತಿ", + "all_details": "ಎಲ್ಲಾ ವಿವರಗಳು", + "allergies": "ಅಲರ್ಜಿಗಳು", + "allowed_formats_are": "ಅನುಮತಿಸಲಾದ ಸ್ವರೂಪಗಳು", + "already_a_member": "ಈಗಾಗಲೇ ಸದಸ್ಯರೇ?", + "ambulance_driver_name": "ಆಂಬ್ಯುಲೆನ್ಸ್ ಚಾಲಕನ ಹೆಸರು", + "ambulance_number": "ಆಂಬ್ಯುಲೆನ್ಸ್ ನಂ", + "ambulance_phone_number": "ಆಂಬ್ಯುಲೆನ್ಸ್‌ನ ದೂರವಾಣಿ ಸಂಖ್ಯೆ", + "antenatal": "ಪ್ರಸವಪೂರ್ವ", + "any_other_comments": "ಯಾವುದೇ ಇತರ ಕಾಮೆಂಟ್‌ಗಳು", + "apply": "ಅನ್ವಯಿಸು", + "approved_by_district_covid_control_room": "ಜಿಲ್ಲಾ COVID ನಿಯಂತ್ರಣ ಕೊಠಡಿಯಿಂದ ಅನುಮೋದಿಸಲಾಗಿದೆ", + "approving_facility": "ಅನುಮೋದಿಸುವ ಸೌಲಭ್ಯದ ಹೆಸರು", "archive": "ಆರ್ಕೈವ್", - "discard": "ತಿರಸ್ಕರಿಸು", - "live": "ಲೈವ್", - "discharged": "ಡಿಸ್ಚಾರ್ಜ್ ಮಾಡಲಾಗಿದೆ", "archived": "ಆರ್ಕೈವ್ ಮಾಡಲಾಗಿದೆ", - "no_changes_made": "ಯಾವುದೇ ಬದಲಾವಣೆಗಳನ್ನು ಮಾಡಲಾಗಿಲ್ಲ", - "user_deleted_successfuly": "ಬಳಕೆದಾರರನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಅಳಿಸಲಾಗಿದೆ", - "users": "ಬಳಕೆದಾರರು", + "are_you_still_watching": "ನೀವು ಇನ್ನೂ ನೋಡುತ್ತಿದ್ದೀರಾ?", "are_you_sure_want_to_delete": "{{name}}ಅಳಿಸಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?", - "oxygen_information": "ಆಮ್ಲಜನಕ ಮಾಹಿತಿ", - "deleted_successfully": "{{name}} ಅನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಅಳಿಸಲಾಗಿದೆ", - "delete_item": "{{name}}ಅಳಿಸಿ", - "unsupported_browser": "ಬೆಂಬಲಿತವಲ್ಲದ ಬ್ರೌಸರ್", - "SORT_OPTIONS__unsupported_browser_description": "ನಿಮ್ಮ ಬ್ರೌಸರ್ ({{name}} ಆವೃತ್ತಿ {{version}}) ಬೆಂಬಲಿತವಾಗಿಲ್ಲ. ದಯವಿಟ್ಟು ನಿಮ್ಮ ಬ್ರೌಸರ್ ಅನ್ನು ಇತ್ತೀಚಿನ ಆವೃತ್ತಿಗೆ ನವೀಕರಿಸಿ ಅಥವಾ ಉತ್ತಮ ಅನುಭವಕ್ಕಾಗಿ ಬೆಂಬಲಿತ ಬ್ರೌಸರ್‌ಗೆ ಬದಲಿಸಿ.", - "SORT_OPTIONS__-created_date": "ಇತ್ತೀಚಿಗೆ ರಚಿಸಿದ ದಿನಾಂಕ ಮೊದಲು", - "SORT_OPTIONS__created_date": "ಮೊದಲು ರಚಿಸಿದ ಹಳೆಯ ದಿನಾಂಕ", - "SORT_OPTIONS__-category_severity": "ಅತ್ಯಧಿಕ ತೀವ್ರತೆಯ ವಿಭಾಗ ಮೊದಲು", - "SORT_OPTIONS__category_severity": "ಕಡಿಮೆ ತೀವ್ರತೆಯ ವರ್ಗ ಮೊದಲು", - "SORT_OPTIONS__-modified_date": "ಮೊದಲು ಇತ್ತೀಚಿನ ನವೀಕರಿಸಿದ ದಿನಾಂಕ", - "SORT_OPTIONS__modified_date": "ಹಳೆಯ ನವೀಕರಿಸಿದ ದಿನಾಂಕ ಮೊದಲು", - "SORT_OPTIONS__facility__name,last_consultation__current_bed__bed__name": "ಹಾಸಿಗೆ ಸಂಖ್ಯೆ 1-N", - "SORT_OPTIONS__facility__name,-last_consultation__current_bed__bed__name": "ಹಾಸಿಗೆ ಸಂಖ್ಯೆ N-1", - "SORT_OPTIONS__-review_time": "ಇತ್ತೀಚಿನ ವಿಮರ್ಶೆ ದಿನಾಂಕ ಮೊದಲು", - "SORT_OPTIONS__review_time": "ಹಳೆಯ ವಿಮರ್ಶೆ ದಿನಾಂಕ ಮೊದಲು", - "SORT_OPTIONS__taken_at": "ಹಳೆಯ ತೆಗೆದ ದಿನಾಂಕ ಮೊದಲು", - "SORT_OPTIONS__-taken_at": "ಇತ್ತೀಚೆಗೆ ತೆಗೆದುಕೊಂಡ ದಿನಾಂಕ ಮೊದಲು", - "SORT_OPTIONS__name": "ರೋಗಿಯ ಹೆಸರು AZ", - "SORT_OPTIONS__-name": "ರೋಗಿಯ ಹೆಸರು ZA", - "SORT_OPTIONS__bed__name": "ಹಾಸಿಗೆ ಸಂಖ್ಯೆ 1-N", - "SORT_OPTIONS__-bed__name": "ಹಾಸಿಗೆ ಸಂಖ್ಯೆ N-1", - "middleware_hostname": "ಮಿಡಲ್ವೇರ್ ಹೋಸ್ಟ್ ಹೆಸರು", - "local_ipaddress": "ಸ್ಥಳೀಯ IP ವಿಳಾಸ", - "no_consultation_updates": "ಸಮಾಲೋಚನೆಯ ನವೀಕರಣಗಳಿಲ್ಲ", - "consultation_updates": "ಸಮಾಲೋಚನೆ ನವೀಕರಣಗಳು", - "update_log": "ಲಾಗ್ ಅನ್ನು ನವೀಕರಿಸಿ", - "record_updates": "ರೆಕಾರ್ಡ್ ನವೀಕರಣಗಳು", - "log_lab_results": "ಲಾಗ್ ಲ್ಯಾಬ್ ಫಲಿತಾಂಶಗಳು", - "no_log_update_delta": "ಹಿಂದಿನ ಲಾಗ್ ನವೀಕರಣದ ನಂತರ ಯಾವುದೇ ಬದಲಾವಣೆಗಳಿಲ್ಲ", - "virtual_nursing_assistant": "ವರ್ಚುವಲ್ ನರ್ಸಿಂಗ್ ಸಹಾಯಕ", - "discharge": "ವಿಸರ್ಜನೆ", - "discharge_summary": "ಡಿಸ್ಚಾರ್ಜ್ ಸಾರಾಂಶ", - "discharge_from_care": "CARE ನಿಂದ ಬಿಡುಗಡೆ", - "generating_discharge_summary": "ಡಿಸ್ಚಾರ್ಜ್ ಸಾರಾಂಶವನ್ನು ರಚಿಸಲಾಗುತ್ತಿದೆ", - "discharge_summary_not_ready": "ಡಿಸ್ಚಾರ್ಜ್ ಸಾರಾಂಶ ಇನ್ನೂ ಸಿದ್ಧವಾಗಿಲ್ಲ.", - "download_discharge_summary": "ಡಿಸ್ಚಾರ್ಜ್ ಸಾರಾಂಶವನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡಿ", - "email_discharge_summary_description": "ಡಿಸ್ಚಾರ್ಜ್ ಸಾರಾಂಶವನ್ನು ಸ್ವೀಕರಿಸಲು ನಿಮ್ಮ ಮಾನ್ಯ ಇಮೇಲ್ ವಿಳಾಸವನ್ನು ನಮೂದಿಸಿ", - "generated_summary_caution": "ಇದು CARE ವ್ಯವಸ್ಥೆಯಲ್ಲಿ ಸೆರೆಹಿಡಿಯಲಾದ ಮಾಹಿತಿಯನ್ನು ಬಳಸಿಕೊಂಡು ಕಂಪ್ಯೂಟರ್ ರಚಿಸಿದ ಸಾರಾಂಶವಾಗಿದೆ.", - "NORMAL": "ಸಂಕ್ಷಿಪ್ತ ನವೀಕರಣ", - "VENTILATOR": "ವಿವರವಾದ ನವೀಕರಣ", - "DOCTORS_LOG": "ಪ್ರಗತಿ ಟಿಪ್ಪಣಿ", - "AUTOMATED": "ಸ್ವಯಂಚಾಲಿತ", - "TELEMEDICINE": "ಟೆಲಿಮೆಡಿಸಿನ್", - "investigations": "ತನಿಖೆಗಳು", - "search_investigation_placeholder": "ಹುಡುಕಾಟ ತನಿಖೆ ಮತ್ತು ಗುಂಪುಗಳು", - "save_investigation": "ತನಿಖೆಯನ್ನು ಉಳಿಸಿ", - "investigation_reports": "ತನಿಖಾ ವರದಿಗಳು", - "no_investigation": "ಯಾವುದೇ ತನಿಖಾ ವರದಿಗಳು ಕಂಡುಬಂದಿಲ್ಲ", - "investigations_suggested": "ತನಿಖೆಗಳನ್ನು ಸೂಚಿಸಲಾಗಿದೆ", - "to_be_conducted": "ನಡೆಸಲಾಗುವುದು", - "log_report": "ಲಾಗ್ ವರದಿ", - "no_investigation_suggestions": "ಯಾವುದೇ ತನಿಖೆಯ ಸಲಹೆಗಳಿಲ್ಲ", - "select_investigation": "ತನಿಖೆಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ (ಎಲ್ಲಾ ತನಿಖೆಗಳನ್ನು ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಆಯ್ಕೆ ಮಾಡಲಾಗುತ್ತದೆ)", - "select_investigations": "ತನಿಖೆಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ", - "get_tests": "ಪರೀಕ್ಷೆಗಳನ್ನು ಪಡೆಯಿರಿ", - "select_investigation_groups": "ತನಿಖಾ ಗುಂಪುಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ", - "select_groups": "ಗುಂಪುಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ", - "generate_report": "ವರದಿಯನ್ನು ರಚಿಸಿ", - "prev_sessions": "ಹಿಂದಿನ ಅವಧಿಗಳು", - "next_sessions": "ಮುಂದಿನ ಸೆಷನ್‌ಗಳು", - "no_changes": "ಯಾವುದೇ ಬದಲಾವಣೆಗಳಿಲ್ಲ", - "back_to_consultation": "ಸಮಾಲೋಚನೆಗೆ ಹಿಂತಿರುಗಿ", - "no_treating_physicians_available": "ಈ ಸೌಲಭ್ಯವು ಯಾವುದೇ ಮನೆ ಸೌಲಭ್ಯ ವೈದ್ಯರನ್ನು ಹೊಂದಿಲ್ಲ. ದಯವಿಟ್ಟು ನಿಮ್ಮ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ.", - "encounter_suggestion_edit_disallowed": "ಸಂಪಾದನೆ ಸಮಾಲೋಚನೆಯಲ್ಲಿ ಈ ಆಯ್ಕೆಗೆ ಬದಲಾಯಿಸಲು ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ", - "encounter_suggestion__A": "ಪ್ರವೇಶ", - "encounter_suggestion__DC": "ಡೊಮಿಸಿಲಿಯರಿ ಕೇರ್", - "encounter_suggestion__OP": "ಹೊರರೋಗಿಗಳ ಭೇಟಿ", - "encounter_suggestion__DD": "ಸಮಾಲೋಚನೆ", - "encounter_suggestion__HI": "ಸಮಾಲೋಚನೆ", - "encounter_suggestion__R": "ಸಮಾಲೋಚನೆ", - "encounter_date_field_label__A": "ಸೌಲಭ್ಯಕ್ಕೆ ಪ್ರವೇಶದ ದಿನಾಂಕ ಮತ್ತು ಸಮಯ", - "encounter_date_field_label__DC": "ಡೊಮಿಸಿಲಿಯರಿ ಕೇರ್ ಪ್ರಾರಂಭದ ದಿನಾಂಕ ಮತ್ತು ಸಮಯ", - "encounter_date_field_label__OP": "ಹೊರರೋಗಿ ಭೇಟಿಯ ದಿನಾಂಕ ಮತ್ತು ಸಮಯ", - "encounter_date_field_label__DD": "ಸಮಾಲೋಚನೆಯ ದಿನಾಂಕ ಮತ್ತು ಸಮಯ", - "encounter_date_field_label__HI": "ಸಮಾಲೋಚನೆಯ ದಿನಾಂಕ ಮತ್ತು ಸಮಯ", - "encounter_date_field_label__R": "ಸಮಾಲೋಚನೆಯ ದಿನಾಂಕ ಮತ್ತು ಸಮಯ", + "are_you_sure_want_to_delete_this_record": "ಈ ದಾಖಲೆಯನ್ನು ಅಳಿಸಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?", + "asset_class": "ಆಸ್ತಿ ವರ್ಗ", + "asset_location": "ಆಸ್ತಿಯ ಸ್ಥಳ", + "asset_name": "ಆಸ್ತಿ ಹೆಸರು", + "asset_not_found_msg": "ಓಹ್! ನೀವು ಹುಡುಕುತ್ತಿರುವ ಸ್ವತ್ತು ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲ. ದಯವಿಟ್ಟು ಸ್ವತ್ತಿನ ಐಡಿಯನ್ನು ಪರಿಶೀಲಿಸಿ.", + "asset_qr_id": "ಆಸ್ತಿ QR ID", + "asset_type": "ಆಸ್ತಿ ಪ್ರಕಾರ", + "assigned_facility": "ಸೌಲಭ್ಯವನ್ನು ನಿಯೋಜಿಸಲಾಗಿದೆ", + "assigned_to": "ಗೆ ನಿಯೋಜಿಸಲಾಗಿದೆ", + "audio__allow_permission": "ದಯವಿಟ್ಟು ಸೈಟ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ಮೈಕ್ರೊಫೋನ್ ಅನುಮತಿಯನ್ನು ಅನುಮತಿಸಿ", + "audio__allow_permission_button": "ಹೇಗೆ ಅನುಮತಿಸಬೇಕೆಂದು ತಿಳಿಯಲು ಇಲ್ಲಿ ಕ್ಲಿಕ್ ಮಾಡಿ", + "audio__allow_permission_helper": "ನೀವು ಹಿಂದೆ ಮೈಕ್ರೋಫೋನ್ ಪ್ರವೇಶವನ್ನು ನಿರಾಕರಿಸಿರಬಹುದು.", + "audio__record": "ರೆಕಾರ್ಡ್ ಆಡಿಯೋ", + "audio__record_helper": "ರೆಕಾರ್ಡಿಂಗ್ ಪ್ರಾರಂಭಿಸಲು ಬಟನ್ ಕ್ಲಿಕ್ ಮಾಡಿ", + "audio__recorded": "ಆಡಿಯೋ ರೆಕಾರ್ಡ್ ಮಾಡಲಾಗಿದೆ", + "audio__recording": "ರೆಕಾರ್ಡಿಂಗ್", + "audio__recording_helper": "ದಯವಿಟ್ಟು ನಿಮ್ಮ ಮೈಕ್ರೋಫೋನ್‌ನಲ್ಲಿ ಮಾತನಾಡಿ.", + "audio__recording_helper_2": "ರೆಕಾರ್ಡಿಂಗ್ ನಿಲ್ಲಿಸಲು ಬಟನ್ ಮೇಲೆ ಕ್ಲಿಕ್ ಮಾಡಿ.", + "audio__start_again": "ಮತ್ತೆ ಪ್ರಾರಂಭಿಸಿ", + "audit_log": "ಆಡಿಟ್ ಲಾಗ್", + "auth_login_title": "ಅಧಿಕೃತ ಲಾಗಿನ್", + "authorize_shift_delete": "ಶಿಫ್ಟ್ ಅಳಿಸುವಿಕೆಯನ್ನು ಅಧಿಕೃತಗೊಳಿಸಿ", + "auto_generated_for_care": "ಆರೈಕೆಗಾಗಿ ಸ್ವಯಂ ರಚಿಸಲಾಗಿದೆ", + "available_features": "ಲಭ್ಯವಿರುವ ವೈಶಿಷ್ಟ್ಯಗಳು", + "available_in": "ಲಭ್ಯವಿರುವ ಭಾಷೆಗಳು", + "average_weekly_working_hours": "ಸರಾಸರಿ ವಾರದ ಕೆಲಸದ ಸಮಯ", + "awaiting_destination_approval": "ಗಮ್ಯಸ್ಥಾನದ ಅನುಮೋದನೆಗಾಗಿ ನಿರೀಕ್ಷಿಸಲಾಗುತ್ತಿದೆ", + "back": "ಹಿಂದೆ", "back_dated_encounter_date_caution": "ಇದಕ್ಕಾಗಿ ನೀವು ಎನ್‌ಕೌಂಟರ್ ಅನ್ನು ರಚಿಸುತ್ತಿದ್ದೀರಿ", - "encounter_duration_confirmation": "ಈ ಎನ್ಕೌಂಟರ್ನ ಅವಧಿಯು ಇರುತ್ತದೆ", - "consultation_notes": "ಸಾಮಾನ್ಯ ಸೂಚನೆಗಳು (ಸಲಹೆ)", - "procedure_suggestions": "ಕಾರ್ಯವಿಧಾನದ ಸಲಹೆಗಳು", - "edit_cover_photo": "ಕವರ್ ಫೋಟೋ ಸಂಪಾದಿಸಿ", - "no_cover_photo_uploaded_for_this_facility": "ಈ ಸೌಲಭ್ಯಕ್ಕಾಗಿ ಯಾವುದೇ ಕವರ್ ಫೋಟೋ ಅಪ್‌ಲೋಡ್ ಮಾಡಲಾಗಿಲ್ಲ", + "back_to_consultation": "ಸಮಾಲೋಚನೆಗೆ ಹಿಂತಿರುಗಿ", + "back_to_login": "ಲಾಗಿನ್ ಪುಟಕ್ಕೆ ಹಿಂತಿರುಗಿ", + "base_dosage": "ಡೋಸೇಜ್", + "bed_capacity": "ಹಾಸಿಗೆ ಸಾಮರ್ಥ್ಯ", + "bed_search_placeholder": "ಹಾಸಿಗೆಗಳ ಹೆಸರಿನ ಮೂಲಕ ಹುಡುಕಿ", + "bed_type": "ಹಾಸಿಗೆಯ ಪ್ರಕಾರ", + "blood_group": "ರಕ್ತದ ಗುಂಪು", + "board_view": "ಬೋರ್ಡ್ ವೀಕ್ಷಣೆ", + "bradycardia": "ಬ್ರಾಡಿಕಾರ್ಡಿಯಾ", + "breathlessness_level": "ಉಸಿರಾಟದ ಮಟ್ಟ", + "camera": "ಕ್ಯಾಮೆರಾ", + "camera_permission_denied": "ಕ್ಯಾಮೆರಾ ಅನುಮತಿ ನಿರಾಕರಿಸಲಾಗಿದೆ", + "cancel": "ರದ್ದುಮಾಡಿ", + "capture": "ಸೆರೆಹಿಡಿಯಿರಿ", "capture_cover_photo": "ಕವರ್ ಫೋಟೋ ಸೆರೆಹಿಡಿಯಿರಿ", - "diagnoses": "ರೋಗನಿರ್ಣಯಗಳು", - "diagnosis_already_added": "ಈ ರೋಗನಿರ್ಣಯವನ್ನು ಈಗಾಗಲೇ ಸೇರಿಸಲಾಗಿದೆ", - "principal": "ಪ್ರಿನ್ಸಿಪಾಲ್", - "principal_diagnosis": "ಮುಖ್ಯ ರೋಗನಿರ್ಣಯ", - "unconfirmed": "ದೃಢೀಕರಿಸಲಾಗಿಲ್ಲ", - "provisional": "ತಾತ್ಕಾಲಿಕ", - "differential": "ಭೇದಾತ್ಮಕ", - "confirmed": "ದೃಢಪಡಿಸಿದೆ", - "refuted": "ನಿರಾಕರಿಸಲಾಗಿದೆ", - "entered-in-error": "ತಪ್ಪಾಗಿ ನಮೂದಿಸಲಾಗಿದೆ", - "help_unconfirmed": "ಇದನ್ನು ದೃಢಪಡಿಸಿದ ಸ್ಥಿತಿ ಎಂದು ಪರಿಗಣಿಸಲು ಸಾಕಷ್ಟು ರೋಗನಿರ್ಣಯ ಮತ್ತು/ಅಥವಾ ವೈದ್ಯಕೀಯ ಪುರಾವೆಗಳಿಲ್ಲ.", - "help_provisional": "ಇದು ತಾತ್ಕಾಲಿಕ ರೋಗನಿರ್ಣಯ - ಇನ್ನೂ ಪರಿಗಣನೆಯಲ್ಲಿರುವ ಅಭ್ಯರ್ಥಿ.", - "help_differential": "ರೋಗನಿರ್ಣಯ ಪ್ರಕ್ರಿಯೆ ಮತ್ತು ಪ್ರಾಥಮಿಕ ಚಿಕಿತ್ಸೆಯನ್ನು ಮತ್ತಷ್ಟು ಮಾರ್ಗದರ್ಶನ ಮಾಡಲು ಸಮರ್ಥಿಸಲಾದ ಸಂಭಾವ್ಯ (ಮತ್ತು ಸಾಮಾನ್ಯವಾಗಿ ಪರಸ್ಪರ ಪ್ರತ್ಯೇಕವಾದ) ರೋಗನಿರ್ಣಯಗಳ ಒಂದು ಸೆಟ್.", - "help_confirmed": "ಇದನ್ನು ದೃಢಪಡಿಸಿದ ಸ್ಥಿತಿ ಎಂದು ಪರಿಗಣಿಸಲು ಸಾಕಷ್ಟು ರೋಗನಿರ್ಣಯ ಮತ್ತು/ಅಥವಾ ಕ್ಲಿನಿಕಲ್ ಪುರಾವೆಗಳಿವೆ.", - "help_refuted": "ನಂತರದ ರೋಗನಿರ್ಣಯ ಮತ್ತು ಕ್ಲಿನಿಕಲ್ ಪುರಾವೆಗಳಿಂದ ಈ ಸ್ಥಿತಿಯನ್ನು ತಳ್ಳಿಹಾಕಲಾಗಿದೆ.", - "help_entered-in-error": "ಹೇಳಿಕೆಯನ್ನು ತಪ್ಪಾಗಿ ನಮೂದಿಸಲಾಗಿದೆ ಮತ್ತು ಮಾನ್ಯವಾಗಿಲ್ಲ.", - "search_icd11_placeholder": "ICD-11 ರೋಗನಿರ್ಣಯಗಳಿಗಾಗಿ ಹುಡುಕಿ", - "icd11_as_recommended": "WHO ಶಿಫಾರಸು ಮಾಡಿದ ICD-11 ಪ್ರಕಾರ", - "Facilities": "ಸೌಲಭ್ಯಗಳು", - "Patients": "ರೋಗಿಗಳು", - "Sample Test": "ಮಾದರಿ ಪರೀಕ್ಷೆ", - "Shifting": "ಸ್ಥಳಾಂತರ", - "Resource": "ಸಂಪನ್ಮೂಲ", - "Users": "ಬಳಕೆದಾರರು", - "Profile": "ಪ್ರೊಫೈಲ್", - "Dashboard": "ಡ್ಯಾಶ್‌ಬೋರ್ಡ್", - "return_to_care": "CARE ಗೆ ಹಿಂತಿರುಗಿ", - "404_message": "ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲದ ಅಥವಾ ಇನ್ನೊಂದು URL ಗೆ ಸರಿಸಿದ ಪುಟದಲ್ಲಿ ನೀವು ಎಡವಿ ಬಿದ್ದಿರುವಂತೆ ತೋರುತ್ತಿದೆ. ನೀವು ಸರಿಯಾದ ಲಿಂಕ್ ಅನ್ನು ನಮೂದಿಸಿದ್ದೀರಿ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ!", - "error_404": "ದೋಷ 404", - "page_not_found": "ಪುಟ ಕಂಡುಬಂದಿಲ್ಲ", - "session_expired": "ಅವಧಿ ಮುಗಿದಿದೆ", - "invalid_password_reset_link": "ಅಮಾನ್ಯವಾದ ಪಾಸ್‌ವರ್ಡ್ ಮರುಹೊಂದಿಸುವ ಲಿಂಕ್", - "invalid_link_msg": "ನೀವು ಬಳಸಿದ ಪಾಸ್‌ವರ್ಡ್ ಮರುಹೊಂದಿಸುವ ಲಿಂಕ್ ಅಮಾನ್ಯವಾಗಿದೆ ಅಥವಾ ಅವಧಿ ಮೀರಿದೆ ಎಂದು ತೋರುತ್ತಿದೆ. ದಯವಿಟ್ಟು ಹೊಸ ಪಾಸ್‌ವರ್ಡ್ ಮರುಹೊಂದಿಸುವ ಲಿಂಕ್ ಅನ್ನು ವಿನಂತಿಸಿ.", - "return_to_password_reset": "ಪಾಸ್ವರ್ಡ್ ಮರುಹೊಂದಿಸಲು ಹಿಂತಿರುಗಿ", - "return_to_login": "ಲಾಗಿನ್‌ಗೆ ಹಿಂತಿರುಗಿ", - "session_expired_msg": "ನಿಮ್ಮ ಅವಧಿ ಮುಗಿದಿದೆ ಎಂದು ತೋರುತ್ತಿದೆ. ಇದು ನಿಷ್ಕ್ರಿಯತೆಯ ಕಾರಣದಿಂದಾಗಿರಬಹುದು. ಮುಂದುವರಿಸಲು ದಯವಿಟ್ಟು ಮತ್ತೆ ಲಾಗಿನ್ ಮಾಡಿ.", - "invalid_reset": "ಅಮಾನ್ಯ ಮರುಹೊಂದಿಸಿ", - "please_upload_a_csv_file": "ದಯವಿಟ್ಟು CSV ಫೈಲ್ ಅನ್ನು ಅಪ್‌ಲೋಡ್ ಮಾಡಿ", - "csv_file_in_the_specified_format": "ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಸ್ವರೂಪದಲ್ಲಿ CSV ಫೈಲ್ ಅನ್ನು ಆಯ್ಕೆಮಾಡಿ", - "sample_format": "ಮಾದರಿ ಸ್ವರೂಪ", - "search_for_facility": "ಸೌಲಭ್ಯಕ್ಕಾಗಿ ಹುಡುಕಿ", - "select_local_body": "ಸ್ಥಳೀಯ ಸಂಸ್ಥೆಯನ್ನು ಆಯ್ಕೆಮಾಡಿ", - "select_wards": "ವಾರ್ಡ್‌ಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ", - "result_date": "ಫಲಿತಾಂಶ ದಿನಾಂಕ", - "sample_collection_date": "ಮಾದರಿ ಸಂಗ್ರಹ ದಿನಾಂಕ", - "record_has_been_deleted_successfully": "ದಾಖಲೆಯನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಅಳಿಸಲಾಗಿದೆ.", - "error_while_deleting_record": "ದಾಖಲೆಯನ್ನು ಅಳಿಸುವಾಗ ದೋಷ", - "result_details": "ಫಲಿತಾಂಶದ ವಿವರಗಳು", + "care": "ಕಾಳಜಿ", + "category": "ವರ್ಗ", + "caution": "ಎಚ್ಚರಿಕೆ", + "central_nursing_station": "ಕೇಂದ್ರ ನರ್ಸಿಂಗ್ ಸ್ಟೇಷನ್", + "choose_file": "ಸಾಧನದಿಂದ ಅಪ್ಲೋಡ್ ಮಾಡಿ", + "choose_location": "ಸ್ಥಳವನ್ನು ಆಯ್ಕೆಮಾಡಿ", + "clear": "ತೆರವುಗೊಳಿಸಿ", + "clear_all_filters": "ಎಲ್ಲಾ ಫಿಲ್ಟರ್‌ಗಳನ್ನು ತೆರವುಗೊಳಿಸಿ", + "clear_home_facility": "ಮನೆ ಸೌಲಭ್ಯವನ್ನು ತೆರವುಗೊಳಿಸಿ", + "clear_selection": "ಆಯ್ಕೆಯನ್ನು ತೆರವುಗೊಳಿಸಿ", + "close": "ಮುಚ್ಚಿ", + "close_scanner": "ಸ್ಕ್ಯಾನರ್ ಅನ್ನು ಮುಚ್ಚಿ", + "comment_added_successfully": "ಕಾಮೆಂಟ್ ಅನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಸೇರಿಸಲಾಗಿದೆ", + "comment_min_length": "ಕಾಮೆಂಟ್ ಕನಿಷ್ಠ 1 ಅಕ್ಷರವನ್ನು ಹೊಂದಿರಬೇಕು", + "comments": "ಕಾಮೆಂಟ್‌ಗಳು", + "completed": "ಪೂರ್ಣಗೊಂಡಿದೆ", + "configure": "ಕಾನ್ಫಿಗರ್ ಮಾಡಿ", + "configure_facility": "ಸೌಲಭ್ಯವನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಿ", + "confirm": "ದೃಢೀಕರಿಸಿ", "confirm_delete": "ಅಳಿಸುವುದನ್ನು ದೃಢೀಕರಿಸಿ", - "are_you_sure_want_to_delete_this_record": "ಈ ದಾಖಲೆಯನ್ನು ಅಳಿಸಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?", - "patient_category": "ರೋಗಿಗಳ ವರ್ಗ", - "source": "ಮೂಲ", - "result": "ಫಲಿತಾಂಶ", - "sample_type": "ಮಾದರಿ ಪ್ರಕಾರ", - "patient_status": "ರೋಗಿಯ ಸ್ಥಿತಿ", - "mobile_number": "ಮೊಬೈಲ್ ಸಂಖ್ಯೆ", - "patient_created": "ರೋಗಿಯನ್ನು ರಚಿಸಲಾಗಿದೆ", - "update_record": "ದಾಖಲೆಯನ್ನು ನವೀಕರಿಸಿ", - "facility_search_placeholder": "ಸೌಲಭ್ಯ / ಜಿಲ್ಲೆಯ ಹೆಸರಿನ ಮೂಲಕ ಹುಡುಕಿ", - "advanced_filters": "ಸುಧಾರಿತ ಫಿಲ್ಟರ್‌ಗಳು", - "facility_name": "ಸೌಲಭ್ಯದ ಹೆಸರು", - "KASP Empanelled": "ಕೆಎಎಸ್ಪಿ ಎಂಪನೇಲ್ಡ್", - "View Facility": "ವೀಕ್ಷಣೆ ಸೌಲಭ್ಯ", - "no_duplicate_facility": "ನೀವು ನಕಲಿ ಸೌಲಭ್ಯಗಳನ್ನು ರಚಿಸಬಾರದು", - "no_facilities": "ಯಾವುದೇ ಸೌಲಭ್ಯಗಳು ಕಂಡುಬಂದಿಲ್ಲ", - "no_staff": "ಸಿಬ್ಬಂದಿ ಪತ್ತೆಯಾಗಿಲ್ಲ", - "no_bed_types_found": "ಯಾವುದೇ ಹಾಸಿಗೆಯ ಪ್ರಕಾರಗಳು ಕಂಡುಬಂದಿಲ್ಲ", - "total_beds": "ಒಟ್ಟು ಹಾಸಿಗೆಗಳು", + "confirm_discontinue": "ಸ್ಥಗಿತಗೊಳಿಸುವುದನ್ನು ದೃಢೀಕರಿಸಿ", + "confirm_password": "ಪಾಸ್ವರ್ಡ್ ದೃಢೀಕರಿಸಿ", + "confirm_transfer_complete": "ವರ್ಗಾವಣೆ ಪೂರ್ಣಗೊಂಡಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿ!", + "confirmed": "ದೃಢಪಡಿಸಿದೆ", + "consultation_notes": "ಸಾಮಾನ್ಯ ಸೂಚನೆಗಳು (ಸಲಹೆ)", + "consultation_updates": "ಸಮಾಲೋಚನೆ ನವೀಕರಣಗಳು", + "contact_number": "ಸಂಪರ್ಕ ಸಂಖ್ಯೆ", + "contact_person": "ಸೌಲಭ್ಯದಲ್ಲಿರುವ ಸಂಪರ್ಕ ವ್ಯಕ್ತಿಯ ಹೆಸರು", + "contact_person_at_the_facility": "ಪ್ರಸ್ತುತ ಸೌಲಭ್ಯದಲ್ಲಿರುವ ವ್ಯಕ್ತಿಯನ್ನು ಸಂಪರ್ಕಿಸಿ", + "contact_person_number": "ಸಂಪರ್ಕ ವ್ಯಕ್ತಿಯ ಸಂಖ್ಯೆ", + "contact_phone": "ಸಂಪರ್ಕ ವ್ಯಕ್ತಿ ಸಂಖ್ಯೆ", + "contact_your_admin_to_add_skills": "ಕೌಶಲ್ಯಗಳನ್ನು ಸೇರಿಸಲು ನಿಮ್ಮ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ", + "continue": "ಮುಂದುವರಿಸಿ", + "continue_watching": "ನೋಡುವುದನ್ನು ಮುಂದುವರಿಸಿ", + "contribute_github": "GitHub ನಲ್ಲಿ ಕೊಡುಗೆ ನೀಡಿ", + "copied_to_clipboard": "ಕ್ಲಿಪ್‌ಬೋರ್ಡ್‌ಗೆ ನಕಲಿಸಲಾಗಿದೆ", + "countries_travelled": "ದೇಶಗಳು ಸಂಚರಿಸಿದವು", + "covid_19_cat_gov": "ಸರ್ಕಾರದ ಪ್ರಕಾರ ಕೋವಿಡ್_19 ಕ್ಲಿನಿಕಲ್ ವರ್ಗ. ಕೇರಳ ಮಾರ್ಗಸೂಚಿ (A/B/C)", + "create": "ರಚಿಸಿ", + "create_add_more": "ರಚಿಸಿ ಮತ್ತು ಇನ್ನಷ್ಟು ಸೇರಿಸಿ", + "create_asset": "ಆಸ್ತಿಯನ್ನು ರಚಿಸಿ", "create_facility": "ಹೊಸ ಸೌಲಭ್ಯವನ್ನು ರಚಿಸಿ", - "staff_list": "ಸಿಬ್ಬಂದಿ ಪಟ್ಟಿ", - "bed_capacity": "ಹಾಸಿಗೆ ಸಾಮರ್ಥ್ಯ", - "cylinders": "ಸಿಲಿಂಡರ್ಗಳು", - "cylinders_per_day": "ಸಿಲಿಂಡರ್ಗಳು / ದಿನ", - "liquid_oxygen_capacity": "ದ್ರವ ಆಮ್ಲಜನಕದ ಸಾಮರ್ಥ್ಯ", - "expected_burn_rate": "ನಿರೀಕ್ಷಿತ ಬರ್ನ್ ದರ", - "type_b_cylinders": "ಬಿ ಮಾದರಿಯ ಸಿಲಿಂಡರ್‌ಗಳು", - "type_c_cylinders": "ಸಿ ಮಾದರಿಯ ಸಿಲಿಂಡರ್‌ಗಳು", - "type_d_cylinders": "ಡಿ ಮಾದರಿಯ ಸಿಲಿಂಡರ್‌ಗಳು", - "update_asset": "ಆಸ್ತಿಯನ್ನು ನವೀಕರಿಸಿ", "create_new_asset": "ಹೊಸ ಆಸ್ತಿಯನ್ನು ರಚಿಸಿ", - "you_need_at_least_a_location_to_create_an_assest": "ಆಸ್ತಿಯನ್ನು ರಚಿಸಲು ನಿಮಗೆ ಕನಿಷ್ಠ ಸ್ಥಳದ ಅಗತ್ಯವಿದೆ.", - "add_location": "ಸ್ಥಳವನ್ನು ಸೇರಿಸಿ", - "close_scanner": "ಸ್ಕ್ಯಾನರ್ ಅನ್ನು ಮುಚ್ಚಿ", - "scan_asset_qr": "ಸ್ವತ್ತು QR ಅನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡಿ!", - "create": "ರಚಿಸಿ", - "asset_name": "ಆಸ್ತಿ ಹೆಸರು", - "asset_location": "ಆಸ್ತಿಯ ಸ್ಥಳ", - "asset_type": "ಆಸ್ತಿ ಪ್ರಕಾರ", - "asset_class": "ಆಸ್ತಿ ವರ್ಗ", - "details_about_the_equipment": "ಸಲಕರಣೆಗಳ ಬಗ್ಗೆ ವಿವರಗಳು", - "working_status": "ಕೆಲಸದ ಸ್ಥಿತಿ", - "why_the_asset_is_not_working": "ಸ್ವತ್ತು ಏಕೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿಲ್ಲ?", - "describe_why_the_asset_is_not_working": "ಸ್ವತ್ತು ಏಕೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿಲ್ಲ ಎಂಬುದನ್ನು ವಿವರಿಸಿ", - "asset_qr_id": "ಆಸ್ತಿ QR ID", - "manufacturer": "ತಯಾರಕ", - "eg_xyz": "ಉದಾ. XYZ", - "eg_abc": "ಉದಾ. ಎಬಿಸಿ", - "warranty_amc_expiry": "ವಾರಂಟಿ / AMC ಮುಕ್ತಾಯ", + "create_resource_request": "ಸಂಪನ್ಮೂಲ ವಿನಂತಿಯನ್ನು ರಚಿಸಿ", + "created": "ರಚಿಸಲಾಗಿದೆ", + "created_date": "ರಚಿಸಿದ ದಿನಾಂಕ", + "csv_file_in_the_specified_format": "ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಸ್ವರೂಪದಲ್ಲಿ CSV ಫೈಲ್ ಅನ್ನು ಆಯ್ಕೆಮಾಡಿ", + "customer_support_email": "ಗ್ರಾಹಕ ಬೆಂಬಲ ಇಮೇಲ್", "customer_support_name": "ಗ್ರಾಹಕ ಬೆಂಬಲ ಹೆಸರು", "customer_support_number": "ಗ್ರಾಹಕ ಬೆಂಬಲ ಸಂಖ್ಯೆ", - "customer_support_email": "ಗ್ರಾಹಕ ಬೆಂಬಲ ಇಮೇಲ್", - "eg_mail_example_com": "ಉದಾ. mail@example.com", - "vendor_name": "ಮಾರಾಟಗಾರರ ಹೆಸರು", - "serial_number": "ಸರಣಿ ಸಂಖ್ಯೆ", - "last_serviced_on": "ಕೊನೆಯದಾಗಿ ಸೇವೆ ಸಲ್ಲಿಸಲಾಗಿದೆ", - "create_add_more": "ರಚಿಸಿ ಮತ್ತು ಇನ್ನಷ್ಟು ಸೇರಿಸಿ", - "discharged_patients": "ಬಿಡುಗಡೆಯಾದ ರೋಗಿಗಳು", - "discharged_patients_empty": "ಈ ಸೌಲಭ್ಯದಲ್ಲಿ ಬಿಡುಗಡೆಯಾದ ಯಾವುದೇ ರೋಗಿಗಳು ಇರುವುದಿಲ್ಲ", - "update_facility_middleware_success": "ಸೌಲಭ್ಯ ಮಿಡಲ್‌ವೇರ್ ಅನ್ನು ಯಶಸ್ವಿಯಾಗಿ ನವೀಕರಿಸಲಾಗಿದೆ", - "treatment_summary__head_title": "ಚಿಕಿತ್ಸೆಯ ಸಾರಾಂಶ", - "treatment_summary__print": "ಪ್ರಿಂಟ್ ಟ್ರೀಟ್ಮೆಂಟ್ ಸಾರಾಂಶ", - "treatment_summary__heading": "ಮಧ್ಯಂತರ ಚಿಕಿತ್ಸೆಯ ಸಾರಾಂಶ", - "patient_registration__name": "ಹೆಸರು", - "patient_registration__address": "ವಿಳಾಸ", - "patient_registration__age": "ವಯಸ್ಸು", - "patient_consultation__op": "OP", - "patient_consultation__ip": "IP", - "patient_consultation__dc_admission": "ಮನೆಯ ಆರೈಕೆಯ ದಿನಾಂಕ ಪ್ರಾರಂಭವಾಗಿದೆ", - "patient_consultation__admission": "ಪ್ರವೇಶ ದಿನಾಂಕ", - "patient_registration__gender": "ಲಿಂಗ", - "patient_registration__contact": "ತುರ್ತು ಸಂಪರ್ಕ", - "patient_registration__comorbidities": "ಸಹವರ್ತಿ ರೋಗಗಳು", - "patient_registration__comorbidities__disease": "ರೋಗ", - "patient_registration__comorbidities__details": "ವಿವರಗಳು", - "patient_consultation__consultation_notes": "ಸಾಮಾನ್ಯ ಸೂಚನೆಗಳು", - "patient_consultation__special_instruction": "ವಿಶೇಷ ಸೂಚನೆಗಳು", - "suggested_investigations": "ಸೂಚಿಸಿದ ತನಿಖೆಗಳು", - "investigations__date": "ದಿನಾಂಕ", - "investigations__name": "ಹೆಸರು", - "investigations__result": "ಫಲಿತಾಂಶ", - "investigations__ideal_value": "ಆದರ್ಶ ಮೌಲ್ಯ", - "investigations__range": "ಮೌಲ್ಯ ಶ್ರೇಣಿ", - "investigations__unit": "ಘಟಕ", - "patient_consultation__treatment__plan": "ಯೋಜನೆ", - "patient_consultation__treatment__summary": "ಸಾರಾಂಶ", - "patient_consultation__treatment__summary__date": "ದಿನಾಂಕ", - "patient_consultation__treatment__summary__spo2": "SpO2", - "patient_consultation__treatment__summary__temperature": "ತಾಪಮಾನ", - "diagnosis__principal": "ಪ್ರಿನ್ಸಿಪಾಲ್", + "cylinders": "ಸಿಲಿಂಡರ್ಗಳು", + "cylinders_per_day": "ಸಿಲಿಂಡರ್ಗಳು / ದಿನ", + "date_and_time": "ದಿನಾಂಕ ಮತ್ತು ಸಮಯ", + "date_of_admission": "ಪ್ರವೇಶ ದಿನಾಂಕ", + "date_of_birth": "ಹುಟ್ಟಿದ ದಿನಾಂಕ", + "date_of_positive_covid_19_swab": "ಧನಾತ್ಮಕ ಕೋವಿಡ್ 19 ಸ್ವ್ಯಾಬ್ ದಿನಾಂಕ", + "date_of_test": "ಪರೀಕ್ಷೆಯ ದಿನಾಂಕ", + "days": "ದಿನಗಳು", + "delete": "ಅಳಿಸಿ", + "delete_facility": "ಸೌಲಭ್ಯವನ್ನು ಅಳಿಸಿ", + "delete_item": "{{name}}ಅಳಿಸಿ", + "delete_record": "ದಾಖಲೆ ಅಳಿಸಿ", + "deleted_successfully": "{{name}} ಅನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಅಳಿಸಲಾಗಿದೆ", + "describe_why_the_asset_is_not_working": "ಸ್ವತ್ತು ಏಕೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿಲ್ಲ ಎಂಬುದನ್ನು ವಿವರಿಸಿ", + "description": "ವಿವರಣೆ", + "details_about_the_equipment": "ಸಲಕರಣೆಗಳ ಬಗ್ಗೆ ವಿವರಗಳು", + "details_of_assigned_facility": "ನಿಯೋಜಿಸಲಾದ ಸೌಲಭ್ಯದ ವಿವರಗಳು", + "details_of_origin_facility": "ಮೂಲ ಸೌಲಭ್ಯದ ವಿವರಗಳು", + "details_of_patient": "ರೋಗಿಯ ವಿವರಗಳು", + "details_of_shifting_approving_facility": "ಅನುಮೋದಿಸುವ ಸೌಲಭ್ಯವನ್ನು ಬದಲಾಯಿಸುವ ವಿವರಗಳು", + "diagnoses": "ರೋಗನಿರ್ಣಯಗಳು", + "diagnosis": "ರೋಗನಿರ್ಣಯ", "diagnosis__confirmed": "ದೃಢಪಡಿಸಿದೆ", + "diagnosis__differential": "ಭೇದಾತ್ಮಕ", + "diagnosis__principal": "ಪ್ರಿನ್ಸಿಪಾಲ್", "diagnosis__provisional": "ತಾತ್ಕಾಲಿಕ", "diagnosis__unconfirmed": "ದೃಢೀಕರಿಸಲಾಗಿಲ್ಲ", - "diagnosis__differential": "ಭೇದಾತ್ಮಕ", - "active_prescriptions": "ಸಕ್ರಿಯ ಪ್ರಿಸ್ಕ್ರಿಪ್ಷನ್ಗಳು", - "prescriptions__medicine": "ಔಷಧಿ", - "prescriptions__route": "ಮಾರ್ಗ", - "prescriptions__dosage_frequency": "ಡೋಸೇಜ್ ಮತ್ತು ಆವರ್ತನ", - "prescriptions__start_date": "ರಂದು ಸೂಚಿಸಲಾಗಿದೆ", - "select_facility_for_discharged_patients_warning": "ಬಿಡುಗಡೆಯಾದ ರೋಗಿಗಳನ್ನು ವೀಕ್ಷಿಸಲು ಸೌಲಭ್ಯವನ್ನು ಆಯ್ಕೆ ಮಾಡಬೇಕಾಗಿದೆ.", + "diagnosis_already_added": "ಈ ರೋಗನಿರ್ಣಯವನ್ನು ಈಗಾಗಲೇ ಸೇರಿಸಲಾಗಿದೆ", + "diastolic": "ಡಯಾಸ್ಟೊಲಿಕ್", + "differential": "ಭೇದಾತ್ಮಕ", + "discard": "ತಿರಸ್ಕರಿಸು", + "discharge": "ವಿಸರ್ಜನೆ", + "discharge_from_care": "CARE ನಿಂದ ಬಿಡುಗಡೆ", + "discharge_prescription": "ಡಿಸ್ಚಾರ್ಜ್ ಪ್ರಿಸ್ಕ್ರಿಪ್ಷನ್", + "discharge_summary": "ಡಿಸ್ಚಾರ್ಜ್ ಸಾರಾಂಶ", + "discharge_summary_not_ready": "ಡಿಸ್ಚಾರ್ಜ್ ಸಾರಾಂಶ ಇನ್ನೂ ಸಿದ್ಧವಾಗಿಲ್ಲ.", + "discharged": "ಡಿಸ್ಚಾರ್ಜ್ ಮಾಡಲಾಗಿದೆ", + "discharged_patients": "ಬಿಡುಗಡೆಯಾದ ರೋಗಿಗಳು", + "discharged_patients_empty": "ಈ ಸೌಲಭ್ಯದಲ್ಲಿ ಬಿಡುಗಡೆಯಾದ ಯಾವುದೇ ರೋಗಿಗಳು ಇರುವುದಿಲ್ಲ", + "disclaimer": "ಹಕ್ಕು ನಿರಾಕರಣೆ", + "discontinue": "ಸ್ಥಗಿತಗೊಳಿಸಿ", + "discontinue_caution_note": "ಈ ಪ್ರಿಸ್ಕ್ರಿಪ್ಷನ್ ಅನ್ನು ನಿಲ್ಲಿಸಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?", + "discontinued": "ಸ್ಥಗಿತಗೊಳಿಸಲಾಗಿದೆ", + "disease_status": "ರೋಗದ ಸ್ಥಿತಿ", + "district": "ಜಿಲ್ಲೆ", + "district_program_management_supporting_unit": "ಜಿಲ್ಲಾ ಕಾರ್ಯಕ್ರಮ ನಿರ್ವಹಣಾ ಪೋಷಕ ಘಟಕ", + "done": "ಮುಗಿದಿದೆ", + "dosage": "ಡೋಸೇಜ್", + "down": "ಕೆಳಗೆ", + "download": "ಡೌನ್‌ಲೋಡ್ ಮಾಡಿ", + "download_discharge_summary": "ಡಿಸ್ಚಾರ್ಜ್ ಸಾರಾಂಶವನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡಿ", + "download_type": "ಡೌನ್‌ಲೋಡ್ ಪ್ರಕಾರ", + "downloading": "ಡೌನ್‌ಲೋಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ", + "downloads": "ಡೌನ್‌ಲೋಡ್‌ಗಳು", + "drag_drop_image_to_upload": "ಅಪ್‌ಲೋಡ್ ಮಾಡಲು ಚಿತ್ರವನ್ನು ಎಳೆಯಿರಿ ಮತ್ತು ಬಿಡಿ", + "duplicate_patient_record_birth_unknown": "ರೋಗಿಯ ಜನ್ಮ ವರ್ಷದ ಬಗ್ಗೆ ನಿಮಗೆ ಖಚಿತವಿಲ್ಲದಿದ್ದರೆ ದಯವಿಟ್ಟು ನಿಮ್ಮ ಜಿಲ್ಲಾ ಆರೈಕೆ ಸಂಯೋಜಕರು, ಸ್ಥಳಾಂತರ ಸೌಲಭ್ಯ ಅಥವಾ ರೋಗಿಯನ್ನು ಸಂಪರ್ಕಿಸಿ.", "duplicate_patient_record_confirmation": "ಹುಟ್ಟಿದ ವರ್ಷವನ್ನು ಸೇರಿಸುವ ಮೂಲಕ ನಿಮ್ಮ ಸೌಲಭ್ಯಕ್ಕೆ ರೋಗಿಯ ದಾಖಲೆಯನ್ನು ಒಪ್ಪಿಕೊಳ್ಳಿ", "duplicate_patient_record_rejection": "ನಾನು ರಚಿಸಲು ಬಯಸುವ ಶಂಕಿತ / ರೋಗಿಯು ಪಟ್ಟಿಯಲ್ಲಿಲ್ಲ ಎಂದು ನಾನು ದೃಢೀಕರಿಸುತ್ತೇನೆ.", - "duplicate_patient_record_birth_unknown": "ರೋಗಿಯ ಜನ್ಮ ವರ್ಷದ ಬಗ್ಗೆ ನಿಮಗೆ ಖಚಿತವಿಲ್ಲದಿದ್ದರೆ ದಯವಿಟ್ಟು ನಿಮ್ಮ ಜಿಲ್ಲಾ ಆರೈಕೆ ಸಂಯೋಜಕರು, ಸ್ಥಳಾಂತರ ಸೌಲಭ್ಯ ಅಥವಾ ರೋಗಿಯನ್ನು ಸಂಪರ್ಕಿಸಿ.", - "patient_transfer_birth_match_note": "ಗಮನಿಸಿ: ವರ್ಗಾವಣೆ ವಿನಂತಿಯನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲು ಹುಟ್ಟಿದ ವರ್ಷವು ರೋಗಿಗೆ ಹೊಂದಿಕೆಯಾಗಬೇಕು.", - "available_features": "ಲಭ್ಯವಿರುವ ವೈಶಿಷ್ಟ್ಯಗಳು", - "update_facility": "ನವೀಕರಣ ಸೌಲಭ್ಯ", - "configure_facility": "ಸೌಲಭ್ಯವನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಿ", - "inventory_management": "ದಾಸ್ತಾನು ನಿರ್ವಹಣೆ", - "location_management": "ಸ್ಥಳ ನಿರ್ವಹಣೆ", - "resource_request": "ಸಂಪನ್ಮೂಲ ವಿನಂತಿ", - "view_asset": "ಸ್ವತ್ತುಗಳನ್ನು ವೀಕ್ಷಿಸಿ", - "view_users": "ಬಳಕೆದಾರರನ್ನು ವೀಕ್ಷಿಸಿ", - "view_abdm_records": "ABDM ದಾಖಲೆಗಳನ್ನು ವೀಕ್ಷಿಸಿ", - "delete_facility": "ಸೌಲಭ್ಯವನ್ನು ಅಳಿಸಿ", - "central_nursing_station": "ಕೇಂದ್ರ ನರ್ಸಿಂಗ್ ಸ್ಟೇಷನ್", - "add_details_of_patient": "ರೋಗಿಯ ವಿವರಗಳನ್ನು ಸೇರಿಸಿ", - "choose_location": "ಸ್ಥಳವನ್ನು ಆಯ್ಕೆಮಾಡಿ", - "live_monitoring": "ಲೈವ್ ಮಾನಿಟರಿಂಗ್", - "open_live_monitoring": "ಲೈವ್ ಮಾನಿಟರಿಂಗ್ ತೆರೆಯಿರಿ", - "audio__allow_permission": "ದಯವಿಟ್ಟು ಸೈಟ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ಮೈಕ್ರೊಫೋನ್ ಅನುಮತಿಯನ್ನು ಅನುಮತಿಸಿ", - "audio__allow_permission_helper": "ನೀವು ಹಿಂದೆ ಮೈಕ್ರೋಫೋನ್ ಪ್ರವೇಶವನ್ನು ನಿರಾಕರಿಸಿರಬಹುದು.", - "audio__allow_permission_button": "ಹೇಗೆ ಅನುಮತಿಸಬೇಕೆಂದು ತಿಳಿಯಲು ಇಲ್ಲಿ ಕ್ಲಿಕ್ ಮಾಡಿ", - "audio__record": "ರೆಕಾರ್ಡ್ ಆಡಿಯೋ", - "audio__record_helper": "ರೆಕಾರ್ಡಿಂಗ್ ಪ್ರಾರಂಭಿಸಲು ಬಟನ್ ಕ್ಲಿಕ್ ಮಾಡಿ", - "audio__recording": "ರೆಕಾರ್ಡಿಂಗ್", - "audio__recording_helper": "ದಯವಿಟ್ಟು ನಿಮ್ಮ ಮೈಕ್ರೋಫೋನ್‌ನಲ್ಲಿ ಮಾತನಾಡಿ.", - "audio__recording_helper_2": "ರೆಕಾರ್ಡಿಂಗ್ ನಿಲ್ಲಿಸಲು ಬಟನ್ ಮೇಲೆ ಕ್ಲಿಕ್ ಮಾಡಿ.", - "audio__recorded": "ಆಡಿಯೋ ರೆಕಾರ್ಡ್ ಮಾಡಲಾಗಿದೆ", - "audio__start_again": "ಮತ್ತೆ ಪ್ರಾರಂಭಿಸಿ", + "edit": "ಸಂಪಾದಿಸು", + "edit_caution_note": "ಸಂಪಾದಿತ ವಿವರಗಳೊಂದಿಗೆ ಹೊಸ ಪ್ರಿಸ್ಕ್ರಿಪ್ಷನ್ ಅನ್ನು ಸಮಾಲೋಚನೆಗೆ ಸೇರಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಪ್ರಸ್ತುತ ಪ್ರಿಸ್ಕ್ರಿಪ್ಷನ್ ಅನ್ನು ಸ್ಥಗಿತಗೊಳಿಸಲಾಗುತ್ತದೆ.", + "edit_cover_photo": "ಕವರ್ ಫೋಟೋ ಸಂಪಾದಿಸಿ", + "edit_history": "ಇತಿಹಾಸವನ್ನು ಸಂಪಾದಿಸಿ", + "edit_prescriptions": "ಪ್ರಿಸ್ಕ್ರಿಪ್ಷನ್‌ಗಳನ್ನು ಸಂಪಾದಿಸಿ", + "edited_by": "ಸಂಪಾದಿಸಿದವರು", + "edited_on": "ರಂದು ಸಂಪಾದಿಸಲಾಗಿದೆ", + "eg_abc": "ಉದಾ. ಎಬಿಸಿ", + "eg_details_on_functionality_service_etc": "ಉದಾ. ಕಾರ್ಯನಿರ್ವಹಣೆ, ಸೇವೆ ಇತ್ಯಾದಿಗಳ ವಿವರಗಳು.", + "eg_mail_example_com": "ಉದಾ. mail@example.com", + "eg_xyz": "ಉದಾ. XYZ", + "email": "ಇಮೇಲ್ ವಿಳಾಸ", + "email_address": "ಇಮೇಲ್ ವಿಳಾಸ", + "email_discharge_summary_description": "ಡಿಸ್ಚಾರ್ಜ್ ಸಾರಾಂಶವನ್ನು ಸ್ವೀಕರಿಸಲು ನಿಮ್ಮ ಮಾನ್ಯ ಇಮೇಲ್ ವಿಳಾಸವನ್ನು ನಮೂದಿಸಿ", + "email_success": "ನಾವು ಶೀಘ್ರದಲ್ಲೇ ಇಮೇಲ್ ಕಳುಹಿಸುತ್ತೇವೆ. ದಯವಿಟ್ಟು ನಿಮ್ಮ ಇನ್‌ಬಾಕ್ಸ್ ಪರಿಶೀಲಿಸಿ.", + "emergency": "ತುರ್ತು ಪರಿಸ್ಥಿತಿ", + "emergency_contact_number": "ತುರ್ತು ಸಂಪರ್ಕ ಸಂಖ್ಯೆ", + "empty_date_time": "--:-- --; ------------", + "encounter_date_field_label__A": "ಸೌಲಭ್ಯಕ್ಕೆ ಪ್ರವೇಶದ ದಿನಾಂಕ ಮತ್ತು ಸಮಯ", + "encounter_date_field_label__DC": "ಡೊಮಿಸಿಲಿಯರಿ ಕೇರ್ ಪ್ರಾರಂಭದ ದಿನಾಂಕ ಮತ್ತು ಸಮಯ", + "encounter_date_field_label__DD": "ಸಮಾಲೋಚನೆಯ ದಿನಾಂಕ ಮತ್ತು ಸಮಯ", + "encounter_date_field_label__HI": "ಸಮಾಲೋಚನೆಯ ದಿನಾಂಕ ಮತ್ತು ಸಮಯ", + "encounter_date_field_label__OP": "ಹೊರರೋಗಿ ಭೇಟಿಯ ದಿನಾಂಕ ಮತ್ತು ಸಮಯ", + "encounter_date_field_label__R": "ಸಮಾಲೋಚನೆಯ ದಿನಾಂಕ ಮತ್ತು ಸಮಯ", + "encounter_duration_confirmation": "ಈ ಎನ್ಕೌಂಟರ್ನ ಅವಧಿಯು ಇರುತ್ತದೆ", + "encounter_suggestion__A": "ಪ್ರವೇಶ", + "encounter_suggestion__DC": "ಡೊಮಿಸಿಲಿಯರಿ ಕೇರ್", + "encounter_suggestion__DD": "ಸಮಾಲೋಚನೆ", + "encounter_suggestion__HI": "ಸಮಾಲೋಚನೆ", + "encounter_suggestion__OP": "ಹೊರರೋಗಿಗಳ ಭೇಟಿ", + "encounter_suggestion__R": "ಸಮಾಲೋಚನೆ", + "encounter_suggestion_edit_disallowed": "ಸಂಪಾದನೆ ಸಮಾಲೋಚನೆಯಲ್ಲಿ ಈ ಆಯ್ಕೆಗೆ ಬದಲಾಯಿಸಲು ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ", "enter_file_name": "ಫೈಲ್ ಹೆಸರನ್ನು ನಮೂದಿಸಿ", - "no_files_found": "ಯಾವುದೇ {{type}} ಫೈಲ್‌ಗಳು ಕಂಡುಬಂದಿಲ್ಲ", - "upload_headings__patient": "ಹೊಸ ರೋಗಿಯ ಫೈಲ್ ಅನ್ನು ಅಪ್‌ಲೋಡ್ ಮಾಡಿ", - "upload_headings__consultation": "ಹೊಸ ಸಮಾಲೋಚನೆ ಫೈಲ್ ಅನ್ನು ಅಪ್ಲೋಡ್ ಮಾಡಿ", - "upload_headings__sample_report": "ಮಾದರಿ ವರದಿಯನ್ನು ಅಪ್ಲೋಡ್ ಮಾಡಿ", - "upload_headings__supporting_info": "ಪೋಷಕ ಮಾಹಿತಿಯನ್ನು ಅಪ್ಲೋಡ್ ಮಾಡಿ", - "file_list_headings__patient": "ರೋಗಿಯ ಫೈಲ್ಗಳು", - "file_list_headings__consultation": "ಸಮಾಲೋಚನೆ ಫೈಲ್ಗಳು", - "file_list_headings__sample_report": "ಮಾದರಿ ವರದಿ", - "file_list_headings__supporting_info": "ಪೋಷಕ ಮಾಹಿತಿ", + "enter_valid_age": "ದಯವಿಟ್ಟು ಮಾನ್ಯವಾದ ವಯಸ್ಸನ್ನು ನಮೂದಿಸಿ", + "entered-in-error": "ತಪ್ಪಾಗಿ ನಮೂದಿಸಲಾಗಿದೆ", + "error_404": "ದೋಷ 404", + "error_deleting_shifting": "ಶಿಫ್ಟಿಂಗ್ ರೆಕಾರ್ಡ್ ಅನ್ನು ಅಳಿಸುವಾಗ ದೋಷ", + "error_while_deleting_record": "ದಾಖಲೆಯನ್ನು ಅಳಿಸುವಾಗ ದೋಷ", + "escape": "ಎಸ್ಕೇಪ್", + "estimated_contact_date": "ಅಂದಾಜು ಸಂಪರ್ಕ ದಿನಾಂಕ", + "expected_burn_rate": "ನಿರೀಕ್ಷಿತ ಬರ್ನ್ ದರ", + "facilities": "ಸೌಲಭ್ಯಗಳು", + "facility": "ಸೌಲಭ್ಯ", + "facility_name": "ಸೌಲಭ್ಯದ ಹೆಸರು", + "facility_preference": "ಸೌಲಭ್ಯ ಆದ್ಯತೆ", + "facility_search_placeholder": "ಸೌಲಭ್ಯ / ಜಿಲ್ಲೆಯ ಹೆಸರಿನ ಮೂಲಕ ಹುಡುಕಿ", + "facility_type": "ಸೌಲಭ್ಯದ ಪ್ರಕಾರ", + "features": "ವೈಶಿಷ್ಟ್ಯಗಳು", + "feed_is_currently_not_live": "ಫೀಡ್ ಪ್ರಸ್ತುತ ಲೈವ್ ಆಗಿಲ್ಲ", + "feed_optimal_experience_for_apple_phones": "ಅತ್ಯುತ್ತಮ ವೀಕ್ಷಣೆಯ ಅನುಭವಕ್ಕಾಗಿ, ನಿಮ್ಮ ಸಾಧನವನ್ನು ತಿರುಗಿಸಲು ಪರಿಗಣಿಸಿ. ನಿಮ್ಮ ಸಾಧನದ ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ಸ್ವಯಂ-ತಿರುಗುವಿಕೆಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ.", + "feed_optimal_experience_for_phones": "ಅತ್ಯುತ್ತಮ ವೀಕ್ಷಣೆಯ ಅನುಭವಕ್ಕಾಗಿ, ನಿಮ್ಮ ಸಾಧನವನ್ನು ತಿರುಗಿಸಲು ಪರಿಗಣಿಸಿ.", + "field_required": "ಈ ಕ್ಷೇತ್ರದ ಅಗತ್ಯವಿದೆ", "file_error__choose_file": "ದಯವಿಟ್ಟು ಅಪ್‌ಲೋಡ್ ಮಾಡಲು ಫೈಲ್ ಅನ್ನು ಆಯ್ಕೆಮಾಡಿ", + "file_error__dynamic": "ಫೈಲ್ ಅಪ್‌ಲೋಡ್ ಮಾಡುವಲ್ಲಿ ದೋಷ: {{statusText}}", "file_error__file_name": "ದಯವಿಟ್ಟು ಫೈಲ್ ಹೆಸರನ್ನು ನಮೂದಿಸಿ", "file_error__file_size": "ಫೈಲ್‌ಗಳ ಗರಿಷ್ಠ ಗಾತ್ರ 100 MB", "file_error__file_type": "ಅಮಾನ್ಯವಾದ ಫೈಲ್ ಪ್ರಕಾರ \".{{extension}}\" ಅನುಮತಿಸಲಾದ ಪ್ರಕಾರಗಳು: {{allowedExtensions}}", - "file_uploaded": "ಫೈಲ್ ಅನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಅಪ್‌ಲೋಡ್ ಮಾಡಲಾಗಿದೆ", - "file_error__dynamic": "ಫೈಲ್ ಅಪ್‌ಲೋಡ್ ಮಾಡುವಲ್ಲಿ ದೋಷ: {{statusText}}", "file_error__network": "ಫೈಲ್ ಅಪ್‌ಲೋಡ್ ಮಾಡುವಲ್ಲಿ ದೋಷ: ನೆಟ್‌ವರ್ಕ್ ದೋಷ", - "monitor": "ಮಾನಿಟರ್", - "show_default_presets": "ಡೀಫಾಲ್ಟ್ ಪೂರ್ವನಿಗದಿಗಳನ್ನು ತೋರಿಸಿ", - "show_patient_presets": "ರೋಗಿಯ ಪೂರ್ವನಿಗದಿಗಳನ್ನು ತೋರಿಸಿ", - "moving_camera": "ಮೂವಿಂಗ್ ಕ್ಯಾಮೆರಾ", + "file_list_headings__consultation": "ಸಮಾಲೋಚನೆ ಫೈಲ್ಗಳು", + "file_list_headings__patient": "ರೋಗಿಯ ಫೈಲ್ಗಳು", + "file_list_headings__sample_report": "ಮಾದರಿ ವರದಿ", + "file_list_headings__supporting_info": "ಪೋಷಕ ಮಾಹಿತಿ", + "file_preview": "ಫೈಲ್ ಪೂರ್ವವೀಕ್ಷಣೆ", + "file_preview_not_supported": "ಈ ಫೈಲ್ ಅನ್ನು ಪೂರ್ವವೀಕ್ಷಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ಅದನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡಲು ಪ್ರಯತ್ನಿಸಿ.", + "file_uploaded": "ಫೈಲ್ ಅನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಅಪ್‌ಲೋಡ್ ಮಾಡಲಾಗಿದೆ", + "filter": "ಫಿಲ್ಟರ್", + "filter_by": "ಮೂಲಕ ಫಿಲ್ಟರ್ ಮಾಡಿ", + "filter_by_category": "ವರ್ಗದ ಪ್ರಕಾರ ಫಿಲ್ಟರ್ ಮಾಡಿ", + "filters": "ಶೋಧಕಗಳು", + "first_name": "ಮೊದಲ ಹೆಸರು", + "footer_body": "ಕೊರೊನಾಸೇಫ್ ನೆಟ್‌ವರ್ಕ್ ಎಂಬುದು ತೆರೆದ ಮೂಲ ಸಾರ್ವಜನಿಕ ಉಪಯುಕ್ತತೆಯಾಗಿದ್ದು, ನಾವೀನ್ಯಕಾರರು ಮತ್ತು ಸ್ವಯಂಸೇವಕರ ಬಹು-ಶಿಸ್ತಿನ ತಂಡದಿಂದ ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ. ಕರೋನಾ ಸೇಫ್ ಕೇರ್ ವಿಶ್ವಸಂಸ್ಥೆಯಿಂದ ಗುರುತಿಸಲ್ಪಟ್ಟ ಡಿಜಿಟಲ್ ಸಾರ್ವಜನಿಕ ಸೇವೆಯಾಗಿದೆ.", + "forget_password": "ಪಾಸ್ವರ್ಡ್ ಮರೆತಿರಾ?", + "forget_password_instruction": "ನಿಮ್ಮ ಬಳಕೆದಾರ ಹೆಸರನ್ನು ನಮೂದಿಸಿ ಮತ್ತು ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಮರುಹೊಂದಿಸಲು ನಾವು ನಿಮಗೆ ಲಿಂಕ್ ಅನ್ನು ಕಳುಹಿಸುತ್ತೇವೆ.", + "frequency": "ಆವರ್ತನ", "full_screen": "ಪೂರ್ಣ ಪರದೆ", - "feed_is_currently_not_live": "ಫೀಡ್ ಪ್ರಸ್ತುತ ಲೈವ್ ಆಗಿಲ್ಲ", - "zoom_out": "ಜೂಮ್ ಔಟ್", - "zoom_in": "ಜೂಮ್ ಇನ್", - "right": "ಸರಿ", + "gender": "ಲಿಂಗ", + "generate_report": "ವರದಿಯನ್ನು ರಚಿಸಿ", + "generated_summary_caution": "ಇದು CARE ವ್ಯವಸ್ಥೆಯಲ್ಲಿ ಸೆರೆಹಿಡಿಯಲಾದ ಮಾಹಿತಿಯನ್ನು ಬಳಸಿಕೊಂಡು ಕಂಪ್ಯೂಟರ್ ರಚಿಸಿದ ಸಾರಾಂಶವಾಗಿದೆ.", + "generating": "ಉತ್ಪಾದಿಸುತ್ತಿದೆ", + "generating_discharge_summary": "ಡಿಸ್ಚಾರ್ಜ್ ಸಾರಾಂಶವನ್ನು ರಚಿಸಲಾಗುತ್ತಿದೆ", + "get_tests": "ಪರೀಕ್ಷೆಗಳನ್ನು ಪಡೆಯಿರಿ", + "goal": "ಡಿಜಿಟಲ್ ಉಪಕರಣಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಸಾರ್ವಜನಿಕ ಆರೋಗ್ಯ ಸೇವೆಗಳ ಗುಣಮಟ್ಟ ಮತ್ತು ಪ್ರವೇಶವನ್ನು ನಿರಂತರವಾಗಿ ಸುಧಾರಿಸುವುದು ನಮ್ಮ ಗುರಿಯಾಗಿದೆ", + "help_confirmed": "ಇದನ್ನು ದೃಢಪಡಿಸಿದ ಸ್ಥಿತಿ ಎಂದು ಪರಿಗಣಿಸಲು ಸಾಕಷ್ಟು ರೋಗನಿರ್ಣಯ ಮತ್ತು/ಅಥವಾ ಕ್ಲಿನಿಕಲ್ ಪುರಾವೆಗಳಿವೆ.", + "help_differential": "ರೋಗನಿರ್ಣಯ ಪ್ರಕ್ರಿಯೆ ಮತ್ತು ಪ್ರಾಥಮಿಕ ಚಿಕಿತ್ಸೆಯನ್ನು ಮತ್ತಷ್ಟು ಮಾರ್ಗದರ್ಶನ ಮಾಡಲು ಸಮರ್ಥಿಸಲಾದ ಸಂಭಾವ್ಯ (ಮತ್ತು ಸಾಮಾನ್ಯವಾಗಿ ಪರಸ್ಪರ ಪ್ರತ್ಯೇಕವಾದ) ರೋಗನಿರ್ಣಯಗಳ ಒಂದು ಸೆಟ್.", + "help_entered-in-error": "ಹೇಳಿಕೆಯನ್ನು ತಪ್ಪಾಗಿ ನಮೂದಿಸಲಾಗಿದೆ ಮತ್ತು ಮಾನ್ಯವಾಗಿಲ್ಲ.", + "help_provisional": "ಇದು ತಾತ್ಕಾಲಿಕ ರೋಗನಿರ್ಣಯ - ಇನ್ನೂ ಪರಿಗಣನೆಯಲ್ಲಿರುವ ಅಭ್ಯರ್ಥಿ.", + "help_refuted": "ನಂತರದ ರೋಗನಿರ್ಣಯ ಮತ್ತು ಕ್ಲಿನಿಕಲ್ ಪುರಾವೆಗಳಿಂದ ಈ ಸ್ಥಿತಿಯನ್ನು ತಳ್ಳಿಹಾಕಲಾಗಿದೆ.", + "help_unconfirmed": "ಇದನ್ನು ದೃಢಪಡಿಸಿದ ಸ್ಥಿತಿ ಎಂದು ಪರಿಗಣಿಸಲು ಸಾಕಷ್ಟು ರೋಗನಿರ್ಣಯ ಮತ್ತು/ಅಥವಾ ವೈದ್ಯಕೀಯ ಪುರಾವೆಗಳಿಲ್ಲ.", + "hide": "ಮರೆಮಾಡಿ", + "home_facility": "ಮನೆ ಸೌಲಭ್ಯ", + "icd11_as_recommended": "WHO ಶಿಫಾರಸು ಮಾಡಿದ ICD-11 ಪ್ರಕಾರ", + "inconsistent_dosage_units_error": "ಡೋಸೇಜ್ ಘಟಕಗಳು ಒಂದೇ ಆಗಿರಬೇಕು", + "india_1": "ಭಾರತ", + "indian_mobile": "ಭಾರತೀಯ ಮೊಬೈಲ್", + "indicator": "ಸೂಚಕ", + "inidcator_event": "ಸೂಚಕ ಈವೆಂಟ್", + "instruction_on_titration": "ಟೈಟರೇಶನ್ ಕುರಿತು ಸೂಚನೆ", + "international_mobile": "ಅಂತಾರಾಷ್ಟ್ರೀಯ ಮೊಬೈಲ್", + "invalid_asset_id_msg": "ಓಹ್! ನೀವು ನಮೂದಿಸಿದ ಸ್ವತ್ತು ಐಡಿ ಮಾನ್ಯವಾಗಿರುವಂತೆ ತೋರುತ್ತಿಲ್ಲ.", + "invalid_email": "ದಯವಿಟ್ಟು ಸರಿಯಾದ ಇಮೇಲ್ ವಿಳಾಸವನ್ನು ನಮೂದಿಸಿ", + "invalid_link_msg": "ನೀವು ಬಳಸಿದ ಪಾಸ್‌ವರ್ಡ್ ಮರುಹೊಂದಿಸುವ ಲಿಂಕ್ ಅಮಾನ್ಯವಾಗಿದೆ ಅಥವಾ ಅವಧಿ ಮೀರಿದೆ ಎಂದು ತೋರುತ್ತಿದೆ. ದಯವಿಟ್ಟು ಹೊಸ ಪಾಸ್‌ವರ್ಡ್ ಮರುಹೊಂದಿಸುವ ಲಿಂಕ್ ಅನ್ನು ವಿನಂತಿಸಿ.", + "invalid_password": "ಪಾಸ್ವರ್ಡ್ ಅವಶ್ಯಕತೆಗಳನ್ನು ಪೂರೈಸುವುದಿಲ್ಲ", + "invalid_password_reset_link": "ಅಮಾನ್ಯವಾದ ಪಾಸ್‌ವರ್ಡ್ ಮರುಹೊಂದಿಸುವ ಲಿಂಕ್", + "invalid_phone": "ದಯವಿಟ್ಟು ಮಾನ್ಯವಾದ ಫೋನ್ ಸಂಖ್ಯೆಯನ್ನು ನಮೂದಿಸಿ", + "invalid_phone_number": "ಅಮಾನ್ಯವಾದ ಫೋನ್ ಸಂಖ್ಯೆ", + "invalid_pincode": "ಅಮಾನ್ಯವಾದ ಪಿನ್‌ಕೋಡ್", + "invalid_reset": "ಅಮಾನ್ಯ ಮರುಹೊಂದಿಸಿ", + "invalid_username": "ಅಗತ್ಯವಿದೆ. 150 ಅಕ್ಷರಗಳು ಅಥವಾ ಕಡಿಮೆ. ಅಕ್ಷರಗಳು, ಅಂಕೆಗಳು ಮತ್ತು @/./+/-/_ ಮಾತ್ರ.", + "inventory_management": "ದಾಸ್ತಾನು ನಿರ್ವಹಣೆ", + "investigation_reports": "ತನಿಖಾ ವರದಿಗಳು", + "investigations": "ತನಿಖೆಗಳು", + "investigations__date": "ದಿನಾಂಕ", + "investigations__ideal_value": "ಆದರ್ಶ ಮೌಲ್ಯ", + "investigations__name": "ಹೆಸರು", + "investigations__range": "ಮೌಲ್ಯ ಶ್ರೇಣಿ", + "investigations__result": "ಫಲಿತಾಂಶ", + "investigations__unit": "ಘಟಕ", + "investigations_suggested": "ತನಿಖೆಗಳನ್ನು ಸೂಚಿಸಲಾಗಿದೆ", + "is": "ಆಗಿದೆ", + "is_antenatal": "ಪ್ರಸವಪೂರ್ವವಾಗಿದೆ", + "is_emergency": "ತುರ್ತು ಆಗಿದೆ", + "is_emergency_case": "ತುರ್ತು ಪ್ರಕರಣವಾಗಿದೆ", + "is_it_upshift": "ಇದು ಮೇಲ್ಮುಖವಾಗಿದೆಯೇ", + "is_this_an_emergency": "ಇದು ತುರ್ತು ಪರಿಸ್ಥಿತಿಯೇ?", + "is_this_an_upshift": "ಇದು ಉನ್ನತಿಯೇ?", + "is_up_shift": "ಶಿಫ್ಟ್ ಆಗಿದೆ", + "is_upshift_case": "ಅಪ್ ಶಿಫ್ಟ್ ಕೇಸ್ ಆಗಿದೆ", + "landline": "ಭಾರತೀಯ ಸ್ಥಿರ ದೂರವಾಣಿ", + "last_administered": "ಕೊನೆಯದಾಗಿ ನಿರ್ವಹಿಸಲಾಗಿದೆ", + "last_edited": "ಕೊನೆಯದಾಗಿ ಸಂಪಾದಿಸಲಾಗಿದೆ", + "last_modified": "ಕೊನೆಯದಾಗಿ ಮಾರ್ಪಡಿಸಲಾಗಿದೆ", + "last_name": "ಕೊನೆಯ ಹೆಸರು", + "last_online": "ಕೊನೆಯ ಆನ್‌ಲೈನ್", + "last_serviced_on": "ಕೊನೆಯದಾಗಿ ಸೇವೆ ಸಲ್ಲಿಸಲಾಗಿದೆ", + "latitude_invalid": "ಅಕ್ಷಾಂಶವು -90 ಮತ್ತು 90 ರ ನಡುವೆ ಇರಬೇಕು", "left": "ಎಡಕ್ಕೆ", - "down": "ಕೆಳಗೆ", - "up": "ಮೇಲಕ್ಕೆ", - "RESPIRATORY_SUPPORT_SHORT__UNKNOWN": "ಯಾವುದೂ ಇಲ್ಲ", - "RESPIRATORY_SUPPORT_SHORT__OXYGEN_SUPPORT": "O2 ಬೆಂಬಲ", - "RESPIRATORY_SUPPORT_SHORT__NON_INVASIVE": "NIV", - "RESPIRATORY_SUPPORT_SHORT__INVASIVE": "IV", - "RESPIRATORY_SUPPORT__UNKNOWN": "ಯಾವುದೂ ಇಲ್ಲ", - "RESPIRATORY_SUPPORT__OXYGEN_SUPPORT": "ಆಮ್ಲಜನಕ ಬೆಂಬಲ", - "RESPIRATORY_SUPPORT__NON_INVASIVE": "ನಾನ್-ಇನ್ವೇಸಿವ್ ವೆಂಟಿಲೇಟರ್ (NIV)", - "RESPIRATORY_SUPPORT__INVASIVE": "ಆಕ್ರಮಣಕಾರಿ ವೆಂಟಿಲೇಟರ್ (IV)", - "VENTILATOR_MODE__CMV": "ಕಂಟ್ರೋಲ್ ಮೆಕ್ಯಾನಿಕಲ್ ವೆಂಟಿಲೇಷನ್ (CMV)", - "VENTILATOR_MODE__VCV": "ವಾಲ್ಯೂಮ್ ಕಂಟ್ರೋಲ್ ವೆಂಟಿಲೇಶನ್ (VCV)", - "VENTILATOR_MODE__PCV": "ಪ್ರೆಶರ್ ಕಂಟ್ರೋಲ್ ವೆಂಟಿಲೇಷನ್ (PCV)", - "VENTILATOR_MODE__SIMV": "ಸಿಂಕ್ರೊನೈಸ್ ಮಾಡಿದ ಮಧ್ಯಂತರ ಕಡ್ಡಾಯ ವಾತಾಯನ (SIMV)", - "VENTILATOR_MODE__VC_SIMV": "ವಾಲ್ಯೂಮ್ ಕಂಟ್ರೋಲ್ಡ್ SIMV (VC-SIMV)", - "VENTILATOR_MODE__PC_SIMV": "ಒತ್ತಡ ನಿಯಂತ್ರಿತ SIMV (PC-SIMV)", - "VENTILATOR_MODE__PSV": "C-PAP / ಪ್ರೆಶರ್ ಸಪೋರ್ಟ್ ವೆಂಟಿಲೇಷನ್ (PSV)", - "CONSCIOUSNESS_LEVEL__UNRESPONSIVE": "ಪ್ರತಿಕ್ರಿಯಿಸದ", - "CONSCIOUSNESS_LEVEL__RESPONDS_TO_PAIN": "ನೋವಿಗೆ ಸ್ಪಂದಿಸುತ್ತದೆ", - "CONSCIOUSNESS_LEVEL__RESPONDS_TO_VOICE": "ಧ್ವನಿಗೆ ಪ್ರತಿಕ್ರಿಯಿಸುತ್ತದೆ", - "CONSCIOUSNESS_LEVEL__ALERT": "ಎಚ್ಚರಿಕೆ", - "CONSCIOUSNESS_LEVEL__AGITATED_OR_CONFUSED": "ಕ್ಷೋಭೆ ಅಥವಾ ಗೊಂದಲ", - "CONSCIOUSNESS_LEVEL__ONSET_OF_AGITATION_AND_CONFUSION": "ಆಂದೋಲನ ಮತ್ತು ಗೊಂದಲದ ಆರಂಭ", - "PUPIL_REACTION__UNKNOWN": "ಅಜ್ಞಾತ", - "PUPIL_REACTION__BRISK": "ಚುರುಕಾದ", - "PUPIL_REACTION__SLUGGISH": "ಜಡ", - "PUPIL_REACTION__FIXED": "ನಿವಾರಿಸಲಾಗಿದೆ", - "PUPIL_REACTION__CANNOT_BE_ASSESSED": "ಮೌಲ್ಯಮಾಪನ ಮಾಡಲಾಗುವುದಿಲ್ಲ", - "LIMB_RESPONSE__UNKNOWN": "ಅಜ್ಞಾತ", - "LIMB_RESPONSE__STRONG": "ಬಲಶಾಲಿ", - "LIMB_RESPONSE__MODERATE": "ಮಧ್ಯಮ", - "LIMB_RESPONSE__WEAK": "ದುರ್ಬಲ", - "LIMB_RESPONSE__FLEXION": "ಬಾಗುವಿಕೆ", - "LIMB_RESPONSE__EXTENSION": "ವಿಸ್ತರಣೆ", - "LIMB_RESPONSE__NONE": "ಯಾವುದೂ ಇಲ್ಲ", - "OXYGEN_MODALITY__NASAL_PRONGS": "ಮೂಗಿನ ಪ್ರಾಂಗ್ಸ್", - "OXYGEN_MODALITY__SIMPLE_FACE_MASK": "ಸರಳ ಫೇಸ್ ಮಾಸ್ಕ್", - "OXYGEN_MODALITY__NON_REBREATHING_MASK": "ನಾನ್ ರಿಬ್ರೆಥಿಂಗ್ ಮಾಸ್ಕ್", - "OXYGEN_MODALITY__HIGH_FLOW_NASAL_CANNULA": "ಹೈ ಫ್ಲೋ ನಾಸಲ್ ಕ್ಯಾನುಲಾ", - "INSULIN_INTAKE_FREQUENCY__UNKNOWN": "ಅಜ್ಞಾತ", - "INSULIN_INTAKE_FREQUENCY__OD": "ದಿನಕ್ಕೆ ಒಮ್ಮೆ (OD)", - "INSULIN_INTAKE_FREQUENCY__BD": "ದಿನಕ್ಕೆ ಎರಡು ಬಾರಿ (BD)", - "INSULIN_INTAKE_FREQUENCY__TD": "ದಿನಕ್ಕೆ ಮೂರು ಬಾರಿ (ಟಿಡಿ)", - "NURSING_CARE_PROCEDURE__personal_hygiene": "ವೈಯಕ್ತಿಕ ನೈರ್ಮಲ್ಯ", - "NURSING_CARE_PROCEDURE__positioning": "ಸ್ಥಾನೀಕರಣ", - "NURSING_CARE_PROCEDURE__suctioning": "ಹೀರುವುದು", - "NURSING_CARE_PROCEDURE__ryles_tube_care": "ರೈಲ್ಸ್ ಟ್ಯೂಬ್ ಕೇರ್", - "NURSING_CARE_PROCEDURE__iv_sitecare": "IV ಸೈಟ್ ಕೇರ್", - "NURSING_CARE_PROCEDURE__nubulisation": "ನೂಬುಲೈಸೇಶನ್", - "NURSING_CARE_PROCEDURE__dressing": "ಡ್ರೆಸ್ಸಿಂಗ್", - "NURSING_CARE_PROCEDURE__dvt_pump_stocking": "DVT ಪಂಪ್ ಸ್ಟಾಕಿಂಗ್", - "NURSING_CARE_PROCEDURE__restrain": "ನಿಗ್ರಹಿಸಿ", - "NURSING_CARE_PROCEDURE__chest_tube_care": "ಚೆಸ್ಟ್ ಟ್ಯೂಬ್ ಕೇರ್", - "NURSING_CARE_PROCEDURE__tracheostomy_care": "ಟ್ರಾಕಿಯೊಸ್ಟೊಮಿ ಕೇರ್", - "NURSING_CARE_PROCEDURE__stoma_care": "ಸ್ಟೊಮಾ ಕೇರ್", - "NURSING_CARE_PROCEDURE__catheter_care": "ಕ್ಯಾತಿಟರ್ ಕೇರ್", - "HEARTBEAT_RHYTHM__REGULAR": "ನಿಯಮಿತ", - "HEARTBEAT_RHYTHM__IRREGULAR": "ಅನಿಯಮಿತ", - "HEARTBEAT_RHYTHM__UNKNOWN": "ಅಜ್ಞಾತ", + "linked_facilities": "ಲಿಂಕ್ಡ್ ಸೌಲಭ್ಯಗಳು", + "liquid_oxygen_capacity": "ದ್ರವ ಆಮ್ಲಜನಕದ ಸಾಮರ್ಥ್ಯ", + "list_view": "ಪಟ್ಟಿ ವೀಕ್ಷಣೆ", + "litres": "ಲೀಟರ್", + "litres_per_day": "ಲೀಟರ್ / ದಿನ", + "live": "ಲೈವ್", + "live_monitoring": "ಲೈವ್ ಮಾನಿಟರಿಂಗ್", + "load_more": "ಇನ್ನಷ್ಟು ಲೋಡ್ ಮಾಡಿ", + "loading": "ಲೋಡ್ ಆಗುತ್ತಿದೆ...", + "local_body": "ಸ್ಥಳೀಯ ಸಂಸ್ಥೆ", + "local_ipaddress": "ಸ್ಥಳೀಯ IP ವಿಳಾಸ", + "location": "ಸ್ಥಳ", + "location_management": "ಸ್ಥಳ ನಿರ್ವಹಣೆ", + "log_lab_results": "ಲಾಗ್ ಲ್ಯಾಬ್ ಫಲಿತಾಂಶಗಳು", + "log_report": "ಲಾಗ್ ವರದಿ", + "login": "ಲಾಗಿನ್", + "longitude_invalid": "ರೇಖಾಂಶವು -180 ಮತ್ತು 180 ರ ನಡುವೆ ಇರಬೇಕು", + "lsg": "Lsg", + "make_multiple_beds_label": "ನೀವು ಬಹು ಹಾಸಿಗೆಗಳನ್ನು ಮಾಡಲು ಬಯಸುವಿರಾ?", + "manage_prescriptions": "ಪ್ರಿಸ್ಕ್ರಿಪ್ಷನ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸಿ", + "manufacturer": "ತಯಾರಕ", "map_acronym": "ನಕ್ಷೆ", - "systolic": "ಸಿಸ್ಟೊಲಿಕ್", - "diastolic": "ಡಯಾಸ್ಟೊಲಿಕ್", - "pain": "ನೋವು", - "pain_chart_description": "ನೋವಿನ ಪ್ರದೇಶ ಮತ್ತು ತೀವ್ರತೆಯನ್ನು ಗುರುತಿಸಿ", - "bradycardia": "ಬ್ರಾಡಿಕಾರ್ಡಿಯಾ", - "tachycardia": "ಟಾಕಿಕಾರ್ಡಿಯಾ", - "medicine": "ಔಷಧಿ", - "route": "ಮಾರ್ಗ", - "dosage": "ಡೋಸೇಜ್", - "base_dosage": "ಡೋಸೇಜ್", - "start_dosage": "ಡೋಸೇಜ್ ಪ್ರಾರಂಭಿಸಿ", - "target_dosage": "ಗುರಿ ಡೋಸೇಜ್", - "instruction_on_titration": "ಟೈಟರೇಶನ್ ಕುರಿತು ಸೂಚನೆ", - "titrate_dosage": "ಟೈಟ್ರೇಟ್ ಡೋಸೇಜ್", - "indicator": "ಸೂಚಕ", - "inidcator_event": "ಸೂಚಕ ಈವೆಂಟ್", + "mark_all_as_read": "ಎಲ್ಲವನ್ನೂ ಓದಿ ಎಂದು ಗುರುತಿಸಿ", + "mark_as_read": "ಓದಿದಂತೆ ಗುರುತಿಸಿ", + "mark_as_unread": "ಓದದಿರುವಂತೆ ಗುರುತಿಸಿ", + "mark_this_transfer_as_complete_question": "ಈ ವರ್ಗಾವಣೆ ಪೂರ್ಣಗೊಂಡಿದೆ ಎಂದು ಗುರುತಿಸಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ? ಮೂಲ ಸೌಲಭ್ಯವು ಇನ್ನು ಮುಂದೆ ಈ ರೋಗಿಗೆ ಪ್ರವೇಶವನ್ನು ಹೊಂದಿರುವುದಿಲ್ಲ", + "mark_transfer_complete_confirmation": "ಈ ವರ್ಗಾವಣೆ ಪೂರ್ಣಗೊಂಡಿದೆ ಎಂದು ಗುರುತಿಸಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ? ಮೂಲ ಸೌಲಭ್ಯವು ಇನ್ನು ಮುಂದೆ ಈ ರೋಗಿಗೆ ಪ್ರವೇಶವನ್ನು ಹೊಂದಿರುವುದಿಲ್ಲ", "max_dosage_24_hrs": "ಗರಿಷ್ಠ 24 ಗಂಟೆಗಳಲ್ಲಿ ಡೋಸೇಜ್", - "min_time_bw_doses": "ಕನಿಷ್ಠ ಸಮಯ b/w ಪ್ರಮಾಣಗಳು", - "manage_prescriptions": "ಪ್ರಿಸ್ಕ್ರಿಪ್ಷನ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸಿ", - "prescription_details": "ಪ್ರಿಸ್ಕ್ರಿಪ್ಷನ್ ವಿವರಗಳು", - "prescription_medications": "ಪ್ರಿಸ್ಕ್ರಿಪ್ಷನ್ ಔಷಧಿಗಳು", - "prn_prescriptions": "PRN ಪ್ರಿಸ್ಕ್ರಿಪ್ಷನ್‌ಗಳು", - "prescription": "ಪ್ರಿಸ್ಕ್ರಿಪ್ಷನ್", - "discharge_prescription": "ಡಿಸ್ಚಾರ್ಜ್ ಪ್ರಿಸ್ಕ್ರಿಪ್ಷನ್", - "edit_prescriptions": "ಪ್ರಿಸ್ಕ್ರಿಪ್ಷನ್‌ಗಳನ್ನು ಸಂಪಾದಿಸಿ", - "prescription_medication": "ಪ್ರಿಸ್ಕ್ರಿಪ್ಷನ್ ಔಷಧಿ", - "add_prescription_medication": "ಪ್ರಿಸ್ಕ್ರಿಪ್ಷನ್ ಔಷಧಿಗಳನ್ನು ಸೇರಿಸಿ", - "prn_prescription": "PRN ಪ್ರಿಸ್ಕ್ರಿಪ್ಷನ್", - "add_prn_prescription": "PRN ಪ್ರಿಸ್ಕ್ರಿಪ್ಷನ್ ಸೇರಿಸಿ", - "add_prescription_to_consultation_note": "ಈ ಸಮಾಲೋಚನೆಗೆ ಹೊಸ ಪ್ರಿಸ್ಕ್ರಿಪ್ಷನ್ ಸೇರಿಸಿ.", + "max_dosage_in_24hrs_gte_base_dosage_error": "ಗರಿಷ್ಠ 24 ಗಂಟೆಗಳಲ್ಲಿ ಡೋಸೇಜ್ ಬೇಸ್ ಡೋಸೇಜ್‌ಗಿಂತ ಹೆಚ್ಚಾಗಿರಬೇಕು ಅಥವಾ ಸಮನಾಗಿರಬೇಕು", + "max_size_for_image_uploaded_should_be": "ಅಪ್‌ಲೋಡ್ ಮಾಡಿದ ಚಿತ್ರಕ್ಕೆ ಗರಿಷ್ಠ ಗಾತ್ರ ಇರಬೇಕು", + "medical_worker": "ವೈದ್ಯಕೀಯ ಕೆಲಸಗಾರ", + "medicine": "ಔಷಧಿ", "medicine_administration_history": "ಮೆಡಿಸಿನ್ ಅಡ್ಮಿನಿಸ್ಟ್ರೇಷನ್ ಇತಿಹಾಸ", - "return_to_patient_dashboard": "ರೋಗಿಯ ಡ್ಯಾಶ್‌ಬೋರ್ಡ್‌ಗೆ ಹಿಂತಿರುಗಿ", - "administered_on": "ರಂದು ನಿರ್ವಹಿಸಲಾಗಿದೆ", - "administer": "ನಿರ್ವಹಿಸು", - "administer_medicine": "ಔಷಧವನ್ನು ನಿರ್ವಹಿಸಿ", - "administer_medicines": "ಔಷಧಗಳನ್ನು ನಿರ್ವಹಿಸಿ", - "administer_selected_medicines": "ಆಯ್ದ ಔಷಧಗಳನ್ನು ನಿರ್ವಹಿಸಿ", - "select_for_administration": "ಆಡಳಿತಕ್ಕಾಗಿ ಆಯ್ಕೆಮಾಡಿ", "medicines_administered": "ಔಷಧ(ಗಳು) ನಿರ್ವಹಿಸಲಾಗಿದೆ", "medicines_administered_error": "ಔಷಧ(ಗಳನ್ನು) ನಿರ್ವಹಿಸುವಲ್ಲಿ ದೋಷ", - "prescription_discontinued": "ಪ್ರಿಸ್ಕ್ರಿಪ್ಷನ್ ಸ್ಥಗಿತಗೊಂಡಿದೆ", - "administration_notes": "ಆಡಳಿತ ಟಿಪ್ಪಣಿಗಳು", - "last_administered": "ಕೊನೆಯದಾಗಿ ನಿರ್ವಹಿಸಲಾಗಿದೆ", - "prescription_logs": "ಪ್ರಿಸ್ಕ್ರಿಪ್ಷನ್ ದಾಖಲೆಗಳು", + "middleware_hostname": "ಮಿಡಲ್ವೇರ್ ಹೋಸ್ಟ್ ಹೆಸರು", + "min_password_len_8": "ಕನಿಷ್ಠ ಪಾಸ್‌ವರ್ಡ್ ಉದ್ದ 8", + "min_time_bw_doses": "ಕನಿಷ್ಠ ಸಮಯ b/w ಪ್ರಮಾಣಗಳು", + "mobile": "ಮೊಬೈಲ್", + "mobile_number": "ಮೊಬೈಲ್ ಸಂಖ್ಯೆ", "modification_caution_note": "ಒಮ್ಮೆ ಸೇರಿಸಿದ ನಂತರ ಯಾವುದೇ ಮಾರ್ಪಾಡುಗಳು ಸಾಧ್ಯವಿಲ್ಲ", - "discontinue_caution_note": "ಈ ಪ್ರಿಸ್ಕ್ರಿಪ್ಷನ್ ಅನ್ನು ನಿಲ್ಲಿಸಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?", - "confirm_discontinue": "ಸ್ಥಗಿತಗೊಳಿಸುವುದನ್ನು ದೃಢೀಕರಿಸಿ", - "edit_caution_note": "ಸಂಪಾದಿತ ವಿವರಗಳೊಂದಿಗೆ ಹೊಸ ಪ್ರಿಸ್ಕ್ರಿಪ್ಷನ್ ಅನ್ನು ಸಮಾಲೋಚನೆಗೆ ಸೇರಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಪ್ರಸ್ತುತ ಪ್ರಿಸ್ಕ್ರಿಪ್ಷನ್ ಅನ್ನು ಸ್ಥಗಿತಗೊಳಿಸಲಾಗುತ್ತದೆ.", - "reason_for_discontinuation": "ಸ್ಥಗಿತಗೊಳ್ಳಲು ಕಾರಣ", - "reason_for_edit": "ಸಂಪಾದನೆಗೆ ಕಾರಣ", - "PRESCRIPTION_ROUTE_ORAL": "ಮೌಖಿಕ", - "PRESCRIPTION_ROUTE_IV": "IV", - "PRESCRIPTION_ROUTE_IM": "IM", - "PRESCRIPTION_ROUTE_SC": "ಎಸ್/ಸಿ", - "PRESCRIPTION_ROUTE_INHALATION": "ಇನ್ಹಲೇಷನ್", - "PRESCRIPTION_ROUTE_NASOGASTRIC": "ನಾಸೊಗ್ಯಾಸ್ಟ್ರಿಕ್ / ಗ್ಯಾಸ್ಟ್ರೋಸ್ಟೊಮಿ ಟ್ಯೂಬ್", - "PRESCRIPTION_ROUTE_INTRATHECAL": "ಇಂಟ್ರಾಥೆಕಲ್ ಇಂಜೆಕ್ಷನ್", - "PRESCRIPTION_ROUTE_TRANSDERMAL": "ಟ್ರಾನ್ಸ್ಡರ್ಮಲ್", - "PRESCRIPTION_ROUTE_RECTAL": "ಗುದನಾಳ", - "PRESCRIPTION_ROUTE_SUBLINGUAL": "ಉಪಭಾಷೆ", - "PRESCRIPTION_FREQUENCY_STAT": "ತಕ್ಷಣವೇ", - "PRESCRIPTION_FREQUENCY_OD": "ದಿನಕ್ಕೆ ಒಮ್ಮೆ", - "PRESCRIPTION_FREQUENCY_HS": "ರಾತ್ರಿ ಮಾತ್ರ", - "PRESCRIPTION_FREQUENCY_BD": "ದಿನಕ್ಕೆ ಎರಡು ಬಾರಿ", - "PRESCRIPTION_FREQUENCY_TID": "8 ನೇ ಗಂಟೆಗೆ", - "PRESCRIPTION_FREQUENCY_QID": "6 ನೇ ಗಂಟೆಗೆ", - "PRESCRIPTION_FREQUENCY_Q4H": "4 ನೇ ಗಂಟೆಗೆ", - "PRESCRIPTION_FREQUENCY_QOD": "ಪರ್ಯಾಯ ದಿನ", - "PRESCRIPTION_FREQUENCY_QWK": "ವಾರಕ್ಕೊಮ್ಮೆ", - "inconsistent_dosage_units_error": "ಡೋಸೇಜ್ ಘಟಕಗಳು ಒಂದೇ ಆಗಿರಬೇಕು", - "max_dosage_in_24hrs_gte_base_dosage_error": "ಗರಿಷ್ಠ 24 ಗಂಟೆಗಳಲ್ಲಿ ಡೋಸೇಜ್ ಬೇಸ್ ಡೋಸೇಜ್‌ಗಿಂತ ಹೆಚ್ಚಾಗಿರಬೇಕು ಅಥವಾ ಸಮನಾಗಿರಬೇಕು", - "administration_dosage_range_error": "ಡೋಸೇಜ್ ಪ್ರಾರಂಭ ಮತ್ತು ಗುರಿ ಡೋಸೇಜ್ ನಡುವೆ ಇರಬೇಕು", + "modified": "ಮಾರ್ಪಡಿಸಲಾಗಿದೆ", + "modified_date": "ಮಾರ್ಪಡಿಸಿದ ದಿನಾಂಕ", + "monitor": "ಮಾನಿಟರ್", + "more_info": "ಹೆಚ್ಚಿನ ಮಾಹಿತಿ", + "moving_camera": "ಮೂವಿಂಗ್ ಕ್ಯಾಮೆರಾ", + "name": "ಹೆಸರು", + "name_of_hospital": "ಆಸ್ಪತ್ರೆಯ ಹೆಸರು", + "name_of_shifting_approving_facility": "ಶಿಫ್ಟಿಂಗ್ ಅನುಮೋದಿಸುವ ಸೌಲಭ್ಯದ ಹೆಸರು", + "nationality": "ರಾಷ್ಟ್ರೀಯತೆ", + "never": "ಎಂದಿಗೂ", + "new_password": "ಹೊಸ ಪಾಸ್ವರ್ಡ್", + "next_sessions": "ಮುಂದಿನ ಸೆಷನ್‌ಗಳು", + "no": "ಸಂ", + "no_bed_types_found": "ಯಾವುದೇ ಹಾಸಿಗೆಯ ಪ್ರಕಾರಗಳು ಕಂಡುಬಂದಿಲ್ಲ", + "no_changes": "ಯಾವುದೇ ಬದಲಾವಣೆಗಳಿಲ್ಲ", + "no_changes_made": "ಯಾವುದೇ ಬದಲಾವಣೆಗಳನ್ನು ಮಾಡಲಾಗಿಲ್ಲ", + "no_consultation_updates": "ಸಮಾಲೋಚನೆಯ ನವೀಕರಣಗಳಿಲ್ಲ", + "no_cover_photo_uploaded_for_this_facility": "ಈ ಸೌಲಭ್ಯಕ್ಕಾಗಿ ಯಾವುದೇ ಕವರ್ ಫೋಟೋ ಅಪ್‌ಲೋಡ್ ಮಾಡಲಾಗಿಲ್ಲ", + "no_data_found": "ಯಾವುದೇ ಡೇಟಾ ಕಂಡುಬಂದಿಲ್ಲ", + "no_duplicate_facility": "ನೀವು ನಕಲಿ ಸೌಲಭ್ಯಗಳನ್ನು ರಚಿಸಬಾರದು", + "no_facilities": "ಯಾವುದೇ ಸೌಲಭ್ಯಗಳು ಕಂಡುಬಂದಿಲ್ಲ", + "no_files_found": "ಯಾವುದೇ {{type}} ಫೈಲ್‌ಗಳು ಕಂಡುಬಂದಿಲ್ಲ", + "no_home_facility": "ಮನೆ ಸೌಲಭ್ಯ ನೀಡಿಲ್ಲ", + "no_investigation": "ಯಾವುದೇ ತನಿಖಾ ವರದಿಗಳು ಕಂಡುಬಂದಿಲ್ಲ", + "no_investigation_suggestions": "ಯಾವುದೇ ತನಿಖೆಯ ಸಲಹೆಗಳಿಲ್ಲ", + "no_linked_facilities": "ಯಾವುದೇ ಲಿಂಕ್ ಮಾಡಲಾದ ಸೌಲಭ್ಯಗಳಿಲ್ಲ", + "no_log_update_delta": "ಹಿಂದಿನ ಲಾಗ್ ನವೀಕರಣದ ನಂತರ ಯಾವುದೇ ಬದಲಾವಣೆಗಳಿಲ್ಲ", "no_notices_for_you": "ನಿಮಗಾಗಿ ಯಾವುದೇ ಸೂಚನೆಗಳಿಲ್ಲ.", - "mark_as_read": "ಓದಿದಂತೆ ಗುರುತಿಸಿ", - "mark_as_unread": "ಓದದಿರುವಂತೆ ಗುರುತಿಸಿ", - "subscribe": "ಚಂದಾದಾರರಾಗಿ", - "subscribe_on_this_device": "ಈ ಸಾಧನದಲ್ಲಿ ಚಂದಾದಾರರಾಗಿ", + "no_patients_to_show": "ತೋರಿಸಲು ರೋಗಿಗಳಿಲ್ಲ.", + "no_results_found": "ಯಾವುದೇ ಫಲಿತಾಂಶಗಳು ಕಂಡುಬಂದಿಲ್ಲ", + "no_staff": "ಸಿಬ್ಬಂದಿ ಪತ್ತೆಯಾಗಿಲ್ಲ", + "no_treating_physicians_available": "ಈ ಸೌಲಭ್ಯವು ಯಾವುದೇ ಮನೆ ಸೌಲಭ್ಯ ವೈದ್ಯರನ್ನು ಹೊಂದಿಲ್ಲ. ದಯವಿಟ್ಟು ನಿಮ್ಮ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ.", + "no_users_found": "ಯಾವುದೇ ಬಳಕೆದಾರರು ಕಂಡುಬಂದಿಲ್ಲ", + "none": "ಯಾವುದೂ ಇಲ್ಲ", + "normal": "ಸಾಮಾನ್ಯ", + "not_specified": "ನಿರ್ದಿಷ್ಟಪಡಿಸಲಾಗಿಲ್ಲ", + "notes": "ಟಿಪ್ಪಣಿಗಳು", + "notes_placeholder": "ನಿಮ್ಮ ಟಿಪ್ಪಣಿಗಳನ್ನು ಟೈಪ್ ಮಾಡಿ", "notification_permission_denied": "ಅಧಿಸೂಚನೆ ಅನುಮತಿ ನಿರಾಕರಿಸಲಾಗಿದೆ", "notification_permission_granted": "ಅಧಿಸೂಚನೆ ಅನುಮತಿ ನೀಡಲಾಗಿದೆ", - "show_unread_notifications": "ಓದದಿರುವುದನ್ನು ತೋರಿಸಿ", - "show_all_notifications": "ಎಲ್ಲವನ್ನೂ ತೋರಿಸು", - "filter_by_category": "ವರ್ಗದ ಪ್ರಕಾರ ಫಿಲ್ಟರ್ ಮಾಡಿ", - "mark_all_as_read": "ಎಲ್ಲವನ್ನೂ ಓದಿ ಎಂದು ಗುರುತಿಸಿ", - "reload": "ಮರುಲೋಡ್ ಮಾಡಿ", - "no_results_found": "ಯಾವುದೇ ಫಲಿತಾಂಶಗಳು ಕಂಡುಬಂದಿಲ್ಲ", - "load_more": "ಇನ್ನಷ್ಟು ಲೋಡ್ ಮಾಡಿ", - "subscription_error": "ಚಂದಾದಾರಿಕೆ ದೋಷ", - "unsubscribe_failed": "ಅನ್‌ಸಬ್‌ಸ್ಕ್ರೈಬ್ ವಿಫಲವಾಗಿದೆ.", - "unsubscribe": "ಅನ್‌ಸಬ್‌ಸ್ಕ್ರೈಬ್ ಮಾಡಿ", - "escape": "ಎಸ್ಕೇಪ್", - "invalid_asset_id_msg": "ಓಹ್! ನೀವು ನಮೂದಿಸಿದ ಸ್ವತ್ತು ಐಡಿ ಮಾನ್ಯವಾಗಿರುವಂತೆ ತೋರುತ್ತಿಲ್ಲ.", - "asset_not_found_msg": "ಓಹ್! ನೀವು ಹುಡುಕುತ್ತಿರುವ ಸ್ವತ್ತು ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲ. ದಯವಿಟ್ಟು ಸ್ವತ್ತಿನ ಐಡಿಯನ್ನು ಪರಿಶೀಲಿಸಿ.", - "create_resource_request": "ಸಂಪನ್ಮೂಲ ವಿನಂತಿಯನ್ನು ರಚಿಸಿ", - "contact_person": "ಸೌಲಭ್ಯದಲ್ಲಿರುವ ಸಂಪರ್ಕ ವ್ಯಕ್ತಿಯ ಹೆಸರು", - "approving_facility": "ಅನುಮೋದಿಸುವ ಸೌಲಭ್ಯದ ಹೆಸರು", - "contact_phone": "ಸಂಪರ್ಕ ವ್ಯಕ್ತಿ ಸಂಖ್ಯೆ", + "number_of_aged_dependents_above_60": "ವಯಸ್ಸಾದ ಅವಲಂಬಿತರ ಸಂಖ್ಯೆ (60 ಕ್ಕಿಂತ ಹೆಚ್ಚು)", + "number_of_beds": "ಹಾಸಿಗೆಗಳ ಸಂಖ್ಯೆ", + "number_of_beds_out_of_range_error": "ಹಾಸಿಗೆಗಳ ಸಂಖ್ಯೆ 100 ಕ್ಕಿಂತ ಹೆಚ್ಚಿರಬಾರದು", + "number_of_chronic_diseased_dependents": "ದೀರ್ಘಕಾಲದ ರೋಗಗಳ ಅವಲಂಬಿತರ ಸಂಖ್ಯೆ", + "on": "ಆನ್", + "ongoing_medications": "ನಡೆಯುತ್ತಿರುವ ಔಷಧಿಗಳು", + "open": "ತೆರೆಯಿರಿ", + "open_camera": "ಕ್ಯಾಮರಾ ತೆರೆಯಿರಿ", + "open_live_monitoring": "ಲೈವ್ ಮಾನಿಟರಿಂಗ್ ತೆರೆಯಿರಿ", + "optional": "ಐಚ್ಛಿಕ", + "ordering": "ಆರ್ಡರ್ ಮಾಡಲಾಗುತ್ತಿದೆ", + "origin_facility": "ಪ್ರಸ್ತುತ ಸೌಲಭ್ಯ", + "oxygen_information": "ಆಮ್ಲಜನಕ ಮಾಹಿತಿ", + "page_not_found": "ಪುಟ ಕಂಡುಬಂದಿಲ್ಲ", + "pain": "ನೋವು", + "pain_chart_description": "ನೋವಿನ ಪ್ರದೇಶ ಮತ್ತು ತೀವ್ರತೆಯನ್ನು ಗುರುತಿಸಿ", + "passport_number": "ಪಾಸ್ಪೋರ್ಟ್ ಸಂಖ್ಯೆ", + "password": "ಪಾಸ್ವರ್ಡ್", + "password_mismatch": "ಪಾಸ್ವರ್ಡ್ ಮತ್ತು ದೃಢೀಕರಣ ಪಾಸ್ವರ್ಡ್ ಒಂದೇ ಆಗಿರಬೇಕು.", + "password_reset_failure": "ಪಾಸ್ವರ್ಡ್ ಮರುಹೊಂದಿಸಲು ವಿಫಲವಾಗಿದೆ", + "password_reset_success": "ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಮರುಹೊಂದಿಸಲಾಗಿದೆ", + "password_sent": "ಪಾಸ್ವರ್ಡ್ ಮರುಹೊಂದಿಸುವ ಇಮೇಲ್ ಕಳುಹಿಸಲಾಗಿದೆ", + "patient_address": "ರೋಗಿಯ ವಿಳಾಸ", + "patient_category": "ರೋಗಿಗಳ ವರ್ಗ", + "patient_consultation__admission": "ಪ್ರವೇಶ ದಿನಾಂಕ", + "patient_consultation__consultation_notes": "ಸಾಮಾನ್ಯ ಸೂಚನೆಗಳು", + "patient_consultation__dc_admission": "ಮನೆಯ ಆರೈಕೆಯ ದಿನಾಂಕ ಪ್ರಾರಂಭವಾಗಿದೆ", + "patient_consultation__ip": "IP", + "patient_consultation__op": "OP", + "patient_consultation__special_instruction": "ವಿಶೇಷ ಸೂಚನೆಗಳು", + "patient_consultation__treatment__plan": "ಯೋಜನೆ", + "patient_consultation__treatment__summary": "ಸಾರಾಂಶ", + "patient_consultation__treatment__summary__date": "ದಿನಾಂಕ", + "patient_consultation__treatment__summary__spo2": "SpO2", + "patient_consultation__treatment__summary__temperature": "ತಾಪಮಾನ", + "patient_created": "ರೋಗಿಯನ್ನು ರಚಿಸಲಾಗಿದೆ", + "patient_name": "ರೋಗಿಯ ಹೆಸರು", + "patient_no": "OP/IP ಸಂ", + "patient_phone_number": "ರೋಗಿಯ ಫೋನ್ ಸಂಖ್ಯೆ", + "patient_registration__address": "ವಿಳಾಸ", + "patient_registration__age": "ವಯಸ್ಸು", + "patient_registration__comorbidities": "ಸಹವರ್ತಿ ರೋಗಗಳು", + "patient_registration__comorbidities__details": "ವಿವರಗಳು", + "patient_registration__comorbidities__disease": "ರೋಗ", + "patient_registration__contact": "ತುರ್ತು ಸಂಪರ್ಕ", + "patient_registration__gender": "ಲಿಂಗ", + "patient_registration__name": "ಹೆಸರು", + "patient_state": "ರೋಗಿಯ ಸ್ಥಿತಿ", + "patient_status": "ರೋಗಿಯ ಸ್ಥಿತಿ", + "patient_transfer_birth_match_note": "ಗಮನಿಸಿ: ವರ್ಗಾವಣೆ ವಿನಂತಿಯನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲು ಹುಟ್ಟಿದ ವರ್ಷವು ರೋಗಿಗೆ ಹೊಂದಿಕೆಯಾಗಬೇಕು.", + "phone": "ಫೋನ್", + "phone_no": "ದೂರವಾಣಿ ಸಂಖ್ಯೆ.", + "phone_number": "ದೂರವಾಣಿ ಸಂಖ್ಯೆ", + "phone_number_at_current_facility": "ಪ್ರಸ್ತುತ ಸೌಲಭ್ಯದಲ್ಲಿರುವ ವ್ಯಕ್ತಿಯ ಸಂಪರ್ಕದ ಫೋನ್ ಸಂಖ್ಯೆ", + "pincode": "ಪಿನ್‌ಕೋಡ್", + "please_enter_a_reason_for_the_shift": "ದಯವಿಟ್ಟು ಶಿಫ್ಟ್‌ಗೆ ಕಾರಣವನ್ನು ನಮೂದಿಸಿ.", + "please_select_a_facility": "ದಯವಿಟ್ಟು ಸೌಲಭ್ಯವನ್ನು ಆಯ್ಕೆಮಾಡಿ", + "please_select_breathlessness_level": "ದಯವಿಟ್ಟು ಉಸಿರಾಟದ ಮಟ್ಟವನ್ನು ಆಯ್ಕೆಮಾಡಿ", + "please_select_facility_type": "ದಯವಿಟ್ಟು ಸೌಲಭ್ಯದ ಪ್ರಕಾರವನ್ನು ಆಯ್ಕೆಮಾಡಿ", + "please_select_patient_category": "ದಯವಿಟ್ಟು ರೋಗಿಯ ವರ್ಗವನ್ನು ಆಯ್ಕೆಮಾಡಿ", + "please_select_preferred_vehicle_type": "ದಯವಿಟ್ಟು ಆದ್ಯತೆಯ ವಾಹನದ ಪ್ರಕಾರವನ್ನು ಆಯ್ಕೆಮಾಡಿ", + "please_select_status": "ದಯವಿಟ್ಟು ಸ್ಥಿತಿಯನ್ನು ಆಯ್ಕೆಮಾಡಿ", + "please_upload_a_csv_file": "ದಯವಿಟ್ಟು CSV ಫೈಲ್ ಅನ್ನು ಅಪ್‌ಲೋಡ್ ಮಾಡಿ", + "post_your_comment": "ನಿಮ್ಮ ಕಾಮೆಂಟ್ ಅನ್ನು ಪೋಸ್ಟ್ ಮಾಡಿ", + "powered_by": "ನಡೆಸಲ್ಪಡುತ್ತಿದೆ", + "preferred_facility_type": "ಆದ್ಯತೆಯ ಸೌಲಭ್ಯದ ಪ್ರಕಾರ", + "preferred_vehicle": "ಆದ್ಯತೆಯ ವಾಹನ", + "prescription": "ಪ್ರಿಸ್ಕ್ರಿಪ್ಷನ್", + "prescription_details": "ಪ್ರಿಸ್ಕ್ರಿಪ್ಷನ್ ವಿವರಗಳು", + "prescription_discontinued": "ಪ್ರಿಸ್ಕ್ರಿಪ್ಷನ್ ಸ್ಥಗಿತಗೊಂಡಿದೆ", + "prescription_logs": "ಪ್ರಿಸ್ಕ್ರಿಪ್ಷನ್ ದಾಖಲೆಗಳು", + "prescription_medication": "ಪ್ರಿಸ್ಕ್ರಿಪ್ಷನ್ ಔಷಧಿ", + "prescription_medications": "ಪ್ರಿಸ್ಕ್ರಿಪ್ಷನ್ ಔಷಧಿಗಳು", + "prescriptions__dosage_frequency": "ಡೋಸೇಜ್ ಮತ್ತು ಆವರ್ತನ", + "prescriptions__medicine": "ಔಷಧಿ", + "prescriptions__route": "ಮಾರ್ಗ", + "prescriptions__start_date": "ರಂದು ಸೂಚಿಸಲಾಗಿದೆ", + "prev_sessions": "ಹಿಂದಿನ ಅವಧಿಗಳು", + "principal": "ಪ್ರಿನ್ಸಿಪಾಲ್", + "principal_diagnosis": "ಮುಖ್ಯ ರೋಗನಿರ್ಣಯ", + "print": "ಮುದ್ರಿಸು", + "print_referral_letter": "ರೆಫರಲ್ ಲೆಟರ್ ಅನ್ನು ಮುದ್ರಿಸಿ", + "prn_prescription": "PRN ಪ್ರಿಸ್ಕ್ರಿಪ್ಷನ್", + "prn_prescriptions": "PRN ಪ್ರಿಸ್ಕ್ರಿಪ್ಷನ್‌ಗಳು", + "procedure_suggestions": "ಕಾರ್ಯವಿಧಾನದ ಸಲಹೆಗಳು", + "provisional": "ತಾತ್ಕಾಲಿಕ", + "ration_card__APL": "ಎಪಿಎಲ್", + "ration_card__BPL": "ಬಿಪಿಎಲ್", + "ration_card__NO_CARD": "ಕಾರ್ಡ್ ಅಲ್ಲದ ಹೋಲ್ಡರ್", + "reason": "ಕಾರಣ", + "reason_for_discontinuation": "ಸ್ಥಗಿತಗೊಳ್ಳಲು ಕಾರಣ", + "reason_for_edit": "ಸಂಪಾದನೆಗೆ ಕಾರಣ", + "reason_for_referral": "ಉಲ್ಲೇಖಕ್ಕೆ ಕಾರಣ", + "reason_for_shift": "ಸ್ಥಳಾಂತರಕ್ಕೆ ಕಾರಣ", + "recommended_aspect_ratio_for": "ಇದಕ್ಕಾಗಿ ಶಿಫಾರಸು ಮಾಡಲಾದ ಆಕಾರ ಅನುಪಾತ", + "record": "ರೆಕಾರ್ಡ್ ಆಡಿಯೋ", + "record_delete_confirm": "ಈ ದಾಖಲೆಯನ್ನು ಅಳಿಸಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?", + "record_has_been_deleted_successfully": "ದಾಖಲೆಯನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಅಳಿಸಲಾಗಿದೆ.", + "record_updates": "ರೆಕಾರ್ಡ್ ನವೀಕರಣಗಳು", + "recording": "ರೆಕಾರ್ಡಿಂಗ್", + "redirected_to_create_consultation": "ಗಮನಿಸಿ: ಸಮಾಲೋಚನೆ ಫಾರ್ಮ್ ರಚಿಸಲು ನಿಮ್ಮನ್ನು ಮರುನಿರ್ದೇಶಿಸಲಾಗುತ್ತದೆ. ವರ್ಗಾವಣೆ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು ದಯವಿಟ್ಟು ಫಾರ್ಮ್ ಅನ್ನು ಪೂರ್ಣಗೊಳಿಸಿ", + "referral_letter": "ಉಲ್ಲೇಖ ಪತ್ರ", + "referred_to": "ಉಲ್ಲೇಖಿಸಲಾಗಿದೆ", + "refresh_list": "ಪಟ್ಟಿಯನ್ನು ರಿಫ್ರೆಶ್ ಮಾಡಿ", + "refuted": "ನಿರಾಕರಿಸಲಾಗಿದೆ", + "register_hospital": "ಆಸ್ಪತ್ರೆಯನ್ನು ನೋಂದಾಯಿಸಿ", + "register_page_title": "ಆಸ್ಪತ್ರೆ ನಿರ್ವಾಹಕರಾಗಿ ನೋಂದಾಯಿಸಿ", + "reload": "ಮರುಲೋಡ್ ಮಾಡಿ", + "remove": "ತೆಗೆದುಹಾಕಿ", + "rename": "ಮರುಹೆಸರಿಸು", + "report": "ವರದಿ", + "req_atleast_one_digit": "ಕನಿಷ್ಠ ಒಂದು ಅಂಕಿ ಅಗತ್ಯವಿದೆ", + "req_atleast_one_lowercase": "ಕನಿಷ್ಠ ಒಂದು ಸಣ್ಣ ಅಕ್ಷರದ ಅಗತ್ಯವಿದೆ", + "req_atleast_one_symbol": "ಕನಿಷ್ಠ ಒಂದು ಚಿಹ್ನೆಯ ಅಗತ್ಯವಿದೆ", + "req_atleast_one_uppercase": "ಕನಿಷ್ಠ ಒಂದು ದೊಡ್ಡ ಪ್ರಕರಣದ ಅಗತ್ಯವಿದೆ", + "request_description": "ವಿನಂತಿಯ ವಿವರಣೆ", + "request_description_placeholder": "ನಿಮ್ಮ ವಿವರಣೆಯನ್ನು ಇಲ್ಲಿ ಟೈಪ್ ಮಾಡಿ", "request_title": "ವಿನಂತಿ ಶೀರ್ಷಿಕೆ", "request_title_placeholder": "ನಿಮ್ಮ ಶೀರ್ಷಿಕೆಯನ್ನು ಇಲ್ಲಿ ಟೈಪ್ ಮಾಡಿ", + "required": "ಅಗತ್ಯವಿದೆ", "required_quantity": "ಅಗತ್ಯವಿರುವ ಪ್ರಮಾಣ", - "request_description": "ವಿನಂತಿಯ ವಿವರಣೆ", - "request_description_placeholder": "ನಿಮ್ಮ ವಿವರಣೆಯನ್ನು ಇಲ್ಲಿ ಟೈಪ್ ಮಾಡಿ", + "reset": "ಮರುಹೊಂದಿಸಿ", + "reset_password": "ಪಾಸ್ವರ್ಡ್ ಮರುಹೊಂದಿಸಿ", + "resource_request": "ಸಂಪನ್ಮೂಲ ವಿನಂತಿ", + "result": "ಫಲಿತಾಂಶ", + "result_date": "ಫಲಿತಾಂಶ ದಿನಾಂಕ", + "result_details": "ಫಲಿತಾಂಶದ ವಿವರಗಳು", + "resume": "ಪುನರಾರಂಭಿಸಿ", + "retake": "ಮರುಪಡೆಯಿರಿ", + "return_to_care": "CARE ಗೆ ಹಿಂತಿರುಗಿ", + "return_to_login": "ಲಾಗಿನ್‌ಗೆ ಹಿಂತಿರುಗಿ", + "return_to_password_reset": "ಪಾಸ್ವರ್ಡ್ ಮರುಹೊಂದಿಸಲು ಹಿಂತಿರುಗಿ", + "return_to_patient_dashboard": "ರೋಗಿಯ ಡ್ಯಾಶ್‌ಬೋರ್ಡ್‌ಗೆ ಹಿಂತಿರುಗಿ", + "right": "ಸರಿ", + "route": "ಮಾರ್ಗ", + "sample_collection_date": "ಮಾದರಿ ಸಂಗ್ರಹ ದಿನಾಂಕ", + "sample_format": "ಮಾದರಿ ಸ್ವರೂಪ", + "sample_type": "ಮಾದರಿ ಪ್ರಕಾರ", + "save": "ಉಳಿಸಿ", + "save_and_continue": "ಉಳಿಸಿ ಮತ್ತು ಮುಂದುವರಿಸಿ", + "save_investigation": "ತನಿಖೆಯನ್ನು ಉಳಿಸಿ", + "scan_asset_qr": "ಸ್ವತ್ತು QR ಅನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡಿ!", + "search_by_username": "ಬಳಕೆದಾರ ಹೆಸರಿನ ಮೂಲಕ ಹುಡುಕಿ", + "search_for_facility": "ಸೌಲಭ್ಯಕ್ಕಾಗಿ ಹುಡುಕಿ", + "search_icd11_placeholder": "ICD-11 ರೋಗನಿರ್ಣಯಗಳಿಗಾಗಿ ಹುಡುಕಿ", + "search_investigation_placeholder": "ಹುಡುಕಾಟ ತನಿಖೆ ಮತ್ತು ಗುಂಪುಗಳು", + "search_patient": "ರೋಗಿಯನ್ನು ಹುಡುಕಿ", "search_resource": "ಹುಡುಕಾಟ ಸಂಪನ್ಮೂಲ", - "emergency": "ತುರ್ತು ಪರಿಸ್ಥಿತಿ", - "up_shift": "ಅಪ್ ಶಿಫ್ಟ್", - "antenatal": "ಪ್ರಸವಪೂರ್ವ", - "phone_no": "ದೂರವಾಣಿ ಸಂಖ್ಯೆ.", - "patient_name": "ರೋಗಿಯ ಹೆಸರು", - "disease_status": "ರೋಗದ ಸ್ಥಿತಿ", - "breathlessness_level": "ಉಸಿರಾಟದ ಮಟ್ಟ", - "assigned_facility": "ಸೌಲಭ್ಯವನ್ನು ನಿಯೋಜಿಸಲಾಗಿದೆ", - "origin_facility": "ಪ್ರಸ್ತುತ ಸೌಲಭ್ಯ", - "shifting_approval_facility": "ಶಿಫ್ಟಿಂಗ್ ಅನುಮೋದನೆ ಸೌಲಭ್ಯ", + "select": "ಆಯ್ಕೆ ಮಾಡಿ", + "select_date": "ದಿನಾಂಕವನ್ನು ಆಯ್ಕೆಮಾಡಿ", + "select_facility_for_discharged_patients_warning": "ಬಿಡುಗಡೆಯಾದ ರೋಗಿಗಳನ್ನು ವೀಕ್ಷಿಸಲು ಸೌಲಭ್ಯವನ್ನು ಆಯ್ಕೆ ಮಾಡಬೇಕಾಗಿದೆ.", + "select_for_administration": "ಆಡಳಿತಕ್ಕಾಗಿ ಆಯ್ಕೆಮಾಡಿ", + "select_groups": "ಗುಂಪುಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ", + "select_investigation": "ತನಿಖೆಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ (ಎಲ್ಲಾ ತನಿಖೆಗಳನ್ನು ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಆಯ್ಕೆ ಮಾಡಲಾಗುತ್ತದೆ)", + "select_investigation_groups": "ತನಿಖಾ ಗುಂಪುಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ", + "select_investigations": "ತನಿಖೆಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ", + "select_local_body": "ಸ್ಥಳೀಯ ಸಂಸ್ಥೆಯನ್ನು ಆಯ್ಕೆಮಾಡಿ", + "select_skills": "ಕೆಲವು ಕೌಶಲ್ಯಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ ಮತ್ತು ಸೇರಿಸಿ", + "select_wards": "ವಾರ್ಡ್‌ಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ", + "send_email": "ಇಮೇಲ್ ಕಳುಹಿಸಿ", + "send_reset_link": "ಮರುಹೊಂದಿಸುವ ಲಿಂಕ್ ಕಳುಹಿಸಿ", + "serial_number": "ಸರಣಿ ಸಂಖ್ಯೆ", + "serviced_on": "ಸೇವೆ ಸಲ್ಲಿಸಲಾಗಿದೆ", + "session_expired": "ಅವಧಿ ಮುಗಿದಿದೆ", + "session_expired_msg": "ನಿಮ್ಮ ಅವಧಿ ಮುಗಿದಿದೆ ಎಂದು ತೋರುತ್ತಿದೆ. ಇದು ನಿಷ್ಕ್ರಿಯತೆಯ ಕಾರಣದಿಂದಾಗಿರಬಹುದು. ಮುಂದುವರಿಸಲು ದಯವಿಟ್ಟು ಮತ್ತೆ ಲಾಗಿನ್ ಮಾಡಿ.", + "set_average_weekly_working_hours_for": "ಸರಾಸರಿ ಸಾಪ್ತಾಹಿಕ ಕೆಲಸದ ಸಮಯವನ್ನು ಹೊಂದಿಸಿ", + "settings_and_filters": "ಸೆಟ್ಟಿಂಗ್‌ಗಳು ಮತ್ತು ಫಿಲ್ಟರ್‌ಗಳು", + "severity_of_breathlessness": "ಉಸಿರಾಟದ ತೀವ್ರತೆ", + "shift_request_updated_successfully": "ಶಿಫ್ಟ್ ವಿನಂತಿಯನ್ನು ಯಶಸ್ವಿಯಾಗಿ ನವೀಕರಿಸಲಾಗಿದೆ", "shifting": "ಶಿಫ್ಟಿಂಗ್", - "search_patient": "ರೋಗಿಯನ್ನು ಹುಡುಕಿ", - "list_view": "ಪಟ್ಟಿ ವೀಕ್ಷಣೆ", - "comment_min_length": "ಕಾಮೆಂಟ್ ಕನಿಷ್ಠ 1 ಅಕ್ಷರವನ್ನು ಹೊಂದಿರಬೇಕು", - "comment_added_successfully": "ಕಾಮೆಂಟ್ ಅನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಸೇರಿಸಲಾಗಿದೆ", - "post_your_comment": "ನಿಮ್ಮ ಕಾಮೆಂಟ್ ಅನ್ನು ಪೋಸ್ಟ್ ಮಾಡಿ", + "shifting_approval_facility": "ಶಿಫ್ಟಿಂಗ್ ಅನುಮೋದನೆ ಸೌಲಭ್ಯ", "shifting_approving_facility": "ಅನುಮೋದಿಸುವ ಸೌಲಭ್ಯವನ್ನು ಬದಲಾಯಿಸಲಾಗುತ್ತಿದೆ", - "is_emergency_case": "ತುರ್ತು ಪ್ರಕರಣವಾಗಿದೆ", - "is_upshift_case": "ಅಪ್ ಶಿಫ್ಟ್ ಕೇಸ್ ಆಗಿದೆ", - "is_antenatal": "ಪ್ರಸವಪೂರ್ವವಾಗಿದೆ", - "patient_phone_number": "ರೋಗಿಯ ಫೋನ್ ಸಂಖ್ಯೆ", - "created_date": "ರಚಿಸಿದ ದಿನಾಂಕ", - "modified_date": "ಮಾರ್ಪಡಿಸಿದ ದಿನಾಂಕ", - "no_patients_to_show": "ತೋರಿಸಲು ರೋಗಿಗಳಿಲ್ಲ.", - "shifting_status": "ಸ್ಥಿತಿಯನ್ನು ಬದಲಾಯಿಸಲಾಗುತ್ತಿದೆ", - "transfer_to_receiving_facility": "ಸ್ವೀಕರಿಸುವ ಸೌಲಭ್ಯಕ್ಕೆ ವರ್ಗಾಯಿಸಿ", - "confirm_transfer_complete": "ವರ್ಗಾವಣೆ ಪೂರ್ಣಗೊಂಡಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿ!", - "mark_transfer_complete_confirmation": "ಈ ವರ್ಗಾವಣೆ ಪೂರ್ಣಗೊಂಡಿದೆ ಎಂದು ಗುರುತಿಸಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ? ಮೂಲ ಸೌಲಭ್ಯವು ಇನ್ನು ಮುಂದೆ ಈ ರೋಗಿಗೆ ಪ್ರವೇಶವನ್ನು ಹೊಂದಿರುವುದಿಲ್ಲ", - "board_view": "ಬೋರ್ಡ್ ವೀಕ್ಷಣೆ", + "shifting_approving_facility_can_not_be_empty": "ಶಿಫ್ಟಿಂಗ್ ಅನುಮೋದಿಸುವ ಸೌಲಭ್ಯ ಖಾಲಿ ಇರುವಂತಿಲ್ಲ.", "shifting_deleted": "ಶಿಫ್ಟಿಂಗ್ ದಾಖಲೆಯನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಅಳಿಸಲಾಗಿದೆ.", - "details_of_shifting_approving_facility": "ಅನುಮೋದಿಸುವ ಸೌಲಭ್ಯವನ್ನು ಬದಲಾಯಿಸುವ ವಿವರಗಳು", - "details_of_assigned_facility": "ನಿಯೋಜಿಸಲಾದ ಸೌಲಭ್ಯದ ವಿವರಗಳು", - "details_of_origin_facility": "ಮೂಲ ಸೌಲಭ್ಯದ ವಿವರಗಳು", - "details_of_patient": "ರೋಗಿಯ ವಿವರಗಳು", - "record_delete_confirm": "ಈ ದಾಖಲೆಯನ್ನು ಅಳಿಸಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?", - "phone_number_at_current_facility": "ಪ್ರಸ್ತುತ ಸೌಲಭ್ಯದಲ್ಲಿರುವ ವ್ಯಕ್ತಿಯ ಸಂಪರ್ಕದ ಫೋನ್ ಸಂಖ್ಯೆ", - "authorize_shift_delete": "ಶಿಫ್ಟ್ ಅಳಿಸುವಿಕೆಯನ್ನು ಅಧಿಕೃತಗೊಳಿಸಿ", - "delete_record": "ದಾಖಲೆ ಅಳಿಸಿ", - "severity_of_breathlessness": "ಉಸಿರಾಟದ ತೀವ್ರತೆ", - "facility_preference": "ಸೌಲಭ್ಯ ಆದ್ಯತೆ", - "vehicle_preference": "ವಾಹನ ಆದ್ಯತೆ", - "is_up_shift": "ಶಿಫ್ಟ್ ಆಗಿದೆ", - "ambulance_driver_name": "ಆಂಬ್ಯುಲೆನ್ಸ್ ಚಾಲಕನ ಹೆಸರು", - "ambulance_phone_number": "ಆಂಬ್ಯುಲೆನ್ಸ್‌ನ ದೂರವಾಣಿ ಸಂಖ್ಯೆ", - "ambulance_number": "ಆಂಬ್ಯುಲೆನ್ಸ್ ನಂ", - "is_emergency": "ತುರ್ತು ಆಗಿದೆ", - "contact_person_at_the_facility": "ಪ್ರಸ್ತುತ ಸೌಲಭ್ಯದಲ್ಲಿರುವ ವ್ಯಕ್ತಿಯನ್ನು ಸಂಪರ್ಕಿಸಿ", - "update_status_details": "ಸ್ಥಿತಿ/ವಿವರಗಳನ್ನು ನವೀಕರಿಸಿ", "shifting_details": "ವಿವರಗಳನ್ನು ಬದಲಾಯಿಸಲಾಗುತ್ತಿದೆ", - "auto_generated_for_care": "ಆರೈಕೆಗಾಗಿ ಸ್ವಯಂ ರಚಿಸಲಾಗಿದೆ", - "approved_by_district_covid_control_room": "ಜಿಲ್ಲಾ COVID ನಿಯಂತ್ರಣ ಕೊಠಡಿಯಿಂದ ಅನುಮೋದಿಸಲಾಗಿದೆ", - "treatment_summary": "ಚಿಕಿತ್ಸೆಯ ಸಾರಾಂಶ", - "reason_for_referral": "ಉಲ್ಲೇಖಕ್ಕೆ ಕಾರಣ", - "referred_to": "ಉಲ್ಲೇಖಿಸಲಾಗಿದೆ", - "covid_19_cat_gov": "ಸರ್ಕಾರದ ಪ್ರಕಾರ ಕೋವಿಡ್_19 ಕ್ಲಿನಿಕಲ್ ವರ್ಗ. ಕೇರಳ ಮಾರ್ಗಸೂಚಿ (A/B/C)", - "district_program_management_supporting_unit": "ಜಿಲ್ಲಾ ಕಾರ್ಯಕ್ರಮ ನಿರ್ವಹಣಾ ಪೋಷಕ ಘಟಕ", - "name_of_hospital": "ಆಸ್ಪತ್ರೆಯ ಹೆಸರು", - "passport_number": "ಪಾಸ್ಪೋರ್ಟ್ ಸಂಖ್ಯೆ", + "shifting_status": "ಸ್ಥಿತಿಯನ್ನು ಬದಲಾಯಿಸಲಾಗುತ್ತಿದೆ", + "show_all": "ಎಲ್ಲವನ್ನೂ ತೋರಿಸು", + "show_all_notifications": "ಎಲ್ಲವನ್ನೂ ತೋರಿಸು", + "show_default_presets": "ಡೀಫಾಲ್ಟ್ ಪೂರ್ವನಿಗದಿಗಳನ್ನು ತೋರಿಸಿ", + "show_patient_presets": "ರೋಗಿಯ ಪೂರ್ವನಿಗದಿಗಳನ್ನು ತೋರಿಸಿ", + "show_unread_notifications": "ಓದದಿರುವುದನ್ನು ತೋರಿಸಿ", + "sign_out": "ಸೈನ್ ಔಟ್ ಮಾಡಿ", + "something_went_wrong": "ಏನೋ ತಪ್ಪಾಗಿದೆ..!", + "something_wrong": "ಏನೋ ತಪ್ಪಾಗಿದೆ! ನಂತರ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ!", + "sort_by": "ವಿಂಗಡಿಸಿ", + "source": "ಮೂಲ", + "srf_id": "SRF ID", + "staff_list": "ಸಿಬ್ಬಂದಿ ಪಟ್ಟಿ", + "start_dosage": "ಡೋಸೇಜ್ ಪ್ರಾರಂಭಿಸಿ", + "state": "ರಾಜ್ಯ", + "status": "ಸ್ಥಿತಿ", + "stop": "ನಿಲ್ಲಿಸು", + "stream_stop_due_to_inativity": "ನಿಷ್ಕ್ರಿಯತೆಯ ಕಾರಣ ಲೈವ್ ಫೀಡ್ ಸ್ಟ್ರೀಮಿಂಗ್ ಅನ್ನು ನಿಲ್ಲಿಸುತ್ತದೆ", + "stream_stopped_due_to_inativity": "ನಿಷ್ಕ್ರಿಯತೆಯಿಂದಾಗಿ ಲೈವ್ ಫೀಡ್ ಸ್ಟ್ರೀಮಿಂಗ್ ಅನ್ನು ನಿಲ್ಲಿಸಿದೆ", + "sub_category": "ಉಪ ವರ್ಗ", + "submit": "ಸಲ್ಲಿಸಿ", + "submitting": "ಸಲ್ಲಿಸಲಾಗುತ್ತಿದೆ", + "subscribe": "ಚಂದಾದಾರರಾಗಿ", + "subscribe_on_this_device": "ಈ ಸಾಧನದಲ್ಲಿ ಚಂದಾದಾರರಾಗಿ", + "subscription_error": "ಚಂದಾದಾರಿಕೆ ದೋಷ", + "suggested_investigations": "ಸೂಚಿಸಿದ ತನಿಖೆಗಳು", + "summary": "ಸಾರಾಂಶ", + "support": "ಬೆಂಬಲ", + "switch": "ಬದಲಿಸಿ", + "systolic": "ಸಿಸ್ಟೊಲಿಕ್", + "tachycardia": "ಟಾಕಿಕಾರ್ಡಿಯಾ", + "target_dosage": "ಗುರಿ ಡೋಸೇಜ್", "test_type": "ಪರೀಕ್ಷಾ ಪ್ರಕಾರ", - "medical_worker": "ವೈದ್ಯಕೀಯ ಕೆಲಸಗಾರ", - "error_deleting_shifting": "ಶಿಫ್ಟಿಂಗ್ ರೆಕಾರ್ಡ್ ಅನ್ನು ಅಳಿಸುವಾಗ ದೋಷ", + "titrate_dosage": "ಟೈಟ್ರೇಟ್ ಡೋಸೇಜ್", + "to_be_conducted": "ನಡೆಸಲಾಗುವುದು", + "total_beds": "ಒಟ್ಟು ಹಾಸಿಗೆಗಳು", + "total_users": "ಒಟ್ಟು ಬಳಕೆದಾರರು", + "transfer_in_progress": "ವರ್ಗಾವಣೆ ಪ್ರಗತಿಯಲ್ಲಿದೆ", + "transfer_to_receiving_facility": "ಸ್ವೀಕರಿಸುವ ಸೌಲಭ್ಯಕ್ಕೆ ವರ್ಗಾಯಿಸಿ", + "travel_within_last_28_days": "ದೇಶೀಯ/ಅಂತರರಾಷ್ಟ್ರೀಯ ಪ್ರಯಾಣ (ಕಳೆದ 28 ದಿನಗಳಲ್ಲಿ)", + "treating_doctor": "ಚಿಕಿತ್ಸೆ ನೀಡುತ್ತಿರುವ ವೈದ್ಯರು", + "treatment_summary": "ಚಿಕಿತ್ಸೆಯ ಸಾರಾಂಶ", + "treatment_summary__head_title": "ಚಿಕಿತ್ಸೆಯ ಸಾರಾಂಶ", + "treatment_summary__heading": "ಮಧ್ಯಂತರ ಚಿಕಿತ್ಸೆಯ ಸಾರಾಂಶ", + "treatment_summary__print": "ಪ್ರಿಂಟ್ ಟ್ರೀಟ್ಮೆಂಟ್ ಸಾರಾಂಶ", + "try_again_later": "ನಂತರ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ!", "type_any_extra_comments_here": "ಯಾವುದೇ ಹೆಚ್ಚುವರಿ ಕಾಮೆಂಟ್‌ಗಳನ್ನು ಇಲ್ಲಿ ಟೈಪ್ ಮಾಡಿ", + "type_b_cylinders": "ಬಿ ಮಾದರಿಯ ಸಿಲಿಂಡರ್‌ಗಳು", + "type_c_cylinders": "ಸಿ ಮಾದರಿಯ ಸಿಲಿಂಡರ್‌ಗಳು", + "type_d_cylinders": "ಡಿ ಮಾದರಿಯ ಸಿಲಿಂಡರ್‌ಗಳು", + "type_to_search": "ಹುಡುಕಲು ಟೈಪ್ ಮಾಡಿ", + "type_your_comment": "ನಿಮ್ಮ ಕಾಮೆಂಟ್ ಅನ್ನು ಟೈಪ್ ಮಾಡಿ", "type_your_reason_here": "ನಿಮ್ಮ ಕಾರಣವನ್ನು ಇಲ್ಲಿ ಟೈಪ್ ಮಾಡಿ", - "reason_for_shift": "ಸ್ಥಳಾಂತರಕ್ಕೆ ಕಾರಣ", - "preferred_facility_type": "ಆದ್ಯತೆಯ ಸೌಲಭ್ಯದ ಪ್ರಕಾರ", - "preferred_vehicle": "ಆದ್ಯತೆಯ ವಾಹನ", - "is_it_upshift": "ಇದು ಮೇಲ್ಮುಖವಾಗಿದೆಯೇ", - "is_this_an_upshift": "ಇದು ಉನ್ನತಿಯೇ?", - "is_this_an_emergency": "ಇದು ತುರ್ತು ಪರಿಸ್ಥಿತಿಯೇ?", - "what_facility_assign_the_patient_to": "ರೋಗಿಯನ್ನು ಯಾವ ಸೌಲಭ್ಯಕ್ಕೆ ನಿಯೋಜಿಸಲು ನೀವು ಬಯಸುತ್ತೀರಿ", - "name_of_shifting_approving_facility": "ಶಿಫ್ಟಿಂಗ್ ಅನುಮೋದಿಸುವ ಸೌಲಭ್ಯದ ಹೆಸರು", + "unconfirmed": "ದೃಢೀಕರಿಸಲಾಗಿಲ್ಲ", + "unique_id": "ವಿಶಿಷ್ಟ ಐಡಿ", + "unknown": "ಅಜ್ಞಾತ", + "unsubscribe": "ಅನ್‌ಸಬ್‌ಸ್ಕ್ರೈಬ್ ಮಾಡಿ", + "unsubscribe_failed": "ಅನ್‌ಸಬ್‌ಸ್ಕ್ರೈಬ್ ವಿಫಲವಾಗಿದೆ.", + "unsupported_browser": "ಬೆಂಬಲಿತವಲ್ಲದ ಬ್ರೌಸರ್", + "up": "ಮೇಲಕ್ಕೆ", + "up_shift": "ಅಪ್ ಶಿಫ್ಟ್", + "update": "ನವೀಕರಿಸಿ", + "update_asset": "ಆಸ್ತಿಯನ್ನು ನವೀಕರಿಸಿ", + "update_asset_service_record": "ಸ್ವತ್ತು ಸೇವಾ ದಾಖಲೆಯನ್ನು ನವೀಕರಿಸಿ", + "update_bed": "ಹಾಸಿಗೆಯನ್ನು ನವೀಕರಿಸಿ", + "update_facility": "ನವೀಕರಣ ಸೌಲಭ್ಯ", + "update_facility_middleware_success": "ಸೌಲಭ್ಯ ಮಿಡಲ್‌ವೇರ್ ಅನ್ನು ಯಶಸ್ವಿಯಾಗಿ ನವೀಕರಿಸಲಾಗಿದೆ", + "update_log": "ಲಾಗ್ ಅನ್ನು ನವೀಕರಿಸಿ", + "update_record": "ದಾಖಲೆಯನ್ನು ನವೀಕರಿಸಿ", + "update_record_for_asset": "ಆಸ್ತಿಗಾಗಿ ದಾಖಲೆಯನ್ನು ನವೀಕರಿಸಿ", "update_shift_request": "ಶಿಫ್ಟ್ ವಿನಂತಿಯನ್ನು ನವೀಕರಿಸಿ", - "shift_request_updated_successfully": "ಶಿಫ್ಟ್ ವಿನಂತಿಯನ್ನು ಯಶಸ್ವಿಯಾಗಿ ನವೀಕರಿಸಲಾಗಿದೆ", - "please_enter_a_reason_for_the_shift": "ದಯವಿಟ್ಟು ಶಿಫ್ಟ್‌ಗೆ ಕಾರಣವನ್ನು ನಮೂದಿಸಿ.", - "please_select_preferred_vehicle_type": "ದಯವಿಟ್ಟು ಆದ್ಯತೆಯ ವಾಹನದ ಪ್ರಕಾರವನ್ನು ಆಯ್ಕೆಮಾಡಿ", - "please_select_facility_type": "ದಯವಿಟ್ಟು ಸೌಲಭ್ಯದ ಪ್ರಕಾರವನ್ನು ಆಯ್ಕೆಮಾಡಿ", - "please_select_breathlessness_level": "ದಯವಿಟ್ಟು ಉಸಿರಾಟದ ಮಟ್ಟವನ್ನು ಆಯ್ಕೆಮಾಡಿ", - "please_select_a_facility": "ದಯವಿಟ್ಟು ಸೌಲಭ್ಯವನ್ನು ಆಯ್ಕೆಮಾಡಿ", - "please_select_status": "ದಯವಿಟ್ಟು ಸ್ಥಿತಿಯನ್ನು ಆಯ್ಕೆಮಾಡಿ", - "please_select_patient_category": "ದಯವಿಟ್ಟು ರೋಗಿಯ ವರ್ಗವನ್ನು ಆಯ್ಕೆಮಾಡಿ", - "shifting_approving_facility_can_not_be_empty": "ಶಿಫ್ಟಿಂಗ್ ಅನುಮೋದಿಸುವ ಸೌಲಭ್ಯ ಖಾಲಿ ಇರುವಂತಿಲ್ಲ.", - "redirected_to_create_consultation": "ಗಮನಿಸಿ: ಸಮಾಲೋಚನೆ ಫಾರ್ಮ್ ರಚಿಸಲು ನಿಮ್ಮನ್ನು ಮರುನಿರ್ದೇಶಿಸಲಾಗುತ್ತದೆ. ವರ್ಗಾವಣೆ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು ದಯವಿಟ್ಟು ಫಾರ್ಮ್ ಅನ್ನು ಪೂರ್ಣಗೊಳಿಸಿ", - "mark_this_transfer_as_complete_question": "ಈ ವರ್ಗಾವಣೆ ಪೂರ್ಣಗೊಂಡಿದೆ ಎಂದು ಗುರುತಿಸಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ? ಮೂಲ ಸೌಲಭ್ಯವು ಇನ್ನು ಮುಂದೆ ಈ ರೋಗಿಗೆ ಪ್ರವೇಶವನ್ನು ಹೊಂದಿರುವುದಿಲ್ಲ", - "transfer_in_progress": "ವರ್ಗಾವಣೆ ಪ್ರಗತಿಯಲ್ಲಿದೆ", - "patient_state": "ರೋಗಿಯ ಸ್ಥಿತಿ", - "yet_to_be_decided": "ಇನ್ನೂ ನಿರ್ಧರಿಸಬೇಕಿದೆ", - "awaiting_destination_approval": "ಗಮ್ಯಸ್ಥಾನದ ಅನುಮೋದನೆಗಾಗಿ ನಿರೀಕ್ಷಿಸಲಾಗುತ್ತಿದೆ", + "update_status_details": "ಸ್ಥಿತಿ/ವಿವರಗಳನ್ನು ನವೀಕರಿಸಿ", + "updated": "ನವೀಕರಿಸಲಾಗಿದೆ", + "updating": "ನವೀಕರಿಸಲಾಗುತ್ತಿದೆ", + "upload": "ಅಪ್ಲೋಡ್ ಮಾಡಿ", + "upload_an_image": "ಚಿತ್ರವನ್ನು ಅಪ್‌ಲೋಡ್ ಮಾಡಿ", + "upload_headings__consultation": "ಹೊಸ ಸಮಾಲೋಚನೆ ಫೈಲ್ ಅನ್ನು ಅಪ್ಲೋಡ್ ಮಾಡಿ", + "upload_headings__patient": "ಹೊಸ ರೋಗಿಯ ಫೈಲ್ ಅನ್ನು ಅಪ್‌ಲೋಡ್ ಮಾಡಿ", + "upload_headings__sample_report": "ಮಾದರಿ ವರದಿಯನ್ನು ಅಪ್ಲೋಡ್ ಮಾಡಿ", + "upload_headings__supporting_info": "ಪೋಷಕ ಮಾಹಿತಿಯನ್ನು ಅಪ್ಲೋಡ್ ಮಾಡಿ", + "uploading": "ಅಪ್‌ಲೋಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ", + "user_deleted_successfuly": "ಬಳಕೆದಾರರನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಅಳಿಸಲಾಗಿದೆ", "user_management": "ಬಳಕೆದಾರ ನಿರ್ವಹಣೆ", - "facilities": "ಸೌಲಭ್ಯಗಳು", - "add_new_user": "ಹೊಸ ಬಳಕೆದಾರರನ್ನು ಸೇರಿಸಿ", - "no_users_found": "ಯಾವುದೇ ಬಳಕೆದಾರರು ಕಂಡುಬಂದಿಲ್ಲ", - "home_facility": "ಮನೆ ಸೌಲಭ್ಯ", - "no_home_facility": "ಮನೆ ಸೌಲಭ್ಯ ನೀಡಿಲ್ಲ", - "clear_home_facility": "ಮನೆ ಸೌಲಭ್ಯವನ್ನು ತೆರವುಗೊಳಿಸಿ", - "linked_facilities": "ಲಿಂಕ್ಡ್ ಸೌಲಭ್ಯಗಳು", - "no_linked_facilities": "ಯಾವುದೇ ಲಿಂಕ್ ಮಾಡಲಾದ ಸೌಲಭ್ಯಗಳಿಲ್ಲ", - "average_weekly_working_hours": "ಸರಾಸರಿ ವಾರದ ಕೆಲಸದ ಸಮಯ", - "set_average_weekly_working_hours_for": "ಸರಾಸರಿ ಸಾಪ್ತಾಹಿಕ ಕೆಲಸದ ಸಮಯವನ್ನು ಹೊಂದಿಸಿ", - "search_by_username": "ಬಳಕೆದಾರ ಹೆಸರಿನ ಮೂಲಕ ಹುಡುಕಿ", - "last_online": "ಕೊನೆಯ ಆನ್‌ಲೈನ್", - "total_users": "ಒಟ್ಟು ಬಳಕೆದಾರರು" -} \ No newline at end of file + "username": "ಬಳಕೆದಾರ ಹೆಸರು", + "users": "ಬಳಕೆದಾರರು", + "vehicle_preference": "ವಾಹನ ಆದ್ಯತೆ", + "vendor_name": "ಮಾರಾಟಗಾರರ ಹೆಸರು", + "view": "ವೀಕ್ಷಿಸಿ", + "view_abdm_records": "ABDM ದಾಖಲೆಗಳನ್ನು ವೀಕ್ಷಿಸಿ", + "view_asset": "ಸ್ವತ್ತುಗಳನ್ನು ವೀಕ್ಷಿಸಿ", + "view_details": "ವಿವರಗಳನ್ನು ವೀಕ್ಷಿಸಿ", + "view_faciliy": "ವೀಕ್ಷಣೆ ಸೌಲಭ್ಯ", + "view_patients": "ರೋಗಿಗಳನ್ನು ವೀಕ್ಷಿಸಿ", + "view_users": "ಬಳಕೆದಾರರನ್ನು ವೀಕ್ಷಿಸಿ", + "virtual_nursing_assistant": "ವರ್ಚುವಲ್ ನರ್ಸಿಂಗ್ ಸಹಾಯಕ", + "ward": "ವಾರ್ಡ್", + "warranty_amc_expiry": "ವಾರಂಟಿ / AMC ಮುಕ್ತಾಯ", + "what_facility_assign_the_patient_to": "ರೋಗಿಯನ್ನು ಯಾವ ಸೌಲಭ್ಯಕ್ಕೆ ನಿಯೋಜಿಸಲು ನೀವು ಬಯಸುತ್ತೀರಿ", + "why_the_asset_is_not_working": "ಸ್ವತ್ತು ಏಕೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿಲ್ಲ?", + "working_status": "ಕೆಲಸದ ಸ್ಥಿತಿ", + "yes": "ಹೌದು", + "yet_to_be_decided": "ಇನ್ನೂ ನಿರ್ಧರಿಸಬೇಕಿದೆ", + "you_need_at_least_a_location_to_create_an_assest": "ಆಸ್ತಿಯನ್ನು ರಚಿಸಲು ನಿಮಗೆ ಕನಿಷ್ಠ ಸ್ಥಳದ ಅಗತ್ಯವಿದೆ.", + "zoom_in": "ಜೂಮ್ ಇನ್", + "zoom_out": "ಜೂಮ್ ಔಟ್" +} diff --git a/src/Locale/ml.json b/src/Locale/ml.json index 614a4005ef9..8460b6f8b7c 100644 --- a/src/Locale/ml.json +++ b/src/Locale/ml.json @@ -1,813 +1,813 @@ { - "create_asset": "അസറ്റ് സൃഷ്ടിക്കുക", - "edit_history": "ചരിത്രം തിരുത്തുക", - "update_record_for_asset": "അസറ്റിൻ്റെ റെക്കോർഡ് അപ്ഡേറ്റ് ചെയ്യുക", - "edited_on": "എഡിറ്റ് ചെയ്തത്", - "edited_by": "എഡിറ്റ് ചെയ്തത്", - "serviced_on": "സർവീസ് ചെയ്തു", - "notes": "കുറിപ്പുകൾ", - "back": "തിരികെ", - "close": "അടയ്ക്കുക", - "update_asset_service_record": "അസറ്റ് സർവീസ് റെക്കോർഡ് അപ്ഡേറ്റ് ചെയ്യുക", - "eg_details_on_functionality_service_etc": "ഉദാ. പ്രവർത്തനം, സേവനം മുതലായവയെക്കുറിച്ചുള്ള വിശദാംശങ്ങൾ.", - "updating": "അപ്ഡേറ്റ് ചെയ്യുന്നു", - "update": "അപ്ഡേറ്റ്", - "are_you_still_watching": "നിങ്ങൾ ഇപ്പോഴും കാണുന്നുണ്ടോ?", - "stream_stop_due_to_inativity": "സജീവമല്ലാത്തതിനാൽ തത്സമയ ഫീഡ് സ്ട്രീമിംഗ് നിർത്തും", - "stream_stopped_due_to_inativity": "സജീവമല്ലാത്തതിനാൽ തത്സമയ ഫീഡ് സ്ട്രീമിംഗ് നിർത്തി", - "continue_watching": "കാണുന്നത് തുടരുക", - "resume": "പുനരാരംഭിക്കുക", - "username": "യൂസർനെയിം/ഉപയോക്തൃനാമം", - "password": "പാസ്‌വേഡ്", - "new_password": "പുതിയ പാസ്‌വേഡ്", - "confirm_password": "പാസ്‌വേഡ് ഉറപ്പാക്കുക", - "first_name": "പേരിന്‍റെ ആദ്യഭാഗം", - "last_name": "പേരിന്‍റെ അവസാന ഭാഗം", - "email": "ഇമെയിൽ വിലാസം", - "phone_number": "ഫോൺ നമ്പർ", - "district": "ജില്ല", - "gender": "ലിംഗഭേദം", - "age": "പ്രായം", - "login": "ലോഗിൻ ചെയ്യുക/അകത്തു പ്രവേശിക്കുക", - "password_mismatch": "പാസ്‌വേഡും ഉറപ്പാക്കിയ പാസ്‌വേഡും സമാനമായിരിക്കണം", - "enter_valid_age": "ദയവായി പ്രാമാണികമായ വയസ്സ് നൽകുക", - "invalid_username": "അനിവാര്യം. 150 ചിഹ്നമോ, അക്ഷരമോ, സംഖ്യയോ അതിൽ കുറവോ. അക്ഷരങ്ങൾ, അക്കങ്ങൾ, @/./+/-/_ മാത്രം ഉപയോഗിക്കുക.", - "invalid_password": "പാസ്‌വേഡ് ആവശ്യകതകൾ പാലിക്കുന്നില്ല", - "invalid_email": "ദയവായി പ്രാമാണികമായ ഇമെയിൽ വിലാസം നൽകുക", - "invalid_phone": "ദയവായി പ്രാമാണികമായ ഫോൺ നമ്പർ നൽകുക", - "register_hospital": "ആശുപത്രി രജിസ്റ്റർ ചെയ്യുക", - "register_page_title": "ആശുപത്രി അഡ്മിനിസ്ട്രേറ്ററായി രജിസ്റ്റർ ചെയ്യുക", - "auth_login_title": "അംഗീകൃത ലോഗിൻ", - "forget_password": "പാസ്‌വേഡ് മറന്നോ?", - "forget_password_instruction": "നിങ്ങളുടെ യൂസർനെയിം/ഉപയോക്തൃനാമം നൽകുക. പാസ്‌വേഡ് പുന: സജ്ജമാക്കാൻ ഞങ്ങൾ ഒരു ലിങ്ക് അയയ്‌ക്കുന്നതായിരിക്കും.", - "send_reset_link": "പുന: സജ്ജീകരണ ലിങ്ക് അയയ്‌ക്കുക", - "already_a_member": "ഇതിനകം തന്നെ ഒരു അംഗമാണോ?", - "password_sent": "പാസ്‌വേഡ് പുന: സജ്ജീകരണ ലിങ്ക് അയച്ചിട്ടുണ്ട്", - "password_reset_success": "പാസ്‌വേഡ് പുന: സജ്ജീകരണം വിജയിച്ചു", - "password_reset_failure": "പാസ്‌വേഡ് പുന: സജ്ജീകരണം പരാജയപ്പെട്ടു", - "reset_password": "പാസ്‌വേഡ് പുന: സജ്ജമാക്കുക", - "available_in": "ലഭ്യമായ ഭാഷകൾ", - "sign_out": "ലോഗ് ഔട്ട് ചെയ്യുക/പുറത്തിറങ്ങുക", - "back_to_login": "ലോഗിൻ പേജിലേക്ക് മടങ്ങുക", - "min_password_len_8": "ഏറ്റവും കുറഞ്ഞ പാസ്‌വേഡ് ദൈർഘ്യം 8", - "req_atleast_one_digit": "കുറഞ്ഞത് ഒരു അക്കമെങ്കിലും ആവശ്യമാണ്", - "req_atleast_one_uppercase": "കുറഞ്ഞത് ഒരു വലിയ കേസെങ്കിലും ആവശ്യമാണ്", - "req_atleast_one_lowercase": "കുറഞ്ഞത് ഒരു ചെറിയ അക്ഷരമെങ്കിലും ആവശ്യമാണ്", - "req_atleast_one_symbol": "കുറഞ്ഞത് ഒരു ചിഹ്നമെങ്കിലും ആവശ്യമാണ്", - "bed_search_placeholder": "കിടക്കകളുടെ പേര് ഉപയോഗിച്ച് തിരയുക", + "404_message": "നിലവിലില്ലാത്തതോ മറ്റൊരു URL-ലേക്ക് നീക്കിയതോ ആയ ഒരു പേജിൽ നിങ്ങൾ ഇടറിവീണതായി തോന്നുന്നു. നിങ്ങൾ ശരിയായ ലിങ്ക് നൽകിയിട്ടുണ്ടെന്ന് ഉറപ്പാക്കുക!", + "AUTOMATED": "ഓട്ടോമേറ്റഡ്", + "Assets": "ആസ്തികൾ", "BED_WITH_OXYGEN_SUPPORT": "ഓക്സിജൻ പിന്തുണയുള്ള കിടക്ക", - "REGULAR": "പതിവ്", + "CONSCIOUSNESS_LEVEL__AGITATED_OR_CONFUSED": "അസ്വസ്ഥതയോ ആശയക്കുഴപ്പത്തിലോ", + "CONSCIOUSNESS_LEVEL__ALERT": "മുന്നറിയിപ്പ്", + "CONSCIOUSNESS_LEVEL__ONSET_OF_AGITATION_AND_CONFUSION": "പ്രക്ഷോഭത്തിൻ്റെയും ആശയക്കുഴപ്പത്തിൻ്റെയും തുടക്കം", + "CONSCIOUSNESS_LEVEL__RESPONDS_TO_PAIN": "വേദനയോട് പ്രതികരിക്കുന്നു", + "CONSCIOUSNESS_LEVEL__RESPONDS_TO_VOICE": "ശബ്ദത്തോട് പ്രതികരിക്കുന്നു", + "CONSCIOUSNESS_LEVEL__UNRESPONSIVE": "പ്രതികരിക്കുന്നില്ല", + "Cancel": "റദ്ദാക്കുക", + "DD/MM/YYYY": "DD/MM/YYYY", + "DOCTORS_LOG": "പുരോഗതി കുറിപ്പ്", + "Dashboard": "ഡാഷ്ബോർഡ്", + "Facilities": "ഫെസിലിറ്റികള്‍", + "GENDER__1": "പുരുഷൻ", + "GENDER__2": "സ്ത്രീ", + "GENDER__3": "നോൺ-ബൈനറി", + "HEARTBEAT_RHYTHM__IRREGULAR": "ക്രമരഹിതം", + "HEARTBEAT_RHYTHM__REGULAR": "പതിവ്", + "HEARTBEAT_RHYTHM__UNKNOWN": "അജ്ഞാതം", "ICU": "ഐ.സി.യു", + "INSULIN_INTAKE_FREQUENCY__BD": "ദിവസത്തിൽ രണ്ടുതവണ (BD)", + "INSULIN_INTAKE_FREQUENCY__OD": "ദിവസത്തിൽ ഒരിക്കൽ (OD)", + "INSULIN_INTAKE_FREQUENCY__TD": "ദിവസത്തിൽ മൂന്ന് തവണ (ടിഡി)", + "INSULIN_INTAKE_FREQUENCY__UNKNOWN": "അജ്ഞാതം", "ISOLATION": "ഐസൊലേഷൻ", - "add_beds": "കിടക്ക(കൾ) ചേർക്കുക", - "update_bed": "കിടക്ക അപ്ഡേറ്റ് ചെയ്യുക", - "bed_type": "കിടക്കയുടെ തരം", - "make_multiple_beds_label": "നിങ്ങൾക്ക് ഒന്നിലധികം കിടക്കകൾ നിർമ്മിക്കണോ?", - "number_of_beds": "കിടക്കകളുടെ എണ്ണം", - "number_of_beds_out_of_range_error": "കിടക്കകളുടെ എണ്ണം 100-ൽ കൂടരുത്", - "goal": "ഡിജിറ്റൽ ടൂളുകൾ ഉപയോഗിച്ച് പൊതുജനാരോഗ്യ സേവനങ്ങളുടെ ഗുണനിലവാരവും പ്രവേശനക്ഷമതയും തുടർച്ചയായി മെച്ചപ്പെടുത്തുകയാണ് ഞങ്ങളുടെ ലക്ഷ്യം.", - "something_wrong": "എന്തോ കുഴപ്പം സംഭവിച്ചു! കുറച്ചു കഴിഞ്ഞു വീണ്ടും ശ്രമിക്കുക!", - "try_again_later": "പിന്നീട് വീണ്ടും ശ്രമിക്കുക!", - "contribute_github": "GitHubൽ സംഭാവന ചെയ്യുക", - "footer_body": "കേരള സർക്കാറിന്‍റെ പൂർണ്ണമായ ധാരണയോടും പിന്തുണയോടും കൂടി സർക്കാർ ശ്രമങ്ങളെ പിന്തുണയ്ക്കുന്നതിനായി നൂതന പ്രവർത്തകരുടെയും സന്നദ്ധപ്രവർത്തകരുടെയും ഒരു മൾട്ടി-ഡിസിപ്ലിനറി ടീം രൂപകൽപ്പന ചെയ്ത മാതൃകാപരമായ ഒരു ഓപ്പൺ സോഴ്‌സ് പബ്ലിക് യൂട്ടിലിറ്റിയാണ് കൊറോണ സേഫ് നെറ്റ്‌വർക്ക്.", - "reset": "പുന: സജ്ജമാക്കുക ", - "download": "ഡൗൺലോഡ് ചെയ്യുക", - "downloads": "ഡൗൺലോഡുകൾ", - "downloading": "ഡൗൺലോഡ് ചെയ്യുന്നു", - "generating": "സൃഷ്ടിക്കുന്നു", - "send_email": "ഇമെയിൽ അയയ്ക്കുക", - "email_address": "ഇമെയിൽ വിലാസം", - "email_success": "ഞങ്ങൾ ഉടൻ ഒരു ഇമെയിൽ അയയ്ക്കും. ദയവായി നിങ്ങളുടെ ഇൻബോക്സ് പരിശോധിക്കുക.", - "disclaimer": "നിരാകരണം", - "category": "വിഭാഗം", - "sub_category": "ഉപവിഭാഗം", - "download_type": "ഡൗൺലോഡുകളുടെ തരം", - "state": "സംസ്ഥാനം", - "location": "സ്ഥാനം", - "ward": "വാർഡ്", + "KASP Empanelled": "കെ. എ. എസ്. പി. എംപാനല്‍ ചെയ്യപ്പെട്ടത്", + "LIMB_RESPONSE__EXTENSION": "വിപുലീകരണം", + "LIMB_RESPONSE__FLEXION": "ഫ്ലെക്സിഷൻ", + "LIMB_RESPONSE__MODERATE": "മിതത്വം", + "LIMB_RESPONSE__NONE": "ഒന്നുമില്ല", + "LIMB_RESPONSE__STRONG": "ശക്തമായ", + "LIMB_RESPONSE__UNKNOWN": "അജ്ഞാതം", + "LIMB_RESPONSE__WEAK": "ദുർബലമായ", + "NORMAL": "സംക്ഷിപ്ത അപ്ഡേറ്റ്", + "NURSING_CARE_PROCEDURE__catheter_care": "കത്തീറ്റർ കെയർ", + "NURSING_CARE_PROCEDURE__chest_tube_care": "ചെസ്റ്റ് ട്യൂബ് കെയർ", + "NURSING_CARE_PROCEDURE__dressing": "വസ്ത്രധാരണം", + "NURSING_CARE_PROCEDURE__dvt_pump_stocking": "ഡിവിടി പമ്പ് സ്റ്റോക്കിംഗ്", + "NURSING_CARE_PROCEDURE__iv_sitecare": "IV സൈറ്റ് കെയർ", + "NURSING_CARE_PROCEDURE__nubulisation": "നുബുലൈസേഷൻ", + "NURSING_CARE_PROCEDURE__personal_hygiene": "വ്യക്തിഗത ശുചിത്വം", + "NURSING_CARE_PROCEDURE__positioning": "സ്ഥാനനിർണ്ണയം", + "NURSING_CARE_PROCEDURE__restrain": "നിയന്ത്രിക്കുക", + "NURSING_CARE_PROCEDURE__ryles_tube_care": "റൈൽസ് ട്യൂബ് കെയർ", + "NURSING_CARE_PROCEDURE__stoma_care": "സ്റ്റോമ കെയർ", + "NURSING_CARE_PROCEDURE__suctioning": "സക്ഷനിംഗ്", + "NURSING_CARE_PROCEDURE__tracheostomy_care": "ട്രാക്കിയോസ്റ്റമി കെയർ", "Notice Board": "നോട്ടീസ് ബോർഡ്", - "Assets": "ആസ്തികൾ", "Notifications": "അറിയിപ്പുകൾ", + "OXYGEN_MODALITY__HIGH_FLOW_NASAL_CANNULA": "ഉയർന്ന ഒഴുക്ക് നാസൽ കാനുല", + "OXYGEN_MODALITY__NASAL_PRONGS": "നാസൽ പ്രോംഗ്സ്", + "OXYGEN_MODALITY__NON_REBREATHING_MASK": "നോൺ റീബ്രീത്തിംഗ് മാസ്ക്", + "OXYGEN_MODALITY__SIMPLE_FACE_MASK": "ലളിതമായ മുഖംമൂടി", + "PRESCRIPTION_FREQUENCY_BD": "ദിവസേന രണ്ടുതവണ", + "PRESCRIPTION_FREQUENCY_HS": "രാത്രി മാത്രം", + "PRESCRIPTION_FREQUENCY_OD": "ദിവസത്തിൽ ഒരിക്കൽ", + "PRESCRIPTION_FREQUENCY_Q4H": "നാലാമത്തെ മണിക്കൂർ", + "PRESCRIPTION_FREQUENCY_QID": "ആറാം മണിക്കൂർ", + "PRESCRIPTION_FREQUENCY_QOD": "ഇതര ദിവസം", + "PRESCRIPTION_FREQUENCY_QWK": "ആഴ്ചയിൽ ഒരിക്കൽ", + "PRESCRIPTION_FREQUENCY_STAT": "ഉടനെ", + "PRESCRIPTION_FREQUENCY_TID": "എട്ടാം മണിക്കൂർ", + "PRESCRIPTION_ROUTE_IM": "ഐ.എം", + "PRESCRIPTION_ROUTE_INHALATION": "ഇൻഹാലേഷൻ", + "PRESCRIPTION_ROUTE_INTRATHECAL": "ഇൻട്രാതെക്കൽ കുത്തിവയ്പ്പ്", + "PRESCRIPTION_ROUTE_IV": "IV", + "PRESCRIPTION_ROUTE_NASOGASTRIC": "നാസോഗാസ്ട്രിക് / ഗ്യാസ്ട്രോസ്റ്റമി ട്യൂബ്", + "PRESCRIPTION_ROUTE_ORAL": "വാമൊഴി", + "PRESCRIPTION_ROUTE_RECTAL": "മലദ്വാരം", + "PRESCRIPTION_ROUTE_SC": "എസ്/സി", + "PRESCRIPTION_ROUTE_SUBLINGUAL": "ഉപഭാഷാപരമായ", + "PRESCRIPTION_ROUTE_TRANSDERMAL": "ട്രാൻസ്ഡെർമൽ", + "PUPIL_REACTION__BRISK": "ചടുലമായ", + "PUPIL_REACTION__CANNOT_BE_ASSESSED": "വിലയിരുത്താൻ കഴിയില്ല", + "PUPIL_REACTION__FIXED": "പരിഹരിച്ചു", + "PUPIL_REACTION__SLUGGISH": "ആലസ്യം", + "PUPIL_REACTION__UNKNOWN": "അജ്ഞാതം", + "Patients": "രോഗികൾ", + "Profile": "പ്രൊഫൈൽ", + "REGULAR": "പതിവ്", + "RESPIRATORY_SUPPORT_SHORT__INVASIVE": "IV", + "RESPIRATORY_SUPPORT_SHORT__NON_INVASIVE": "എൻ.ഐ.വി", + "RESPIRATORY_SUPPORT_SHORT__OXYGEN_SUPPORT": "O2 പിന്തുണ", + "RESPIRATORY_SUPPORT_SHORT__UNKNOWN": "ഒന്നുമില്ല", + "RESPIRATORY_SUPPORT__INVASIVE": "ആക്രമണാത്മക വെൻ്റിലേറ്റർ (IV)", + "RESPIRATORY_SUPPORT__NON_INVASIVE": "നോൺ-ഇൻവേസീവ് വെൻ്റിലേറ്റർ (NIV)", + "RESPIRATORY_SUPPORT__OXYGEN_SUPPORT": "ഓക്സിജൻ പിന്തുണ", + "RESPIRATORY_SUPPORT__UNKNOWN": "ഒന്നുമില്ല", + "Resource": "സഹായം", + "SORT_OPTIONS__-bed__name": "കിടക്ക നമ്പർ N-1", + "SORT_OPTIONS__-category_severity": "ഏറ്റവും ഉയർന്ന തീവ്രത വിഭാഗം ആദ്യം", + "SORT_OPTIONS__-created_date": "ആദ്യം സൃഷ്ടിച്ച ഏറ്റവും പുതിയ തീയതി", + "SORT_OPTIONS__-modified_date": "ഏറ്റവും പുതിയ അപ്ഡേറ്റ് തീയതി ആദ്യം", + "SORT_OPTIONS__-name": "രോഗിയുടെ പേര് ZA", + "SORT_OPTIONS__-review_time": "ഏറ്റവും പുതിയ അവലോകന തീയതി ആദ്യം", + "SORT_OPTIONS__-taken_at": "ഏറ്റവും പുതിയ തീയതി ആദ്യം", + "SORT_OPTIONS__bed__name": "ബെഡ് നമ്പർ 1-N", + "SORT_OPTIONS__category_severity": "ഏറ്റവും കുറഞ്ഞ തീവ്രത വിഭാഗം ആദ്യം", + "SORT_OPTIONS__created_date": "ഏറ്റവും പഴയ സൃഷ്ടിച്ച തീയതി ആദ്യം", + "SORT_OPTIONS__facility__name,-last_consultation__current_bed__bed__name": "കിടക്ക നമ്പർ N-1", + "SORT_OPTIONS__facility__name,last_consultation__current_bed__bed__name": "ബെഡ് നമ്പർ 1-N", + "SORT_OPTIONS__modified_date": "ഏറ്റവും പഴയ പുതുക്കിയ തീയതി ആദ്യം", + "SORT_OPTIONS__name": "രോഗിയുടെ പേര് AZ", + "SORT_OPTIONS__review_time": "ഏറ്റവും പഴയ അവലോകന തീയതി ആദ്യം", + "SORT_OPTIONS__taken_at": "ആദ്യം എടുത്ത ഏറ്റവും പഴയ തീയതി", + "Sample Test": "സാമ്പിൾ ടെസ്റ്റ്", + "Shifting": "ഫെസിലിറ്റി മാറ്റല്‍ ", "Submit": "സമർപ്പിക്കുക", - "Cancel": "റദ്ദാക്കുക", - "powered_by": "പ്രായോജകർ", - "care": "കെയർ", - "something_went_wrong": "എന്തോ കുഴപ്പം സംഭവിച്ചു..!", - "stop": "നിർത്തുക", - "record": "റെക്കോർഡ് ഓഡിയോ", - "recording": "റെക്കോർഡിംഗ്", - "yes": "അതെ", - "no": "ഇല്ല", - "status": "നില", - "created": "സൃഷ്ടിച്ചത്", - "modified": "പരിഷ്കരിച്ചു", - "updated": "അപ്ഡേറ്റ് ചെയ്തു", - "configure": "കോൺഫിഗർ ചെയ്യുക", - "assigned_to": "ലേക്ക് നിയോഗിച്ചു", - "cancel": "റദ്ദാക്കുക", - "clear": "ക്ലിയർ", - "apply": "അപേക്ഷിക്കുക", - "filter_by": "ഇതനുസരിച്ച് ഫിൽട്ടർ ചെയ്യുക", - "filter": "ഫിൽട്ടർ ചെയ്യുക", - "settings_and_filters": "ക്രമീകരണങ്ങളും ഫിൽട്ടറുകളും", - "ordering": "ഓർഡർ ചെയ്യുന്നു", - "international_mobile": "അന്താരാഷ്ട്ര മൊബൈൽ", - "indian_mobile": "ഇന്ത്യൻ മൊബൈൽ", - "mobile": "മൊബൈൽ", - "landline": "ഇന്ത്യൻ ലാൻഡ്‌ലൈൻ", - "support": "പിന്തുണ", - "emergency_contact_number": "എമർജൻസി കോൺടാക്റ്റ് നമ്പർ", - "last_modified": "അവസാനം പരിഷ്കരിച്ചത്", - "patient_address": "രോഗിയുടെ വിലാസം", - "all_details": "എല്ലാ വിശദാംശങ്ങളും", - "confirm": "സ്ഥിരീകരിക്കുക", - "refresh_list": "ലിസ്റ്റ് പുതുക്കുക", - "last_edited": "അവസാനം എഡിറ്റ് ചെയ്തത്", - "audit_log": "ഓഡിറ്റ് ലോഗ്", - "comments": "അഭിപ്രായങ്ങൾ", - "contact_person_number": "ബന്ധപ്പെടേണ്ട വ്യക്തിയുടെ നമ്പർ", - "referral_letter": "റഫറൽ കത്ത്", - "print": "അച്ചടിക്കുക", - "print_referral_letter": "റഫറൽ കത്ത് അച്ചടിക്കുക", - "date_of_positive_covid_19_swab": "പോസിറ്റീവ് കോവിഡ് 19 സ്വാബ് തീയതി", - "patient_no": "OP/IP നമ്പർ", - "date_of_admission": "പ്രവേശന തീയതി", - "india_1": "ഇന്ത്യ", - "unique_id": "അദ്വിതീയ ഐഡി", - "date_and_time": "തീയതിയും സമയവും", - "facility_type": "സൗകര്യ തരം", - "number_of_chronic_diseased_dependents": "വിട്ടുമാറാത്ത രോഗങ്ങളെ ആശ്രയിക്കുന്നവരുടെ എണ്ണം", - "number_of_aged_dependents_above_60": "പ്രായമായ ആശ്രിതരുടെ എണ്ണം (60-ൽ കൂടുതൽ)", - "ongoing_medications": "നടന്നുകൊണ്ടിരിക്കുന്ന മരുന്നുകൾ", - "countries_travelled": "രാജ്യങ്ങൾ സഞ്ചരിച്ചു", - "travel_within_last_28_days": "ആഭ്യന്തര/അന്താരാഷ്ട്ര യാത്ര (കഴിഞ്ഞ 28 ദിവസത്തിനുള്ളിൽ)", - "estimated_contact_date": "കണക്കാക്കിയ കോൺടാക്റ്റ് തീയതി", - "blood_group": "രക്ത ഗ്രൂപ്പ്", - "date_of_birth": "ജനനത്തീയതി", - "date_of_test": "ടെസ്റ്റ് തീയതി", - "srf_id": "SRF ഐഡി", - "contact_number": "ബന്ധപ്പെടേണ്ട നമ്പർ", - "diagnosis": "രോഗനിർണയം", - "copied_to_clipboard": "ക്ലിപ്പ്ബോർഡിലേക്ക് പകർത്തി", - "is": "ആണ്", - "reason": "കാരണം", - "description": "വിവരണം", - "name": "പേര്", - "address": "വിലാസം", - "phone": "ഫോൺ", - "nationality": "ദേശീയത", - "allergies": "അലർജികൾ", - "type_your_comment": "നിങ്ങളുടെ അഭിപ്രായം ടൈപ്പ് ചെയ്യുക", - "any_other_comments": "മറ്റേതെങ്കിലും അഭിപ്രായങ്ങൾ", - "loading": "ലോഡ് ചെയ്യുന്നു...", - "facility": "സൗകര്യം", - "local_body": "തദ്ദേശ സ്ഥാപനം", - "filters": "ഫിൽട്ടറുകൾ", - "unknown": "അജ്ഞാതം", + "TELEMEDICINE": "ടെലിമെഡിസിൻ", + "Users": "ഉപയോക്താക്കൾ", + "VENTILATOR": "വിശദമായ അപ്ഡേറ്റ്", + "VENTILATOR_MODE__CMV": "കൺട്രോൾ മെക്കാനിക്കൽ വെൻ്റിലേഷൻ (CMV)", + "VENTILATOR_MODE__PCV": "പ്രഷർ കൺട്രോൾ വെൻ്റിലേഷൻ (PCV)", + "VENTILATOR_MODE__PC_SIMV": "പ്രഷർ കൺട്രോൾഡ് SIMV (PC-SIMV)", + "VENTILATOR_MODE__PSV": "C-PAP / പ്രഷർ സപ്പോർട്ട് വെൻ്റിലേഷൻ (PSV)", + "VENTILATOR_MODE__SIMV": "സിൻക്രൊണൈസ്ഡ് ഇൻ്റർമിറ്റൻറ് നിർബന്ധിത വെൻ്റിലേഷൻ (SIMV)", + "VENTILATOR_MODE__VCV": "വോളിയം കൺട്രോൾ വെൻ്റിലേഷൻ (VCV)", + "VENTILATOR_MODE__VC_SIMV": "വോളിയം നിയന്ത്രിത SIMV (VC-SIMV)", + "View Facility": "ഫെസിലിറ്റി കാണുക", + "action_irreversible": "ഈ പ്രവർത്തനം മാറ്റാനാവാത്തതാണ്", "active": "സജീവമാണ്", - "completed": "പൂർത്തിയാക്കി", - "on": "ഓൺ", - "open": "തുറക്കുക", - "features": "ഫീച്ചറുകൾ", - "pincode": "പിൻകോഡ്", - "required": "ആവശ്യമാണ്", - "field_required": "ഈ ഫീൽഡ് പൂരിപ്പിക്കേണ്ടതുണ്ട്", - "litres": "ലിറ്റർ", - "litres_per_day": "ലിറ്റർ / ദിവസം", - "invalid_pincode": "പിൻകോഡ് അസാധുവാണ്", - "invalid_phone_number": "അസാധുവായ ഫോൺ നമ്പർ", - "latitude_invalid": "അക്ഷാംശം -90 നും 90 നും ഇടയിലായിരിക്കണം", - "longitude_invalid": "രേഖാംശം -180 നും 180 നും ഇടയിലായിരിക്കണം", - "save": "സംരക്ഷിക്കുക", - "continue": "തുടരുക", - "save_and_continue": "സംരക്ഷിച്ച് തുടരുക", - "select": "തിരഞ്ഞെടുക്കുക", - "lsg": "Lsg", - "delete": "ഇല്ലാതാക്കുക", - "remove": "നീക്കം ചെയ്യുക", - "max_size_for_image_uploaded_should_be": "അപ്‌ലോഡ് ചെയ്‌ത ചിത്രത്തിനുള്ള പരമാവധി വലുപ്പം ആയിരിക്കണം", - "allowed_formats_are": "അനുവദനീയമായ ഫോർമാറ്റുകളാണ്", - "recommended_aspect_ratio_for": "ഇതിനായി ശുപാർശ ചെയ്യുന്ന വീക്ഷണ അനുപാതം", - "drag_drop_image_to_upload": "അപ്‌ലോഡ് ചെയ്യാൻ ചിത്രം വലിച്ചിടുക", - "upload_an_image": "ഒരു ചിത്രം അപ്‌ലോഡ് ചെയ്യുക", - "upload": "അപ്‌ലോഡ് ചെയ്യുക", - "uploading": "അപ്‌ലോഡ് ചെയ്യുന്നു", - "switch": "മാറുക", - "capture": "ക്യാപ്ചർ", - "retake": "വീണ്ടും എടുക്കുക", - "submit": "സമർപ്പിക്കുക", - "camera": "ക്യാമറ", - "camera_permission_denied": "ക്യാമറ അനുമതി നിഷേധിച്ചു", - "submitting": "സമർപ്പിക്കുന്നു", - "view_details": "വിശദാംശങ്ങൾ കാണുക", - "type_to_search": "തിരയാൻ ടൈപ്പ് ചെയ്യുക", - "show_all": "എല്ലാം കാണിക്കുക", - "hide": "മറയ്ക്കുക", - "select_skills": "കുറച്ച് കഴിവുകൾ തിരഞ്ഞെടുത്ത് ചേർക്കുക", - "contact_your_admin_to_add_skills": "കഴിവുകൾ ചേർക്കാൻ നിങ്ങളുടെ അഡ്‌മിനെ ബന്ധപ്പെടുക", + "active_prescriptions": "സജീവ കുറിപ്പടികൾ", "add": "ചേർക്കുക", "add_as": "ആയി ചേർക്കുക", - "sort_by": "ഇങ്ങനെ അടുക്കുക", - "none": "ഒന്നുമില്ല", - "choose_file": "ഉപകരണത്തിൽ നിന്ന് അപ്‌ലോഡ് ചെയ്യുക", - "open_camera": "ക്യാമറ തുറക്കുക", - "file_preview": "ഫയൽ പ്രിവ്യൂ", - "file_preview_not_supported": "ഈ ഫയൽ പ്രിവ്യൂ ചെയ്യാൻ കഴിയില്ല. ഇത് ഡൗൺലോഡ് ചെയ്യാൻ ശ്രമിക്കുക.", - "view_faciliy": "സൗകര്യം കാണുക", - "view_patients": "രോഗികളെ കാണുക", - "frequency": "ആവൃത്തി", - "days": "ദിവസങ്ങൾ", - "never": "ഒരിക്കലും", + "add_beds": "കിടക്ക(കൾ) ചേർക്കുക", + "add_details_of_patient": "രോഗിയുടെ വിശദാംശങ്ങൾ ചേർക്കുക", + "add_location": "ലൊക്കേഷൻ ചേർക്കുക", + "add_new_user": "പുതിയ ഉപയോക്താവിനെ ചേർക്കുക", "add_notes": "കുറിപ്പുകൾ ചേർക്കുക", - "notes_placeholder": "നിങ്ങളുടെ കുറിപ്പുകൾ ടൈപ്പ് ചെയ്യുക", - "optional": "ഓപ്ഷണൽ", - "discontinue": "നിർത്തുക", - "discontinued": "നിർത്തലാക്കി", - "not_specified": "വ്യക്തമാക്കിയിട്ടില്ല", + "add_prescription_medication": "കുറിപ്പടി മരുന്ന് ചേർക്കുക", + "add_prescription_to_consultation_note": "ഈ കൺസൾട്ടേഷനിലേക്ക് ഒരു പുതിയ കുറിപ്പടി ചേർക്കുക.", + "add_prn_prescription": "PRN കുറിപ്പടി ചേർക്കുക", + "address": "വിലാസം", + "administer": "ഭരണം നടത്തുക", + "administer_medicine": "മെഡിസിൻ നടത്തുക", + "administer_medicines": "മരുന്നുകൾ നൽകുക", + "administer_selected_medicines": "തിരഞ്ഞെടുത്ത മരുന്നുകൾ നൽകുക", + "administered_on": "മേൽ നടത്തി", + "administration_dosage_range_error": "ഡോസ് ആരംഭത്തിനും ടാർഗെറ്റ് ഡോസേജിനും ഇടയിലായിരിക്കണം", + "administration_notes": "അഡ്മിനിസ്ട്രേഷൻ കുറിപ്പുകൾ", + "advanced_filters": "വിപുലമായ ഫിൽട്ടറുകൾ", + "age": "പ്രായം", "all_changes_have_been_saved": "എല്ലാ മാറ്റങ്ങളും സംരക്ഷിച്ചു", - "no_data_found": "വിവരങ്ങളൊന്നും കണ്ടെത്തിയില്ല", - "edit": "എഡിറ്റ് ചെയ്യുക", - "clear_selection": "തിരഞ്ഞെടുപ്പ് മായ്‌ക്കുക", - "select_date": "തീയതി തിരഞ്ഞെടുക്കുക", - "DD/MM/YYYY": "DD/MM/YYYY", - "clear_all_filters": "എല്ലാ ഫിൽട്ടറുകളും മായ്ക്കുക", - "summary": "സംഗ്രഹം", - "report": "റിപ്പോർട്ട് ചെയ്യുക", - "treating_doctor": "ചികിത്സിക്കുന്ന ഡോക്ടർ", - "ration_card__NO_CARD": "നോൺ-കാർഡ് ഹോൾഡർ", - "ration_card__BPL": "ബി.പി.എൽ", - "ration_card__APL": "എ.പി.എൽ", - "empty_date_time": "--:-- --; ------------", - "caution": "ജാഗ്രത", - "feed_optimal_experience_for_phones": "ഒപ്റ്റിമൽ കാണൽ അനുഭവത്തിനായി, നിങ്ങളുടെ ഉപകരണം തിരിക്കുന്നത് പരിഗണിക്കുക.", - "feed_optimal_experience_for_apple_phones": "ഒപ്റ്റിമൽ കാണൽ അനുഭവത്തിനായി, നിങ്ങളുടെ ഉപകരണം തിരിക്കുന്നത് പരിഗണിക്കുക. നിങ്ങളുടെ ഉപകരണ ക്രമീകരണങ്ങളിൽ സ്വയമേവ തിരിയുന്നത് പ്രവർത്തനക്ഷമമാണെന്ന് ഉറപ്പാക്കുക.", - "action_irreversible": "ഈ പ്രവർത്തനം മാറ്റാനാവാത്തതാണ്", - "GENDER__1": "പുരുഷൻ", - "GENDER__2": "സ്ത്രീ", - "GENDER__3": "നോൺ-ബൈനറി", - "normal": "സാധാരണ", - "done": "ചെയ്തു", - "view": "കാണുക", - "rename": "പേരുമാറ്റുക", - "more_info": "കൂടുതൽ വിവരങ്ങൾ", + "all_details": "എല്ലാ വിശദാംശങ്ങളും", + "allergies": "അലർജികൾ", + "allowed_formats_are": "അനുവദനീയമായ ഫോർമാറ്റുകളാണ്", + "already_a_member": "ഇതിനകം തന്നെ ഒരു അംഗമാണോ?", + "ambulance_driver_name": "ആംബുലൻസ് ഡ്രൈവറുടെ പേര്", + "ambulance_number": "ആംബുലൻസ് നം", + "ambulance_phone_number": "ആംബുലൻസിൻ്റെ ഫോൺ നമ്പർ", + "antenatal": "ജനനത്തിനുമുമ്പ്", + "any_other_comments": "മറ്റേതെങ്കിലും അഭിപ്രായങ്ങൾ", + "apply": "അപേക്ഷിക്കുക", + "approved_by_district_covid_control_room": "ജില്ലാ കോവിഡ് കൺട്രോൾ റൂം അംഗീകരിച്ചു", + "approving_facility": "അംഗീകാരം നൽകുന്ന സൗകര്യത്തിൻ്റെ പേര്", "archive": "ആർക്കൈവ്", - "discard": "നിരസിക്കുക", - "live": "തത്സമയം", - "discharged": "ഡിസ്ചാർജ് ചെയ്തു", "archived": "ആർക്കൈവ് ചെയ്തു", - "no_changes_made": "മാറ്റങ്ങളൊന്നും വരുത്തിയിട്ടില്ല", - "user_deleted_successfuly": "ഉപയോക്താവ് ഇല്ലാതാക്കി", - "users": "ഉപയോക്താക്കൾ", + "are_you_still_watching": "നിങ്ങൾ ഇപ്പോഴും കാണുന്നുണ്ടോ?", "are_you_sure_want_to_delete": "{{name}}ഇല്ലാതാക്കണമെന്ന് തീർച്ചയാണോ?", - "oxygen_information": "ഓക്സിജൻ വിവരങ്ങൾ", - "deleted_successfully": "{{name}} വിജയകരമായി ഇല്ലാതാക്കി", - "delete_item": "{{name}}ഇല്ലാതാക്കുക", - "unsupported_browser": "പിന്തുണയ്‌ക്കാത്ത ബ്രൗസർ", - "unsupported_browser_description": "നിങ്ങളുടെ ബ്രൗസർ ({{name}} പതിപ്പ് {{version}}) പിന്തുണയ്ക്കുന്നില്ല. ഏറ്റവും പുതിയ പതിപ്പിലേക്ക് നിങ്ങളുടെ ബ്രൗസർ അപ്‌ഡേറ്റ് ചെയ്യുക അല്ലെങ്കിൽ മികച്ച അനുഭവത്തിനായി പിന്തുണയ്‌ക്കുന്ന ബ്രൗസറിലേക്ക് മാറുക.", - "SORT_OPTIONS__-created_date": "ആദ്യം സൃഷ്ടിച്ച ഏറ്റവും പുതിയ തീയതി", - "SORT_OPTIONS__created_date": "ഏറ്റവും പഴയ സൃഷ്ടിച്ച തീയതി ആദ്യം", - "SORT_OPTIONS__-category_severity": "ഏറ്റവും ഉയർന്ന തീവ്രത വിഭാഗം ആദ്യം", - "SORT_OPTIONS__category_severity": "ഏറ്റവും കുറഞ്ഞ തീവ്രത വിഭാഗം ആദ്യം", - "SORT_OPTIONS__-modified_date": "ഏറ്റവും പുതിയ അപ്ഡേറ്റ് തീയതി ആദ്യം", - "SORT_OPTIONS__modified_date": "ഏറ്റവും പഴയ പുതുക്കിയ തീയതി ആദ്യം", - "SORT_OPTIONS__facility__name,last_consultation__current_bed__bed__name": "ബെഡ് നമ്പർ 1-N", - "SORT_OPTIONS__facility__name,-last_consultation__current_bed__bed__name": "കിടക്ക നമ്പർ N-1", - "SORT_OPTIONS__-review_time": "ഏറ്റവും പുതിയ അവലോകന തീയതി ആദ്യം", - "SORT_OPTIONS__review_time": "ഏറ്റവും പഴയ അവലോകന തീയതി ആദ്യം", - "SORT_OPTIONS__taken_at": "ആദ്യം എടുത്ത ഏറ്റവും പഴയ തീയതി", - "SORT_OPTIONS__-taken_at": "ഏറ്റവും പുതിയ തീയതി ആദ്യം", - "SORT_OPTIONS__name": "രോഗിയുടെ പേര് AZ", - "SORT_OPTIONS__-name": "രോഗിയുടെ പേര് ZA", - "SORT_OPTIONS__bed__name": "ബെഡ് നമ്പർ 1-N", - "SORT_OPTIONS__-bed__name": "കിടക്ക നമ്പർ N-1", - "middleware_hostname": "മിഡിൽവെയർ ഹോസ്റ്റ്നാമം", - "local_ipaddress": "പ്രാദേശിക ഐപി വിലാസം", - "no_consultation_updates": "കൺസൾട്ടേഷൻ അപ്‌ഡേറ്റുകളൊന്നുമില്ല", - "consultation_updates": "കൺസൾട്ടേഷൻ അപ്ഡേറ്റുകൾ", - "update_log": "അപ്ഡേറ്റ് ലോഗ്", - "record_updates": "റെക്കോർഡ് അപ്ഡേറ്റുകൾ", - "log_lab_results": "ലോഗ് ലാബ് ഫലങ്ങൾ", - "no_log_update_delta": "മുമ്പത്തെ ലോഗ് അപ്ഡേറ്റ് മുതൽ മാറ്റങ്ങളൊന്നുമില്ല", - "virtual_nursing_assistant": "വെർച്വൽ നഴ്സിംഗ് അസിസ്റ്റൻ്റ്", - "discharge": "ഡിസ്ചാർജ്", - "discharge_summary": "ഡിസ്ചാർജ് സംഗ്രഹം", - "discharge_from_care": "CARE-ൽ നിന്നുള്ള ഡിസ്ചാർജ്", - "generating_discharge_summary": "ഡിസ്ചാർജ് സംഗ്രഹം സൃഷ്ടിക്കുന്നു", - "discharge_summary_not_ready": "ഡിസ്ചാർജ് സംഗ്രഹം ഇതുവരെ തയ്യാറായിട്ടില്ല.", - "download_discharge_summary": "ഡിസ്ചാർജ് സംഗ്രഹം ഡൗൺലോഡ് ചെയ്യുക", - "email_discharge_summary_description": "ഡിസ്ചാർജ് സംഗ്രഹം ലഭിക്കുന്നതിന് നിങ്ങളുടെ സാധുവായ ഇമെയിൽ വിലാസം നൽകുക", - "generated_summary_caution": "കെയർ സിസ്റ്റത്തിൽ ക്യാപ്‌ചർ ചെയ്‌ത വിവരങ്ങൾ ഉപയോഗിച്ച് കമ്പ്യൂട്ടർ സൃഷ്‌ടിച്ച സംഗ്രഹമാണിത്.", - "NORMAL": "സംക്ഷിപ്ത അപ്ഡേറ്റ്", - "VENTILATOR": "വിശദമായ അപ്ഡേറ്റ്", - "DOCTORS_LOG": "പുരോഗതി കുറിപ്പ്", - "AUTOMATED": "ഓട്ടോമേറ്റഡ്", - "TELEMEDICINE": "ടെലിമെഡിസിൻ", - "investigations": "അന്വേഷണങ്ങൾ", - "search_investigation_placeholder": "അന്വേഷണവും ഗ്രൂപ്പുകളും", - "save_investigation": "അന്വേഷണം സംരക്ഷിക്കുക", - "investigation_reports": "അന്വേഷണ റിപ്പോർട്ടുകൾ", - "no_investigation": "അന്വേഷണ റിപ്പോർട്ടുകളൊന്നും കണ്ടെത്തിയില്ല", - "investigations_suggested": "അന്വേഷണങ്ങൾ നിർദ്ദേശിച്ചു", - "to_be_conducted": "നടത്തേണ്ടത്", - "log_report": "ലോഗ് റിപ്പോർട്ട്", - "no_investigation_suggestions": "അന്വേഷണ നിർദ്ദേശങ്ങളൊന്നുമില്ല", - "select_investigation": "അന്വേഷണങ്ങൾ തിരഞ്ഞെടുക്കുക (എല്ലാ അന്വേഷണങ്ങളും സ്ഥിരസ്ഥിതിയായി തിരഞ്ഞെടുക്കും)", - "select_investigations": "അന്വേഷണങ്ങൾ തിരഞ്ഞെടുക്കുക", - "get_tests": "ടെസ്റ്റുകൾ നേടുക", - "select_investigation_groups": "അന്വേഷണ സംഘങ്ങൾ തിരഞ്ഞെടുക്കുക", - "select_groups": "ഗ്രൂപ്പുകൾ തിരഞ്ഞെടുക്കുക", - "generate_report": "റിപ്പോർട്ട് സൃഷ്ടിക്കുക", - "prev_sessions": "മുൻ സെഷനുകൾ", - "next_sessions": "അടുത്ത സെഷനുകൾ", - "no_changes": "മാറ്റങ്ങളൊന്നുമില്ല", - "back_to_consultation": "കൺസൾട്ടേഷനിലേക്ക് മടങ്ങുക", - "no_treating_physicians_available": "ഈ സൗകര്യത്തിന് ഹോം ഫെസിലിറ്റി ഡോക്ടർമാരില്ല. ദയവായി നിങ്ങളുടെ അഡ്‌മിനെ ബന്ധപ്പെടുക.", - "encounter_suggestion_edit_disallowed": "എഡിറ്റ് കൺസൾട്ടേഷനിൽ ഈ ഓപ്ഷനിലേക്ക് മാറാൻ അനുവാദമില്ല", - "encounter_suggestion__A": "പ്രവേശനം", - "encounter_suggestion__DC": "ഡൊമിസിലിയറി കെയർ", - "encounter_suggestion__OP": "ഔട്ട് പേഷ്യൻ്റ് സന്ദർശനം", - "encounter_suggestion__DD": "കൂടിയാലോചന", - "encounter_suggestion__HI": "കൂടിയാലോചന", - "encounter_suggestion__R": "കൂടിയാലോചന", - "encounter_date_field_label__A": "സൗകര്യത്തിലേക്കുള്ള പ്രവേശന തീയതിയും സമയവും", - "encounter_date_field_label__DC": "ഡൊമിസിലിയറി കെയർ ആരംഭിച്ച തീയതിയും സമയവും", - "encounter_date_field_label__OP": "ഔട്ട്-പേഷ്യൻ്റ് സന്ദർശന തീയതിയും സമയവും", - "encounter_date_field_label__DD": "കൂടിയാലോചനയുടെ തീയതിയും സമയവും", - "encounter_date_field_label__HI": "കൂടിയാലോചനയുടെ തീയതിയും സമയവും", - "encounter_date_field_label__R": "കൂടിയാലോചനയുടെ തീയതിയും സമയവും", + "are_you_sure_want_to_delete_this_record": "ഈ റെക്കോർഡ് ഇല്ലാതാക്കണമെന്ന് തീർച്ചയാണോ?", + "asset_class": "അസറ്റ് ക്ലാസ്", + "asset_location": "അസറ്റ് ലൊക്കേഷൻ", + "asset_name": "അസറ്റ് പേര്", + "asset_not_found_msg": "ശ്ശോ! നിങ്ങൾ അന്വേഷിക്കുന്ന അസറ്റ് നിലവിലില്ല. അസറ്റ് ഐഡി പരിശോധിക്കുക.", + "asset_qr_id": "അസറ്റ് QR ഐഡി", + "asset_type": "അസറ്റ് തരം", + "assigned_facility": "സൗകര്യം ഏൽപ്പിച്ചു", + "assigned_to": "ലേക്ക് നിയോഗിച്ചു", + "audio__allow_permission": "സൈറ്റ് ക്രമീകരണങ്ങളിൽ ദയവായി മൈക്രോഫോൺ അനുമതി അനുവദിക്കുക", + "audio__allow_permission_button": "എങ്ങനെ അനുവദിക്കണമെന്ന് അറിയാൻ ഇവിടെ ക്ലിക്ക് ചെയ്യുക", + "audio__allow_permission_helper": "നിങ്ങൾ മുമ്പ് മൈക്രോഫോൺ ആക്‌സസ് നിരസിച്ചിരിക്കാം.", + "audio__record": "റെക്കോർഡ് ഓഡിയോ", + "audio__record_helper": "റെക്കോർഡിംഗ് ആരംഭിക്കാൻ ബട്ടൺ ക്ലിക്ക് ചെയ്യുക", + "audio__recorded": "ഓഡിയോ റെക്കോർഡ് ചെയ്തു", + "audio__recording": "റെക്കോർഡിംഗ്", + "audio__recording_helper": "ദയവായി നിങ്ങളുടെ മൈക്രോഫോണിൽ സംസാരിക്കുക.", + "audio__recording_helper_2": "റെക്കോർഡിംഗ് നിർത്താൻ ബട്ടണിൽ ക്ലിക്ക് ചെയ്യുക.", + "audio__start_again": "വീണ്ടും ആരംഭിക്കുക", + "audit_log": "ഓഡിറ്റ് ലോഗ്", + "auth_login_title": "അംഗീകൃത ലോഗിൻ", + "authorize_shift_delete": "ഷിഫ്റ്റ് ഇല്ലാതാക്കൽ അംഗീകരിക്കുക", + "auto_generated_for_care": "പരിചരണത്തിനായി സ്വയമേവ സൃഷ്ടിച്ചത്", + "available_features": "ലഭ്യമായ സവിശേഷതകൾ", + "available_in": "ലഭ്യമായ ഭാഷകൾ", + "average_weekly_working_hours": "പ്രതിവാര ശരാശരി പ്രവൃത്തി സമയം", + "awaiting_destination_approval": "ഡെസ്റ്റിനേഷൻ അനുമതിക്കായി കാത്തിരിക്കുന്നു", + "back": "തിരികെ", "back_dated_encounter_date_caution": "ഇതിനായി നിങ്ങൾ ഒരു ഏറ്റുമുട്ടൽ സൃഷ്ടിക്കുകയാണ്", - "encounter_duration_confirmation": "ഈ ഏറ്റുമുട്ടലിൻ്റെ ദൈർഘ്യം ഇതായിരിക്കും", - "consultation_notes": "പൊതു നിർദ്ദേശങ്ങൾ (ഉപദേശം)", - "procedure_suggestions": "നടപടിക്രമ നിർദ്ദേശങ്ങൾ", - "edit_cover_photo": "മുഖചിത്രം എഡിറ്റ് ചെയ്യുക", - "no_cover_photo_uploaded_for_this_facility": "ഈ സൗകര്യത്തിനായി കവർ ഫോട്ടോ അപ്‌ലോഡ് ചെയ്‌തിട്ടില്ല", + "back_to_consultation": "കൺസൾട്ടേഷനിലേക്ക് മടങ്ങുക", + "back_to_login": "ലോഗിൻ പേജിലേക്ക് മടങ്ങുക", + "base_dosage": "അളവ്", + "bed_capacity": "കിടക്ക കപ്പാസിറ്റി", + "bed_search_placeholder": "കിടക്കകളുടെ പേര് ഉപയോഗിച്ച് തിരയുക", + "bed_type": "കിടക്കയുടെ തരം", + "blood_group": "രക്ത ഗ്രൂപ്പ്", + "board_view": "ബോർഡ് കാഴ്ച", + "bradycardia": "ബ്രാഡികാർഡിയ", + "breathlessness_level": "ശ്വാസതടസ്സം നില", + "camera": "ക്യാമറ", + "camera_permission_denied": "ക്യാമറ അനുമതി നിഷേധിച്ചു", + "cancel": "റദ്ദാക്കുക", + "capture": "ക്യാപ്ചർ", "capture_cover_photo": "മുഖചിത്രം എടുക്കുക", - "diagnoses": "രോഗനിർണയങ്ങൾ", - "diagnosis_already_added": "ഈ രോഗനിർണയം ഇതിനകം ചേർത്തിട്ടുണ്ട്", - "principal": "പ്രിൻസിപ്പൽ", - "principal_diagnosis": "പ്രധാന രോഗനിർണയം", - "unconfirmed": "സ്ഥിരീകരിച്ചിട്ടില്ല", - "provisional": "താൽക്കാലികം", - "differential": "ഡിഫറൻഷ്യൽ", - "confirmed": "സ്ഥിരീകരിച്ചു", - "refuted": "നിഷേധിച്ചു", - "entered-in-error": "തെറ്റായി നൽകി", - "help_unconfirmed": "ഇത് ഒരു സ്ഥിരീകരിച്ച അവസ്ഥയായി കണക്കാക്കാൻ മതിയായ ഡയഗ്നോസ്റ്റിക് കൂടാതെ/അല്ലെങ്കിൽ ക്ലിനിക്കൽ തെളിവുകൾ ഇല്ല.", - "help_provisional": "ഇതൊരു താൽക്കാലിക രോഗനിർണയമാണ് - ഇപ്പോഴും പരിഗണനയിലിരിക്കുന്ന ഒരു സ്ഥാനാർത്ഥി.", - "help_differential": "രോഗനിർണ്ണയ പ്രക്രിയയ്ക്കും പ്രാഥമിക ചികിത്സയ്ക്കും കൂടുതൽ മാർഗ്ഗനിർദ്ദേശം നൽകുന്നതിന് സാധ്യതയുള്ള (സാധാരണയായി പരസ്പരവിരുദ്ധമായ) രോഗനിർണയങ്ങളിൽ ഒന്ന്.", - "help_confirmed": "ഇത് ഒരു സ്ഥിരീകരിച്ച അവസ്ഥയായി കണക്കാക്കാൻ മതിയായ ഡയഗ്നോസ്റ്റിക് കൂടാതെ/അല്ലെങ്കിൽ ക്ലിനിക്കൽ തെളിവുകൾ ഉണ്ട്.", - "help_refuted": "തുടർന്നുള്ള ഡയഗ്നോസ്റ്റിക്, ക്ലിനിക്കൽ തെളിവുകൾ വഴി ഈ അവസ്ഥ ഒഴിവാക്കിയിട്ടുണ്ട്.", - "help_entered-in-error": "പ്രസ്‌താവന തെറ്റായി നൽകിയതിനാൽ സാധുതയില്ല.", - "search_icd11_placeholder": "ICD-11 രോഗനിർണയങ്ങൾക്കായി തിരയുക", - "icd11_as_recommended": "WHO ശുപാർശ ചെയ്യുന്ന ICD-11 പ്രകാരം", - "Facilities": "ഫെസിലിറ്റികള്‍", - "Patients": "രോഗികൾ", - "Sample Test": "സാമ്പിൾ ടെസ്റ്റ്", - "Shifting": "ഫെസിലിറ്റി മാറ്റല്‍ ", - "Resource": "സഹായം", - "Users": "ഉപയോക്താക്കൾ", - "Profile": "പ്രൊഫൈൽ", - "Dashboard": "ഡാഷ്ബോർഡ്", - "return_to_care": "CARE എന്ന താളിലേക്ക് മടങ്ങുക", - "404_message": "നിലവിലില്ലാത്തതോ മറ്റൊരു URL-ലേക്ക് നീക്കിയതോ ആയ ഒരു പേജിൽ നിങ്ങൾ ഇടറിവീണതായി തോന്നുന്നു. നിങ്ങൾ ശരിയായ ലിങ്ക് നൽകിയിട്ടുണ്ടെന്ന് ഉറപ്പാക്കുക!", - "error_404": "പിശക് 404", - "page_not_found": "പേജ് കണ്ടെത്തിയില്ല", - "session_expired": "സെഷൻ കാലഹരണപ്പെട്ടു", - "invalid_password_reset_link": "അസാധുവായ പാസ്‌വേഡ് പുനഃസജ്ജീകരണ ലിങ്ക്", - "invalid_link_msg": "നിങ്ങൾ ഉപയോഗിച്ച പാസ്‌വേഡ് പുനഃസജ്ജീകരണ ലിങ്ക് അസാധുവാണ് അല്ലെങ്കിൽ കാലഹരണപ്പെട്ടതായി തോന്നുന്നു. ഒരു പുതിയ പാസ്‌വേഡ് പുനഃസജ്ജീകരണ ലിങ്ക് അഭ്യർത്ഥിക്കുക.", - "return_to_password_reset": "പാസ്‌വേഡ് പുനഃസജ്ജീകരണത്തിലേക്ക് മടങ്ങുക", - "return_to_login": "ലോഗിൻ എന്നതിലേക്ക് മടങ്ങുക", - "session_expired_msg": "നിങ്ങളുടെ സെഷൻ കാലഹരണപ്പെട്ടതായി തോന്നുന്നു. ഇത് നിഷ്ക്രിയത്വം മൂലമാകാം. തുടരാൻ വീണ്ടും ലോഗിൻ ചെയ്യുക.", - "invalid_reset": "അസാധുവായ റീസെറ്റ്", - "please_upload_a_csv_file": "ദയവായി ഒരു CSV ഫയൽ അപ്‌ലോഡ് ചെയ്യുക", - "csv_file_in_the_specified_format": "നിർദ്ദിഷ്ട ഫോർമാറ്റിൽ ഒരു CSV ഫയൽ തിരഞ്ഞെടുക്കുക", - "sample_format": "സാമ്പിൾ ഫോർമാറ്റ്", - "search_for_facility": "സൗകര്യത്തിനായി തിരയുക", - "select_local_body": "തദ്ദേശ സ്ഥാപനം തിരഞ്ഞെടുക്കുക", - "select_wards": "വാർഡുകൾ തിരഞ്ഞെടുക്കുക", - "result_date": "ഫല തീയതി", - "sample_collection_date": "സാമ്പിൾ ശേഖരണ തീയതി", - "record_has_been_deleted_successfully": "റെക്കോർഡ് വിജയകരമായി ഇല്ലാതാക്കി.", - "error_while_deleting_record": "റെക്കോർഡ് ഇല്ലാതാക്കുന്നതിൽ പിശക്", - "result_details": "ഫലത്തിൻ്റെ വിശദാംശങ്ങൾ", + "care": "കെയർ", + "category": "വിഭാഗം", + "caution": "ജാഗ്രത", + "central_nursing_station": "സെൻട്രൽ നഴ്‌സിംഗ് സ്റ്റേഷൻ", + "choose_file": "ഉപകരണത്തിൽ നിന്ന് അപ്‌ലോഡ് ചെയ്യുക", + "choose_location": "ലൊക്കേഷൻ തിരഞ്ഞെടുക്കുക", + "clear": "ക്ലിയർ", + "clear_all_filters": "എല്ലാ ഫിൽട്ടറുകളും മായ്ക്കുക", + "clear_home_facility": "ഹോം സൗകര്യം മായ്‌ക്കുക", + "clear_selection": "തിരഞ്ഞെടുപ്പ് മായ്‌ക്കുക", + "close": "അടയ്ക്കുക", + "close_scanner": "സ്കാനർ അടയ്ക്കുക", + "comment_added_successfully": "അഭിപ്രായം വിജയകരമായി ചേർത്തു", + "comment_min_length": "കമൻ്റിൽ കുറഞ്ഞത് 1 പ്രതീകമെങ്കിലും ഉണ്ടായിരിക്കണം", + "comments": "അഭിപ്രായങ്ങൾ", + "completed": "പൂർത്തിയാക്കി", + "configure": "കോൺഫിഗർ ചെയ്യുക", + "configure_facility": "സൗകര്യം ക്രമീകരിക്കുക", + "confirm": "സ്ഥിരീകരിക്കുക", "confirm_delete": "ഇല്ലാതാക്കൽ സ്ഥിരീകരിക്കുക", - "are_you_sure_want_to_delete_this_record": "ഈ റെക്കോർഡ് ഇല്ലാതാക്കണമെന്ന് തീർച്ചയാണോ?", - "patient_category": "രോഗികളുടെ വിഭാഗം", - "source": "ഉറവിടം", - "result": "ഫലം", - "sample_type": "സാമ്പിൾ തരം", - "patient_status": "രോഗിയുടെ അവസ്ഥ", - "mobile_number": "മൊബൈൽ നമ്പർ", - "patient_created": "രോഗിയെ സൃഷ്ടിച്ചു", - "update_record": "റെക്കോർഡ് അപ്ഡേറ്റ് ചെയ്യുക", - "facility_search_placeholder": "ഫെസിലിറ്റി / ജില്ല പ്രകാരം തിരയുക", - "advanced_filters": "വിപുലമായ ഫിൽട്ടറുകൾ", - "facility_name": "സൗകര്യത്തിൻ്റെ പേര്", - "KASP Empanelled": "കെ. എ. എസ്. പി. എംപാനല്‍ ചെയ്യപ്പെട്ടത്", - "View Facility": "ഫെസിലിറ്റി കാണുക", - "no_duplicate_facility": "അനധികൃതമായി ഫെസിലിറ്റികള്‍ സൃഷ്ടിക്കരുത്", - "no_facilities": "ഫെസിലിറ്റികളൊന്നും കണ്ടെത്തുവാനായില്ല", - "no_staff": "ജീവനക്കാരെ കണ്ടെത്തിയില്ല", - "no_bed_types_found": "കിടക്ക തരങ്ങളൊന്നും കണ്ടെത്തിയില്ല", - "total_beds": "മൊത്തം കിടക്കകൾ", + "confirm_discontinue": "നിർത്തലാക്കൽ സ്ഥിരീകരിക്കുക", + "confirm_password": "പാസ്‌വേഡ് ഉറപ്പാക്കുക", + "confirm_transfer_complete": "കൈമാറ്റം പൂർത്തിയായെന്ന് സ്ഥിരീകരിക്കുക!", + "confirmed": "സ്ഥിരീകരിച്ചു", + "consultation_notes": "പൊതു നിർദ്ദേശങ്ങൾ (ഉപദേശം)", + "consultation_updates": "കൺസൾട്ടേഷൻ അപ്ഡേറ്റുകൾ", + "contact_number": "ബന്ധപ്പെടേണ്ട നമ്പർ", + "contact_person": "ഫെസിലിറ്റിയിൽ ബന്ധപ്പെടുന്ന വ്യക്തിയുടെ പേര്", + "contact_person_at_the_facility": "നിലവിലെ സൗകര്യത്തിലുള്ള വ്യക്തിയുമായി ബന്ധപ്പെടുക", + "contact_person_number": "ബന്ധപ്പെടേണ്ട വ്യക്തിയുടെ നമ്പർ", + "contact_phone": "ബന്ധപ്പെടാനുള്ള വ്യക്തി നമ്പർ", + "contact_your_admin_to_add_skills": "കഴിവുകൾ ചേർക്കാൻ നിങ്ങളുടെ അഡ്‌മിനെ ബന്ധപ്പെടുക", + "continue": "തുടരുക", + "continue_watching": "കാണുന്നത് തുടരുക", + "contribute_github": "GitHubൽ സംഭാവന ചെയ്യുക", + "copied_to_clipboard": "ക്ലിപ്പ്ബോർഡിലേക്ക് പകർത്തി", + "countries_travelled": "രാജ്യങ്ങൾ സഞ്ചരിച്ചു", + "covid_19_cat_gov": "സർക്കാർ പ്രകാരം കോവിഡ്_19 ക്ലിനിക്കൽ വിഭാഗം. കേരള മാർഗരേഖ (എ/ബി/സി)", + "create": "സൃഷ്ടിക്കുക", + "create_add_more": "സൃഷ്‌ടിക്കുക, കൂടുതൽ ചേർക്കുക", + "create_asset": "അസറ്റ് സൃഷ്ടിക്കുക", "create_facility": "ഒരു പുതിയ ഫെസിലിറ്റി സൃഷ്ടിക്കുക", - "staff_list": "സ്റ്റാഫ് ലിസ്റ്റ്", - "bed_capacity": "കിടക്ക കപ്പാസിറ്റി", - "cylinders": "സിലിണ്ടറുകൾ", - "cylinders_per_day": "സിലിണ്ടറുകൾ / ദിവസം", - "liquid_oxygen_capacity": "ദ്രാവക ഓക്സിജൻ ശേഷി", - "expected_burn_rate": "പ്രതീക്ഷിക്കുന്ന പൊള്ളൽ നിരക്ക്", - "type_b_cylinders": "ബി തരം സിലിണ്ടറുകൾ", - "type_c_cylinders": "സി തരം സിലിണ്ടറുകൾ", - "type_d_cylinders": "ഡി തരം സിലിണ്ടറുകൾ", - "update_asset": "അസറ്റ് അപ്ഡേറ്റ് ചെയ്യുക", "create_new_asset": "പുതിയ അസറ്റ് സൃഷ്ടിക്കുക", - "you_need_at_least_a_location_to_create_an_assest": "ഒരു അസസ്‌റ്റ് സൃഷ്‌ടിക്കാൻ നിങ്ങൾക്ക് ഒരു ലൊക്കേഷനെങ്കിലും ആവശ്യമാണ്.", - "add_location": "ലൊക്കേഷൻ ചേർക്കുക", - "close_scanner": "സ്കാനർ അടയ്ക്കുക", - "scan_asset_qr": "അസറ്റ് ക്യുആർ സ്കാൻ ചെയ്യുക!", - "create": "സൃഷ്ടിക്കുക", - "asset_name": "അസറ്റ് പേര്", - "asset_location": "അസറ്റ് ലൊക്കേഷൻ", - "asset_type": "അസറ്റ് തരം", - "asset_class": "അസറ്റ് ക്ലാസ്", - "details_about_the_equipment": "ഉപകരണത്തെക്കുറിച്ചുള്ള വിശദാംശങ്ങൾ", - "working_status": "പ്രവർത്തന നില", - "why_the_asset_is_not_working": "എന്തുകൊണ്ടാണ് അസറ്റ് പ്രവർത്തിക്കാത്തത്?", - "describe_why_the_asset_is_not_working": "അസറ്റ് പ്രവർത്തിക്കാത്തത് എന്തുകൊണ്ടെന്ന് വിവരിക്കുക", - "asset_qr_id": "അസറ്റ് QR ഐഡി", - "manufacturer": "നിർമ്മാതാവ്", - "eg_xyz": "ഉദാ. XYZ", - "eg_abc": "ഉദാ. എബിസി", - "warranty_amc_expiry": "വാറൻ്റി / AMC കാലഹരണപ്പെടുന്നു", + "create_resource_request": "റിസോഴ്സ് അഭ്യർത്ഥന സൃഷ്ടിക്കുക", + "created": "സൃഷ്ടിച്ചത്", + "created_date": "സൃഷ്ടിച്ച തീയതി", + "csv_file_in_the_specified_format": "നിർദ്ദിഷ്ട ഫോർമാറ്റിൽ ഒരു CSV ഫയൽ തിരഞ്ഞെടുക്കുക", + "customer_support_email": "ഉപഭോക്തൃ പിന്തുണ ഇമെയിൽ", "customer_support_name": "ഉപഭോക്തൃ പിന്തുണയുടെ പേര്", "customer_support_number": "ഉപഭോക്തൃ പിന്തുണ നമ്പർ", - "customer_support_email": "ഉപഭോക്തൃ പിന്തുണ ഇമെയിൽ", - "eg_mail_example_com": "ഉദാ. mail@example.com", - "vendor_name": "വെണ്ടർ പേര്", - "serial_number": "സീരിയൽ നമ്പർ", - "last_serviced_on": "അവസാനം സർവീസ് ചെയ്തത്", - "create_add_more": "സൃഷ്‌ടിക്കുക, കൂടുതൽ ചേർക്കുക", - "discharged_patients": "ഡിസ്ചാർജ് ചെയ്ത രോഗികൾ", - "discharged_patients_empty": "ഡിസ്ചാർജ് ചെയ്ത രോഗികളൊന്നും ഈ സൗകര്യത്തിൽ ഇല്ല", - "update_facility_middleware_success": "ഫെസിലിറ്റി മിഡിൽവെയർ വിജയകരമായി അപ്ഡേറ്റ് ചെയ്തു", - "treatment_summary__head_title": "ചികിത്സയുടെ സംഗ്രഹം", - "treatment_summary__print": "ചികിത്സയുടെ സംഗ്രഹം അച്ചടിക്കുക", - "treatment_summary__heading": "ഇടക്കാല ചികിത്സ സംഗ്രഹം", - "patient_registration__name": "പേര്", - "patient_registration__address": "വിലാസം", - "patient_registration__age": "പ്രായം", - "patient_consultation__op": "ഒ.പി", - "patient_consultation__ip": "ഐ.പി", - "patient_consultation__dc_admission": "ഡൊമിസിലിയറി കെയർ ആരംഭിച്ച തീയതി", - "patient_consultation__admission": "പ്രവേശന തീയതി", - "patient_registration__gender": "ലിംഗഭേദം", - "patient_registration__contact": "അടിയന്തര കോൺടാക്റ്റ്", - "patient_registration__comorbidities": "കോമോർബിഡിറ്റികൾ", - "patient_registration__comorbidities__disease": "രോഗം", - "patient_registration__comorbidities__details": "വിശദാംശങ്ങൾ", - "patient_consultation__consultation_notes": "പൊതു നിർദ്ദേശങ്ങൾ", - "patient_consultation__special_instruction": "പ്രത്യേക നിർദ്ദേശങ്ങൾ", - "suggested_investigations": "നിർദ്ദേശിച്ച അന്വേഷണങ്ങൾ", - "investigations__date": "തീയതി", - "investigations__name": "പേര്", - "investigations__result": "ഫലം", - "investigations__ideal_value": "അനുയോജ്യമായ മൂല്യം", - "investigations__range": "മൂല്യ ശ്രേണി", - "investigations__unit": "യൂണിറ്റ്", - "patient_consultation__treatment__plan": "പ്ലാൻ ചെയ്യുക", - "patient_consultation__treatment__summary": "സംഗ്രഹം", - "patient_consultation__treatment__summary__date": "തീയതി", - "patient_consultation__treatment__summary__spo2": "SpO2", - "patient_consultation__treatment__summary__temperature": "താപനില", - "diagnosis__principal": "പ്രിൻസിപ്പൽ", + "cylinders": "സിലിണ്ടറുകൾ", + "cylinders_per_day": "സിലിണ്ടറുകൾ / ദിവസം", + "date_and_time": "തീയതിയും സമയവും", + "date_of_admission": "പ്രവേശന തീയതി", + "date_of_birth": "ജനനത്തീയതി", + "date_of_positive_covid_19_swab": "പോസിറ്റീവ് കോവിഡ് 19 സ്വാബ് തീയതി", + "date_of_test": "ടെസ്റ്റ് തീയതി", + "days": "ദിവസങ്ങൾ", + "delete": "ഇല്ലാതാക്കുക", + "delete_facility": "സൗകര്യം ഇല്ലാതാക്കുക", + "delete_item": "{{name}}ഇല്ലാതാക്കുക", + "delete_record": "റെക്കോർഡ് ഇല്ലാതാക്കുക", + "deleted_successfully": "{{name}} വിജയകരമായി ഇല്ലാതാക്കി", + "describe_why_the_asset_is_not_working": "അസറ്റ് പ്രവർത്തിക്കാത്തത് എന്തുകൊണ്ടെന്ന് വിവരിക്കുക", + "description": "വിവരണം", + "details_about_the_equipment": "ഉപകരണത്തെക്കുറിച്ചുള്ള വിശദാംശങ്ങൾ", + "details_of_assigned_facility": "നിയുക്ത സൗകര്യത്തിൻ്റെ വിശദാംശങ്ങൾ", + "details_of_origin_facility": "ഉറവിട സൗകര്യത്തിൻ്റെ വിശദാംശങ്ങൾ", + "details_of_patient": "രോഗിയുടെ വിശദാംശങ്ങൾ", + "details_of_shifting_approving_facility": "അംഗീകാരം നൽകുന്ന സൗകര്യം മാറ്റുന്നതിൻ്റെ വിശദാംശങ്ങൾ", + "diagnoses": "രോഗനിർണയങ്ങൾ", + "diagnosis": "രോഗനിർണയം", "diagnosis__confirmed": "സ്ഥിരീകരിച്ചു", + "diagnosis__differential": "ഡിഫറൻഷ്യൽ", + "diagnosis__principal": "പ്രിൻസിപ്പൽ", "diagnosis__provisional": "താൽക്കാലികം", "diagnosis__unconfirmed": "സ്ഥിരീകരിച്ചിട്ടില്ല", - "diagnosis__differential": "ഡിഫറൻഷ്യൽ", - "active_prescriptions": "സജീവ കുറിപ്പടികൾ", - "prescriptions__medicine": "മരുന്ന്", - "prescriptions__route": "റൂട്ട്", - "prescriptions__dosage_frequency": "അളവും ആവൃത്തിയും", - "prescriptions__start_date": "നിർദ്ദേശിച്ചിരിക്കുന്നത്", - "select_facility_for_discharged_patients_warning": "ഡിസ്ചാർജ് ചെയ്ത രോഗികളെ കാണാനുള്ള സൗകര്യം തിരഞ്ഞെടുക്കേണ്ടതുണ്ട്.", + "diagnosis_already_added": "ഈ രോഗനിർണയം ഇതിനകം ചേർത്തിട്ടുണ്ട്", + "diastolic": "ഡയസ്റ്റോളിക്", + "differential": "ഡിഫറൻഷ്യൽ", + "discard": "നിരസിക്കുക", + "discharge": "ഡിസ്ചാർജ്", + "discharge_from_care": "CARE-ൽ നിന്നുള്ള ഡിസ്ചാർജ്", + "discharge_prescription": "ഡിസ്ചാർജ് കുറിപ്പടി", + "discharge_summary": "ഡിസ്ചാർജ് സംഗ്രഹം", + "discharge_summary_not_ready": "ഡിസ്ചാർജ് സംഗ്രഹം ഇതുവരെ തയ്യാറായിട്ടില്ല.", + "discharged": "ഡിസ്ചാർജ് ചെയ്തു", + "discharged_patients": "ഡിസ്ചാർജ് ചെയ്ത രോഗികൾ", + "discharged_patients_empty": "ഡിസ്ചാർജ് ചെയ്ത രോഗികളൊന്നും ഈ സൗകര്യത്തിൽ ഇല്ല", + "disclaimer": "നിരാകരണം", + "discontinue": "നിർത്തുക", + "discontinue_caution_note": "ഈ കുറിപ്പടി നിർത്തണമെന്ന് തീർച്ചയാണോ?", + "discontinued": "നിർത്തലാക്കി", + "disease_status": "രോഗാവസ്ഥ", + "district": "ജില്ല", + "district_program_management_supporting_unit": "ജില്ലാ പ്രോഗ്രാം മാനേജ്മെൻ്റ് സപ്പോർട്ടിംഗ് യൂണിറ്റ്", + "done": "ചെയ്തു", + "dosage": "അളവ്", + "down": "താഴേക്ക്", + "download": "ഡൗൺലോഡ് ചെയ്യുക", + "download_discharge_summary": "ഡിസ്ചാർജ് സംഗ്രഹം ഡൗൺലോഡ് ചെയ്യുക", + "download_type": "ഡൗൺലോഡുകളുടെ തരം", + "downloading": "ഡൗൺലോഡ് ചെയ്യുന്നു", + "downloads": "ഡൗൺലോഡുകൾ", + "drag_drop_image_to_upload": "അപ്‌ലോഡ് ചെയ്യാൻ ചിത്രം വലിച്ചിടുക", + "duplicate_patient_record_birth_unknown": "രോഗിയുടെ ജനന വർഷത്തെക്കുറിച്ച് നിങ്ങൾക്ക് ഉറപ്പില്ലെങ്കിൽ നിങ്ങളുടെ ജില്ലാ പരിചരണ കോർഡിനേറ്റർ, ഷിഫ്റ്റിംഗ് സൗകര്യം അല്ലെങ്കിൽ രോഗിയെ ബന്ധപ്പെടുക.", "duplicate_patient_record_confirmation": "ജനന വർഷം ചേർത്ത് രോഗിയുടെ രേഖ നിങ്ങളുടെ സൗകര്യത്തിലേക്ക് പ്രവേശിപ്പിക്കുക", "duplicate_patient_record_rejection": "ഞാൻ സൃഷ്ടിക്കാൻ ആഗ്രഹിക്കുന്ന സംശയാസ്പദമായ / രോഗി ലിസ്റ്റിൽ ഇല്ലെന്ന് ഞാൻ സ്ഥിരീകരിക്കുന്നു.", - "duplicate_patient_record_birth_unknown": "രോഗിയുടെ ജനന വർഷത്തെക്കുറിച്ച് നിങ്ങൾക്ക് ഉറപ്പില്ലെങ്കിൽ നിങ്ങളുടെ ജില്ലാ പരിചരണ കോർഡിനേറ്റർ, ഷിഫ്റ്റിംഗ് സൗകര്യം അല്ലെങ്കിൽ രോഗിയെ ബന്ധപ്പെടുക.", - "patient_transfer_birth_match_note": "ശ്രദ്ധിക്കുക: ട്രാൻസ്ഫർ അഭ്യർത്ഥന പ്രോസസ്സ് ചെയ്യുന്നതിന് ജനന വർഷം രോഗിയുമായി പൊരുത്തപ്പെടണം.", - "available_features": "ലഭ്യമായ സവിശേഷതകൾ", - "update_facility": "അപ്ഡേറ്റ് സൗകര്യം", - "configure_facility": "സൗകര്യം ക്രമീകരിക്കുക", - "inventory_management": "ഇൻവെൻ്ററി മാനേജ്മെൻ്റ്", - "location_management": "ലൊക്കേഷൻ മാനേജ്മെൻ്റ്", - "resource_request": "റിസോഴ്സ് അഭ്യർത്ഥന", - "view_asset": "അസറ്റുകൾ കാണുക", - "view_users": "ഉപയോക്താക്കളെ കാണുക", - "view_abdm_records": "ABDM റെക്കോർഡുകൾ കാണുക", - "delete_facility": "സൗകര്യം ഇല്ലാതാക്കുക", - "central_nursing_station": "സെൻട്രൽ നഴ്‌സിംഗ് സ്റ്റേഷൻ", - "add_details_of_patient": "രോഗിയുടെ വിശദാംശങ്ങൾ ചേർക്കുക", - "choose_location": "ലൊക്കേഷൻ തിരഞ്ഞെടുക്കുക", - "live_monitoring": "തത്സമയ നിരീക്ഷണം", - "open_live_monitoring": "ലൈവ് മോണിറ്ററിംഗ് തുറക്കുക", - "audio__allow_permission": "സൈറ്റ് ക്രമീകരണങ്ങളിൽ ദയവായി മൈക്രോഫോൺ അനുമതി അനുവദിക്കുക", - "audio__allow_permission_helper": "നിങ്ങൾ മുമ്പ് മൈക്രോഫോൺ ആക്‌സസ് നിരസിച്ചിരിക്കാം.", - "audio__allow_permission_button": "എങ്ങനെ അനുവദിക്കണമെന്ന് അറിയാൻ ഇവിടെ ക്ലിക്ക് ചെയ്യുക", - "audio__record": "റെക്കോർഡ് ഓഡിയോ", - "audio__record_helper": "റെക്കോർഡിംഗ് ആരംഭിക്കാൻ ബട്ടൺ ക്ലിക്ക് ചെയ്യുക", - "audio__recording": "റെക്കോർഡിംഗ്", - "audio__recording_helper": "ദയവായി നിങ്ങളുടെ മൈക്രോഫോണിൽ സംസാരിക്കുക.", - "audio__recording_helper_2": "റെക്കോർഡിംഗ് നിർത്താൻ ബട്ടണിൽ ക്ലിക്ക് ചെയ്യുക.", - "audio__recorded": "ഓഡിയോ റെക്കോർഡ് ചെയ്തു", - "audio__start_again": "വീണ്ടും ആരംഭിക്കുക", + "edit": "എഡിറ്റ് ചെയ്യുക", + "edit_caution_note": "കൺസൾട്ടേഷനിൽ എഡിറ്റ് ചെയ്ത വിശദാംശങ്ങളോടൊപ്പം ഒരു പുതിയ കുറിപ്പടി ചേർക്കുകയും നിലവിലുള്ള കുറിപ്പടി നിർത്തലാക്കുകയും ചെയ്യും.", + "edit_cover_photo": "മുഖചിത്രം എഡിറ്റ് ചെയ്യുക", + "edit_history": "ചരിത്രം തിരുത്തുക", + "edit_prescriptions": "കുറിപ്പടികൾ എഡിറ്റ് ചെയ്യുക", + "edited_by": "എഡിറ്റ് ചെയ്തത്", + "edited_on": "എഡിറ്റ് ചെയ്തത്", + "eg_abc": "ഉദാ. എബിസി", + "eg_details_on_functionality_service_etc": "ഉദാ. പ്രവർത്തനം, സേവനം മുതലായവയെക്കുറിച്ചുള്ള വിശദാംശങ്ങൾ.", + "eg_mail_example_com": "ഉദാ. mail@example.com", + "eg_xyz": "ഉദാ. XYZ", + "email": "ഇമെയിൽ വിലാസം", + "email_address": "ഇമെയിൽ വിലാസം", + "email_discharge_summary_description": "ഡിസ്ചാർജ് സംഗ്രഹം ലഭിക്കുന്നതിന് നിങ്ങളുടെ സാധുവായ ഇമെയിൽ വിലാസം നൽകുക", + "email_success": "ഞങ്ങൾ ഉടൻ ഒരു ഇമെയിൽ അയയ്ക്കും. ദയവായി നിങ്ങളുടെ ഇൻബോക്സ് പരിശോധിക്കുക.", + "emergency": "അടിയന്തരാവസ്ഥ", + "emergency_contact_number": "എമർജൻസി കോൺടാക്റ്റ് നമ്പർ", + "empty_date_time": "--:-- --; ------------", + "encounter_date_field_label__A": "സൗകര്യത്തിലേക്കുള്ള പ്രവേശന തീയതിയും സമയവും", + "encounter_date_field_label__DC": "ഡൊമിസിലിയറി കെയർ ആരംഭിച്ച തീയതിയും സമയവും", + "encounter_date_field_label__DD": "കൂടിയാലോചനയുടെ തീയതിയും സമയവും", + "encounter_date_field_label__HI": "കൂടിയാലോചനയുടെ തീയതിയും സമയവും", + "encounter_date_field_label__OP": "ഔട്ട്-പേഷ്യൻ്റ് സന്ദർശന തീയതിയും സമയവും", + "encounter_date_field_label__R": "കൂടിയാലോചനയുടെ തീയതിയും സമയവും", + "encounter_duration_confirmation": "ഈ ഏറ്റുമുട്ടലിൻ്റെ ദൈർഘ്യം ഇതായിരിക്കും", + "encounter_suggestion__A": "പ്രവേശനം", + "encounter_suggestion__DC": "ഡൊമിസിലിയറി കെയർ", + "encounter_suggestion__DD": "കൂടിയാലോചന", + "encounter_suggestion__HI": "കൂടിയാലോചന", + "encounter_suggestion__OP": "ഔട്ട് പേഷ്യൻ്റ് സന്ദർശനം", + "encounter_suggestion__R": "കൂടിയാലോചന", + "encounter_suggestion_edit_disallowed": "എഡിറ്റ് കൺസൾട്ടേഷനിൽ ഈ ഓപ്ഷനിലേക്ക് മാറാൻ അനുവാദമില്ല", "enter_file_name": "ഫയലിൻ്റെ പേര് നൽകുക", - "no_files_found": "{{type}} ഫയലുകളൊന്നും കണ്ടെത്തിയില്ല", - "upload_headings__patient": "പുതിയ രോഗി ഫയൽ അപ്‌ലോഡ് ചെയ്യുക", - "upload_headings__consultation": "പുതിയ കൺസൾട്ടേഷൻ ഫയൽ അപ്‌ലോഡ് ചെയ്യുക", - "upload_headings__sample_report": "സാമ്പിൾ റിപ്പോർട്ട് അപ്‌ലോഡ് ചെയ്യുക", - "upload_headings__supporting_info": "സഹായ വിവരങ്ങൾ അപ്‌ലോഡ് ചെയ്യുക", - "file_list_headings__patient": "രോഗിയുടെ ഫയലുകൾ", - "file_list_headings__consultation": "കൺസൾട്ടേഷൻ ഫയലുകൾ", - "file_list_headings__sample_report": "സാമ്പിൾ റിപ്പോർട്ട്", - "file_list_headings__supporting_info": "സഹായ വിവരം", + "enter_valid_age": "ദയവായി പ്രാമാണികമായ വയസ്സ് നൽകുക", + "entered-in-error": "തെറ്റായി നൽകി", + "error_404": "പിശക് 404", + "error_deleting_shifting": "ഷിഫ്റ്റിംഗ് റെക്കോർഡ് ഇല്ലാതാക്കുന്നതിൽ പിശക്", + "error_while_deleting_record": "റെക്കോർഡ് ഇല്ലാതാക്കുന്നതിൽ പിശക്", + "escape": "രക്ഷപ്പെടുക", + "estimated_contact_date": "കണക്കാക്കിയ കോൺടാക്റ്റ് തീയതി", + "expected_burn_rate": "പ്രതീക്ഷിക്കുന്ന പൊള്ളൽ നിരക്ക്", + "facilities": "സൗകര്യങ്ങൾ", + "facility": "സൗകര്യം", + "facility_name": "സൗകര്യത്തിൻ്റെ പേര്", + "facility_preference": "സൗകര്യ മുൻഗണന", + "facility_search_placeholder": "ഫെസിലിറ്റി / ജില്ല പ്രകാരം തിരയുക", + "facility_type": "സൗകര്യ തരം", + "features": "ഫീച്ചറുകൾ", + "feed_is_currently_not_live": "ഫീഡ് നിലവിൽ തത്സമയമല്ല", + "feed_optimal_experience_for_apple_phones": "ഒപ്റ്റിമൽ കാണൽ അനുഭവത്തിനായി, നിങ്ങളുടെ ഉപകരണം തിരിക്കുന്നത് പരിഗണിക്കുക. നിങ്ങളുടെ ഉപകരണ ക്രമീകരണങ്ങളിൽ സ്വയമേവ തിരിയുന്നത് പ്രവർത്തനക്ഷമമാണെന്ന് ഉറപ്പാക്കുക.", + "feed_optimal_experience_for_phones": "ഒപ്റ്റിമൽ കാണൽ അനുഭവത്തിനായി, നിങ്ങളുടെ ഉപകരണം തിരിക്കുന്നത് പരിഗണിക്കുക.", + "field_required": "ഈ ഫീൽഡ് പൂരിപ്പിക്കേണ്ടതുണ്ട്", "file_error__choose_file": "അപ്‌ലോഡ് ചെയ്യാൻ ഒരു ഫയൽ തിരഞ്ഞെടുക്കുക", + "file_error__dynamic": "ഫയൽ അപ്‌ലോഡ് ചെയ്യുന്നതിൽ പിശക്: {{statusText}}", "file_error__file_name": "ഫയലിൻ്റെ പേര് നൽകുക", "file_error__file_size": "ഫയലുകളുടെ പരമാവധി വലുപ്പം 100 MB ആണ്", "file_error__file_type": "അസാധുവായ ഫയൽ തരം \".{{extension}}\" അനുവദനീയമായ തരങ്ങൾ: {{allowedExtensions}}", - "file_uploaded": "ഫയൽ അപ്‌ലോഡ് ചെയ്‌തു", - "file_error__dynamic": "ഫയൽ അപ്‌ലോഡ് ചെയ്യുന്നതിൽ പിശക്: {{statusText}}", "file_error__network": "ഫയൽ അപ്‌ലോഡ് ചെയ്യുന്നതിൽ പിശക്: നെറ്റ്‌വർക്ക് പിശക്", - "monitor": "മോണിറ്റർ", - "show_default_presets": "ഡിഫോൾട്ട് പ്രീസെറ്റുകൾ കാണിക്കുക", - "show_patient_presets": "രോഗിയുടെ പ്രീസെറ്റുകൾ കാണിക്കുക", - "moving_camera": "ചലിക്കുന്ന ക്യാമറ", + "file_list_headings__consultation": "കൺസൾട്ടേഷൻ ഫയലുകൾ", + "file_list_headings__patient": "രോഗിയുടെ ഫയലുകൾ", + "file_list_headings__sample_report": "സാമ്പിൾ റിപ്പോർട്ട്", + "file_list_headings__supporting_info": "സഹായ വിവരം", + "file_preview": "ഫയൽ പ്രിവ്യൂ", + "file_preview_not_supported": "ഈ ഫയൽ പ്രിവ്യൂ ചെയ്യാൻ കഴിയില്ല. ഇത് ഡൗൺലോഡ് ചെയ്യാൻ ശ്രമിക്കുക.", + "file_uploaded": "ഫയൽ അപ്‌ലോഡ് ചെയ്‌തു", + "filter": "ഫിൽട്ടർ ചെയ്യുക", + "filter_by": "ഇതനുസരിച്ച് ഫിൽട്ടർ ചെയ്യുക", + "filter_by_category": "വിഭാഗം അനുസരിച്ച് ഫിൽട്ടർ ചെയ്യുക", + "filters": "ഫിൽട്ടറുകൾ", + "first_name": "പേരിന്‍റെ ആദ്യഭാഗം", + "footer_body": "കേരള സർക്കാറിന്‍റെ പൂർണ്ണമായ ധാരണയോടും പിന്തുണയോടും കൂടി സർക്കാർ ശ്രമങ്ങളെ പിന്തുണയ്ക്കുന്നതിനായി നൂതന പ്രവർത്തകരുടെയും സന്നദ്ധപ്രവർത്തകരുടെയും ഒരു മൾട്ടി-ഡിസിപ്ലിനറി ടീം രൂപകൽപ്പന ചെയ്ത മാതൃകാപരമായ ഒരു ഓപ്പൺ സോഴ്‌സ് പബ്ലിക് യൂട്ടിലിറ്റിയാണ് കൊറോണ സേഫ് നെറ്റ്‌വർക്ക്.", + "forget_password": "പാസ്‌വേഡ് മറന്നോ?", + "forget_password_instruction": "നിങ്ങളുടെ യൂസർനെയിം/ഉപയോക്തൃനാമം നൽകുക. പാസ്‌വേഡ് പുന: സജ്ജമാക്കാൻ ഞങ്ങൾ ഒരു ലിങ്ക് അയയ്‌ക്കുന്നതായിരിക്കും.", + "frequency": "ആവൃത്തി", "full_screen": "പൂർണ്ണ സ്ക്രീൻ", - "feed_is_currently_not_live": "ഫീഡ് നിലവിൽ തത്സമയമല്ല", - "zoom_out": "സൂം ഔട്ട്", - "zoom_in": "സൂം ഇൻ ചെയ്യുക", - "right": "ശരിയാണ്", + "gender": "ലിംഗഭേദം", + "generate_report": "റിപ്പോർട്ട് സൃഷ്ടിക്കുക", + "generated_summary_caution": "കെയർ സിസ്റ്റത്തിൽ ക്യാപ്‌ചർ ചെയ്‌ത വിവരങ്ങൾ ഉപയോഗിച്ച് കമ്പ്യൂട്ടർ സൃഷ്‌ടിച്ച സംഗ്രഹമാണിത്.", + "generating": "സൃഷ്ടിക്കുന്നു", + "generating_discharge_summary": "ഡിസ്ചാർജ് സംഗ്രഹം സൃഷ്ടിക്കുന്നു", + "get_tests": "ടെസ്റ്റുകൾ നേടുക", + "goal": "ഡിജിറ്റൽ ടൂളുകൾ ഉപയോഗിച്ച് പൊതുജനാരോഗ്യ സേവനങ്ങളുടെ ഗുണനിലവാരവും പ്രവേശനക്ഷമതയും തുടർച്ചയായി മെച്ചപ്പെടുത്തുകയാണ് ഞങ്ങളുടെ ലക്ഷ്യം.", + "help_confirmed": "ഇത് ഒരു സ്ഥിരീകരിച്ച അവസ്ഥയായി കണക്കാക്കാൻ മതിയായ ഡയഗ്നോസ്റ്റിക് കൂടാതെ/അല്ലെങ്കിൽ ക്ലിനിക്കൽ തെളിവുകൾ ഉണ്ട്.", + "help_differential": "രോഗനിർണ്ണയ പ്രക്രിയയ്ക്കും പ്രാഥമിക ചികിത്സയ്ക്കും കൂടുതൽ മാർഗ്ഗനിർദ്ദേശം നൽകുന്നതിന് സാധ്യതയുള്ള (സാധാരണയായി പരസ്പരവിരുദ്ധമായ) രോഗനിർണയങ്ങളിൽ ഒന്ന്.", + "help_entered-in-error": "പ്രസ്‌താവന തെറ്റായി നൽകിയതിനാൽ സാധുതയില്ല.", + "help_provisional": "ഇതൊരു താൽക്കാലിക രോഗനിർണയമാണ് - ഇപ്പോഴും പരിഗണനയിലിരിക്കുന്ന ഒരു സ്ഥാനാർത്ഥി.", + "help_refuted": "തുടർന്നുള്ള ഡയഗ്നോസ്റ്റിക്, ക്ലിനിക്കൽ തെളിവുകൾ വഴി ഈ അവസ്ഥ ഒഴിവാക്കിയിട്ടുണ്ട്.", + "help_unconfirmed": "ഇത് ഒരു സ്ഥിരീകരിച്ച അവസ്ഥയായി കണക്കാക്കാൻ മതിയായ ഡയഗ്നോസ്റ്റിക് കൂടാതെ/അല്ലെങ്കിൽ ക്ലിനിക്കൽ തെളിവുകൾ ഇല്ല.", + "hide": "മറയ്ക്കുക", + "home_facility": "ഹോം സൗകര്യം", + "icd11_as_recommended": "WHO ശുപാർശ ചെയ്യുന്ന ICD-11 പ്രകാരം", + "inconsistent_dosage_units_error": "ഡോസേജ് യൂണിറ്റുകൾ ഒന്നായിരിക്കണം", + "india_1": "ഇന്ത്യ", + "indian_mobile": "ഇന്ത്യൻ മൊബൈൽ", + "indicator": "സൂചകം", + "inidcator_event": "ഇൻഡിക്കേറ്റർ ഇവൻ്റ്", + "instruction_on_titration": "ടൈറ്ററേഷനെക്കുറിച്ചുള്ള നിർദ്ദേശം", + "international_mobile": "അന്താരാഷ്ട്ര മൊബൈൽ", + "invalid_asset_id_msg": "ശ്ശോ! നിങ്ങൾ നൽകിയ അസറ്റ് ഐഡി സാധുതയുള്ളതായി കാണുന്നില്ല.", + "invalid_email": "ദയവായി പ്രാമാണികമായ ഇമെയിൽ വിലാസം നൽകുക", + "invalid_link_msg": "നിങ്ങൾ ഉപയോഗിച്ച പാസ്‌വേഡ് പുനഃസജ്ജീകരണ ലിങ്ക് അസാധുവാണ് അല്ലെങ്കിൽ കാലഹരണപ്പെട്ടതായി തോന്നുന്നു. ഒരു പുതിയ പാസ്‌വേഡ് പുനഃസജ്ജീകരണ ലിങ്ക് അഭ്യർത്ഥിക്കുക.", + "invalid_password": "പാസ്‌വേഡ് ആവശ്യകതകൾ പാലിക്കുന്നില്ല", + "invalid_password_reset_link": "അസാധുവായ പാസ്‌വേഡ് പുനഃസജ്ജീകരണ ലിങ്ക്", + "invalid_phone": "ദയവായി പ്രാമാണികമായ ഫോൺ നമ്പർ നൽകുക", + "invalid_phone_number": "അസാധുവായ ഫോൺ നമ്പർ", + "invalid_pincode": "പിൻകോഡ് അസാധുവാണ്", + "invalid_reset": "അസാധുവായ റീസെറ്റ്", + "invalid_username": "അനിവാര്യം. 150 ചിഹ്നമോ, അക്ഷരമോ, സംഖ്യയോ അതിൽ കുറവോ. അക്ഷരങ്ങൾ, അക്കങ്ങൾ, @/./+/-/_ മാത്രം ഉപയോഗിക്കുക.", + "inventory_management": "ഇൻവെൻ്ററി മാനേജ്മെൻ്റ്", + "investigation_reports": "അന്വേഷണ റിപ്പോർട്ടുകൾ", + "investigations": "അന്വേഷണങ്ങൾ", + "investigations__date": "തീയതി", + "investigations__ideal_value": "അനുയോജ്യമായ മൂല്യം", + "investigations__name": "പേര്", + "investigations__range": "മൂല്യ ശ്രേണി", + "investigations__result": "ഫലം", + "investigations__unit": "യൂണിറ്റ്", + "investigations_suggested": "അന്വേഷണങ്ങൾ നിർദ്ദേശിച്ചു", + "is": "ആണ്", + "is_antenatal": "ജനനത്തിനു മുമ്പുള്ളതാണ്", + "is_emergency": "അടിയന്തരാവസ്ഥയാണ്", + "is_emergency_case": "അടിയന്തര സാഹചര്യമാണ്", + "is_it_upshift": "അത് ഉയർച്ചയാണോ?", + "is_this_an_emergency": "ഇതൊരു അടിയന്തരാവസ്ഥയാണോ?", + "is_this_an_upshift": "ഇതൊരു ഉയർച്ചയാണോ?", + "is_up_shift": "ഷിഫ്റ്റ് ആയി", + "is_upshift_case": "കേസ് മാറ്റി", + "landline": "ഇന്ത്യൻ ലാൻഡ്‌ലൈൻ", + "last_administered": "അവസാനം ഭരിച്ചത്", + "last_edited": "അവസാനം എഡിറ്റ് ചെയ്തത്", + "last_modified": "അവസാനം പരിഷ്കരിച്ചത്", + "last_name": "പേരിന്‍റെ അവസാന ഭാഗം", + "last_online": "അവസാനമായി ഓൺലൈൻ", + "last_serviced_on": "അവസാനം സർവീസ് ചെയ്തത്", + "latitude_invalid": "അക്ഷാംശം -90 നും 90 നും ഇടയിലായിരിക്കണം", "left": "ഇടത്", - "down": "താഴേക്ക്", - "up": "മുകളിലേക്ക്", - "RESPIRATORY_SUPPORT_SHORT__UNKNOWN": "ഒന്നുമില്ല", - "RESPIRATORY_SUPPORT_SHORT__OXYGEN_SUPPORT": "O2 പിന്തുണ", - "RESPIRATORY_SUPPORT_SHORT__NON_INVASIVE": "എൻ.ഐ.വി", - "RESPIRATORY_SUPPORT_SHORT__INVASIVE": "IV", - "RESPIRATORY_SUPPORT__UNKNOWN": "ഒന്നുമില്ല", - "RESPIRATORY_SUPPORT__OXYGEN_SUPPORT": "ഓക്സിജൻ പിന്തുണ", - "RESPIRATORY_SUPPORT__NON_INVASIVE": "നോൺ-ഇൻവേസീവ് വെൻ്റിലേറ്റർ (NIV)", - "RESPIRATORY_SUPPORT__INVASIVE": "ആക്രമണാത്മക വെൻ്റിലേറ്റർ (IV)", - "VENTILATOR_MODE__CMV": "കൺട്രോൾ മെക്കാനിക്കൽ വെൻ്റിലേഷൻ (CMV)", - "VENTILATOR_MODE__VCV": "വോളിയം കൺട്രോൾ വെൻ്റിലേഷൻ (VCV)", - "VENTILATOR_MODE__PCV": "പ്രഷർ കൺട്രോൾ വെൻ്റിലേഷൻ (PCV)", - "VENTILATOR_MODE__SIMV": "സിൻക്രൊണൈസ്ഡ് ഇൻ്റർമിറ്റൻറ് നിർബന്ധിത വെൻ്റിലേഷൻ (SIMV)", - "VENTILATOR_MODE__VC_SIMV": "വോളിയം നിയന്ത്രിത SIMV (VC-SIMV)", - "VENTILATOR_MODE__PC_SIMV": "പ്രഷർ കൺട്രോൾഡ് SIMV (PC-SIMV)", - "VENTILATOR_MODE__PSV": "C-PAP / പ്രഷർ സപ്പോർട്ട് വെൻ്റിലേഷൻ (PSV)", - "CONSCIOUSNESS_LEVEL__UNRESPONSIVE": "പ്രതികരിക്കുന്നില്ല", - "CONSCIOUSNESS_LEVEL__RESPONDS_TO_PAIN": "വേദനയോട് പ്രതികരിക്കുന്നു", - "CONSCIOUSNESS_LEVEL__RESPONDS_TO_VOICE": "ശബ്ദത്തോട് പ്രതികരിക്കുന്നു", - "CONSCIOUSNESS_LEVEL__ALERT": "മുന്നറിയിപ്പ്", - "CONSCIOUSNESS_LEVEL__AGITATED_OR_CONFUSED": "അസ്വസ്ഥതയോ ആശയക്കുഴപ്പത്തിലോ", - "CONSCIOUSNESS_LEVEL__ONSET_OF_AGITATION_AND_CONFUSION": "പ്രക്ഷോഭത്തിൻ്റെയും ആശയക്കുഴപ്പത്തിൻ്റെയും തുടക്കം", - "PUPIL_REACTION__UNKNOWN": "അജ്ഞാതം", - "PUPIL_REACTION__BRISK": "ചടുലമായ", - "PUPIL_REACTION__SLUGGISH": "ആലസ്യം", - "PUPIL_REACTION__FIXED": "പരിഹരിച്ചു", - "PUPIL_REACTION__CANNOT_BE_ASSESSED": "വിലയിരുത്താൻ കഴിയില്ല", - "LIMB_RESPONSE__UNKNOWN": "അജ്ഞാതം", - "LIMB_RESPONSE__STRONG": "ശക്തമായ", - "LIMB_RESPONSE__MODERATE": "മിതത്വം", - "LIMB_RESPONSE__WEAK": "ദുർബലമായ", - "LIMB_RESPONSE__FLEXION": "ഫ്ലെക്സിഷൻ", - "LIMB_RESPONSE__EXTENSION": "വിപുലീകരണം", - "LIMB_RESPONSE__NONE": "ഒന്നുമില്ല", - "OXYGEN_MODALITY__NASAL_PRONGS": "നാസൽ പ്രോംഗ്സ്", - "OXYGEN_MODALITY__SIMPLE_FACE_MASK": "ലളിതമായ മുഖംമൂടി", - "OXYGEN_MODALITY__NON_REBREATHING_MASK": "നോൺ റീബ്രീത്തിംഗ് മാസ്ക്", - "OXYGEN_MODALITY__HIGH_FLOW_NASAL_CANNULA": "ഉയർന്ന ഒഴുക്ക് നാസൽ കാനുല", - "INSULIN_INTAKE_FREQUENCY__UNKNOWN": "അജ്ഞാതം", - "INSULIN_INTAKE_FREQUENCY__OD": "ദിവസത്തിൽ ഒരിക്കൽ (OD)", - "INSULIN_INTAKE_FREQUENCY__BD": "ദിവസത്തിൽ രണ്ടുതവണ (BD)", - "INSULIN_INTAKE_FREQUENCY__TD": "ദിവസത്തിൽ മൂന്ന് തവണ (ടിഡി)", - "NURSING_CARE_PROCEDURE__personal_hygiene": "വ്യക്തിഗത ശുചിത്വം", - "NURSING_CARE_PROCEDURE__positioning": "സ്ഥാനനിർണ്ണയം", - "NURSING_CARE_PROCEDURE__suctioning": "സക്ഷനിംഗ്", - "NURSING_CARE_PROCEDURE__ryles_tube_care": "റൈൽസ് ട്യൂബ് കെയർ", - "NURSING_CARE_PROCEDURE__iv_sitecare": "IV സൈറ്റ് കെയർ", - "NURSING_CARE_PROCEDURE__nubulisation": "നുബുലൈസേഷൻ", - "NURSING_CARE_PROCEDURE__dressing": "വസ്ത്രധാരണം", - "NURSING_CARE_PROCEDURE__dvt_pump_stocking": "ഡിവിടി പമ്പ് സ്റ്റോക്കിംഗ്", - "NURSING_CARE_PROCEDURE__restrain": "നിയന്ത്രിക്കുക", - "NURSING_CARE_PROCEDURE__chest_tube_care": "ചെസ്റ്റ് ട്യൂബ് കെയർ", - "NURSING_CARE_PROCEDURE__tracheostomy_care": "ട്രാക്കിയോസ്റ്റമി കെയർ", - "NURSING_CARE_PROCEDURE__stoma_care": "സ്റ്റോമ കെയർ", - "NURSING_CARE_PROCEDURE__catheter_care": "കത്തീറ്റർ കെയർ", - "HEARTBEAT_RHYTHM__REGULAR": "പതിവ്", - "HEARTBEAT_RHYTHM__IRREGULAR": "ക്രമരഹിതം", - "HEARTBEAT_RHYTHM__UNKNOWN": "അജ്ഞാതം", + "linked_facilities": "ബന്ധിപ്പിച്ച സൗകര്യങ്ങൾ", + "liquid_oxygen_capacity": "ദ്രാവക ഓക്സിജൻ ശേഷി", + "list_view": "ലിസ്റ്റ് കാഴ്ച", + "litres": "ലിറ്റർ", + "litres_per_day": "ലിറ്റർ / ദിവസം", + "live": "തത്സമയം", + "live_monitoring": "തത്സമയ നിരീക്ഷണം", + "load_more": "കൂടുതൽ ലോഡ് ചെയ്യുക", + "loading": "ലോഡ് ചെയ്യുന്നു...", + "local_body": "തദ്ദേശ സ്ഥാപനം", + "local_ipaddress": "പ്രാദേശിക ഐപി വിലാസം", + "location": "സ്ഥാനം", + "location_management": "ലൊക്കേഷൻ മാനേജ്മെൻ്റ്", + "log_lab_results": "ലോഗ് ലാബ് ഫലങ്ങൾ", + "log_report": "ലോഗ് റിപ്പോർട്ട്", + "login": "ലോഗിൻ ചെയ്യുക/അകത്തു പ്രവേശിക്കുക", + "longitude_invalid": "രേഖാംശം -180 നും 180 നും ഇടയിലായിരിക്കണം", + "lsg": "Lsg", + "make_multiple_beds_label": "നിങ്ങൾക്ക് ഒന്നിലധികം കിടക്കകൾ നിർമ്മിക്കണോ?", + "manage_prescriptions": "കുറിപ്പടികൾ കൈകാര്യം ചെയ്യുക", + "manufacturer": "നിർമ്മാതാവ്", "map_acronym": "മാപ്പ്", - "systolic": "സിസ്റ്റോളിക്", - "diastolic": "ഡയസ്റ്റോളിക്", - "pain": "വേദന", - "pain_chart_description": "വേദനയുടെ പ്രദേശവും തീവ്രതയും അടയാളപ്പെടുത്തുക", - "bradycardia": "ബ്രാഡികാർഡിയ", - "tachycardia": "ടാക്കിക്കാർഡിയ", - "medicine": "മരുന്ന്", - "route": "റൂട്ട്", - "dosage": "അളവ്", - "base_dosage": "അളവ്", - "start_dosage": "ഡോസ് ആരംഭിക്കുക", - "target_dosage": "ടാർഗെറ്റ് ഡോസ്", - "instruction_on_titration": "ടൈറ്ററേഷനെക്കുറിച്ചുള്ള നിർദ്ദേശം", - "titrate_dosage": "ടൈട്രേറ്റ് ഡോസ്", - "indicator": "സൂചകം", - "inidcator_event": "ഇൻഡിക്കേറ്റർ ഇവൻ്റ്", + "mark_all_as_read": "എല്ലാം വായിച്ചതായി അടയാളപ്പെടുത്തുക", + "mark_as_read": "വായിച്ചതായി അടയാളപ്പെടുത്തുക", + "mark_as_unread": "വായിക്കാത്തതായി അടയാളപ്പെടുത്തുക", + "mark_this_transfer_as_complete_question": "ഈ കൈമാറ്റം പൂർത്തിയായതായി അടയാളപ്പെടുത്തണമെന്ന് തീർച്ചയാണോ? ഒറിജിൻ സൗകര്യത്തിന് ഈ രോഗിക്ക് ഇനി ആക്‌സസ് ഉണ്ടായിരിക്കില്ല", + "mark_transfer_complete_confirmation": "ഈ കൈമാറ്റം പൂർത്തിയായതായി അടയാളപ്പെടുത്തണമെന്ന് തീർച്ചയാണോ? ഒറിജിൻ സൗകര്യത്തിന് ഈ രോഗിക്ക് ഇനി ആക്‌സസ് ഉണ്ടായിരിക്കില്ല", "max_dosage_24_hrs": "പരമാവധി. 24 മണിക്കൂറിനുള്ളിൽ ഡോസ്.", - "min_time_bw_doses": "മിനി. സമയം b/w ഡോസുകൾ", - "manage_prescriptions": "കുറിപ്പടികൾ കൈകാര്യം ചെയ്യുക", - "prescription_details": "കുറിപ്പടി വിശദാംശങ്ങൾ", - "prescription_medications": "കുറിപ്പടി മരുന്നുകൾ", - "prn_prescriptions": "PRN കുറിപ്പടികൾ", - "prescription": "കുറിപ്പടി", - "discharge_prescription": "ഡിസ്ചാർജ് കുറിപ്പടി", - "edit_prescriptions": "കുറിപ്പടികൾ എഡിറ്റ് ചെയ്യുക", - "prescription_medication": "കുറിപ്പടി മരുന്ന്", - "add_prescription_medication": "കുറിപ്പടി മരുന്ന് ചേർക്കുക", - "prn_prescription": "PRN കുറിപ്പടി", - "add_prn_prescription": "PRN കുറിപ്പടി ചേർക്കുക", - "add_prescription_to_consultation_note": "ഈ കൺസൾട്ടേഷനിലേക്ക് ഒരു പുതിയ കുറിപ്പടി ചേർക്കുക.", + "max_dosage_in_24hrs_gte_base_dosage_error": "പരമാവധി. 24 മണിക്കൂറിനുള്ളിലെ ഡോസ് അടിസ്ഥാന ഡോസേജിനേക്കാൾ കൂടുതലോ തുല്യമോ ആയിരിക്കണം", + "max_size_for_image_uploaded_should_be": "അപ്‌ലോഡ് ചെയ്‌ത ചിത്രത്തിനുള്ള പരമാവധി വലുപ്പം ആയിരിക്കണം", + "medical_worker": "മെഡിക്കൽ വർക്കർ", + "medicine": "മരുന്ന്", "medicine_administration_history": "മെഡിസിൻ അഡ്മിനിസ്ട്രേഷൻ ചരിത്രം", - "return_to_patient_dashboard": "പേഷ്യൻ്റ് ഡാഷ്‌ബോർഡിലേക്ക് മടങ്ങുക", - "administered_on": "മേൽ നടത്തി", - "administer": "ഭരണം നടത്തുക", - "administer_medicine": "മെഡിസിൻ നടത്തുക", - "administer_medicines": "മരുന്നുകൾ നൽകുക", - "administer_selected_medicines": "തിരഞ്ഞെടുത്ത മരുന്നുകൾ നൽകുക", - "select_for_administration": "അഡ്മിനിസ്ട്രേഷനായി തിരഞ്ഞെടുക്കുക", "medicines_administered": "മരുന്ന്(കൾ) നൽകി", "medicines_administered_error": "മരുന്ന്(കൾ) നൽകുന്നതിൽ പിശക്", - "prescription_discontinued": "കുറിപ്പടി നിർത്തലാക്കി", - "administration_notes": "അഡ്മിനിസ്ട്രേഷൻ കുറിപ്പുകൾ", - "last_administered": "അവസാനം ഭരിച്ചത്", - "prescription_logs": "കുറിപ്പടി രേഖകൾ", + "middleware_hostname": "മിഡിൽവെയർ ഹോസ്റ്റ്നാമം", + "min_password_len_8": "ഏറ്റവും കുറഞ്ഞ പാസ്‌വേഡ് ദൈർഘ്യം 8", + "min_time_bw_doses": "മിനി. സമയം b/w ഡോസുകൾ", + "mobile": "മൊബൈൽ", + "mobile_number": "മൊബൈൽ നമ്പർ", "modification_caution_note": "ഒരിക്കൽ ചേർത്തുകഴിഞ്ഞാൽ മാറ്റങ്ങളൊന്നും സാധ്യമല്ല", - "discontinue_caution_note": "ഈ കുറിപ്പടി നിർത്തണമെന്ന് തീർച്ചയാണോ?", - "confirm_discontinue": "നിർത്തലാക്കൽ സ്ഥിരീകരിക്കുക", - "edit_caution_note": "കൺസൾട്ടേഷനിൽ എഡിറ്റ് ചെയ്ത വിശദാംശങ്ങളോടൊപ്പം ഒരു പുതിയ കുറിപ്പടി ചേർക്കുകയും നിലവിലുള്ള കുറിപ്പടി നിർത്തലാക്കുകയും ചെയ്യും.", - "reason_for_discontinuation": "നിർത്തലാക്കാനുള്ള കാരണം", - "reason_for_edit": "തിരുത്താനുള്ള കാരണം", - "PRESCRIPTION_ROUTE_ORAL": "വാമൊഴി", - "PRESCRIPTION_ROUTE_IV": "IV", - "PRESCRIPTION_ROUTE_IM": "ഐ.എം", - "PRESCRIPTION_ROUTE_SC": "എസ്/സി", - "PRESCRIPTION_ROUTE_INHALATION": "ഇൻഹാലേഷൻ", - "PRESCRIPTION_ROUTE_NASOGASTRIC": "നാസോഗാസ്ട്രിക് / ഗ്യാസ്ട്രോസ്റ്റമി ട്യൂബ്", - "PRESCRIPTION_ROUTE_INTRATHECAL": "ഇൻട്രാതെക്കൽ കുത്തിവയ്പ്പ്", - "PRESCRIPTION_ROUTE_TRANSDERMAL": "ട്രാൻസ്ഡെർമൽ", - "PRESCRIPTION_ROUTE_RECTAL": "മലദ്വാരം", - "PRESCRIPTION_ROUTE_SUBLINGUAL": "ഉപഭാഷാപരമായ", - "PRESCRIPTION_FREQUENCY_STAT": "ഉടനെ", - "PRESCRIPTION_FREQUENCY_OD": "ദിവസത്തിൽ ഒരിക്കൽ", - "PRESCRIPTION_FREQUENCY_HS": "രാത്രി മാത്രം", - "PRESCRIPTION_FREQUENCY_BD": "ദിവസേന രണ്ടുതവണ", - "PRESCRIPTION_FREQUENCY_TID": "എട്ടാം മണിക്കൂർ", - "PRESCRIPTION_FREQUENCY_QID": "ആറാം മണിക്കൂർ", - "PRESCRIPTION_FREQUENCY_Q4H": "നാലാമത്തെ മണിക്കൂർ", - "PRESCRIPTION_FREQUENCY_QOD": "ഇതര ദിവസം", - "PRESCRIPTION_FREQUENCY_QWK": "ആഴ്ചയിൽ ഒരിക്കൽ", - "inconsistent_dosage_units_error": "ഡോസേജ് യൂണിറ്റുകൾ ഒന്നായിരിക്കണം", - "max_dosage_in_24hrs_gte_base_dosage_error": "പരമാവധി. 24 മണിക്കൂറിനുള്ളിലെ ഡോസ് അടിസ്ഥാന ഡോസേജിനേക്കാൾ കൂടുതലോ തുല്യമോ ആയിരിക്കണം", - "administration_dosage_range_error": "ഡോസ് ആരംഭത്തിനും ടാർഗെറ്റ് ഡോസേജിനും ഇടയിലായിരിക്കണം", + "modified": "പരിഷ്കരിച്ചു", + "modified_date": "പരിഷ്കരിച്ച തീയതി", + "monitor": "മോണിറ്റർ", + "more_info": "കൂടുതൽ വിവരങ്ങൾ", + "moving_camera": "ചലിക്കുന്ന ക്യാമറ", + "name": "പേര്", + "name_of_hospital": "ആശുപത്രിയുടെ പേര്", + "name_of_shifting_approving_facility": "ഷിഫ്റ്റിംഗ് അപ്രൂവിംഗ് സൗകര്യത്തിൻ്റെ പേര്", + "nationality": "ദേശീയത", + "never": "ഒരിക്കലും", + "new_password": "പുതിയ പാസ്‌വേഡ്", + "next_sessions": "അടുത്ത സെഷനുകൾ", + "no": "ഇല്ല", + "no_bed_types_found": "കിടക്ക തരങ്ങളൊന്നും കണ്ടെത്തിയില്ല", + "no_changes": "മാറ്റങ്ങളൊന്നുമില്ല", + "no_changes_made": "മാറ്റങ്ങളൊന്നും വരുത്തിയിട്ടില്ല", + "no_consultation_updates": "കൺസൾട്ടേഷൻ അപ്‌ഡേറ്റുകളൊന്നുമില്ല", + "no_cover_photo_uploaded_for_this_facility": "ഈ സൗകര്യത്തിനായി കവർ ഫോട്ടോ അപ്‌ലോഡ് ചെയ്‌തിട്ടില്ല", + "no_data_found": "വിവരങ്ങളൊന്നും കണ്ടെത്തിയില്ല", + "no_duplicate_facility": "അനധികൃതമായി ഫെസിലിറ്റികള്‍ സൃഷ്ടിക്കരുത്", + "no_facilities": "ഫെസിലിറ്റികളൊന്നും കണ്ടെത്തുവാനായില്ല", + "no_files_found": "{{type}} ഫയലുകളൊന്നും കണ്ടെത്തിയില്ല", + "no_home_facility": "വീടിനുള്ള സൗകര്യം നൽകിയിട്ടില്ല", + "no_investigation": "അന്വേഷണ റിപ്പോർട്ടുകളൊന്നും കണ്ടെത്തിയില്ല", + "no_investigation_suggestions": "അന്വേഷണ നിർദ്ദേശങ്ങളൊന്നുമില്ല", + "no_linked_facilities": "ലിങ്ക്ഡ് സൗകര്യങ്ങളൊന്നുമില്ല", + "no_log_update_delta": "മുമ്പത്തെ ലോഗ് അപ്ഡേറ്റ് മുതൽ മാറ്റങ്ങളൊന്നുമില്ല", "no_notices_for_you": "നിങ്ങൾക്കായി അറിയിപ്പുകളൊന്നുമില്ല.", - "mark_as_read": "വായിച്ചതായി അടയാളപ്പെടുത്തുക", - "mark_as_unread": "വായിക്കാത്തതായി അടയാളപ്പെടുത്തുക", - "subscribe": "സബ്സ്ക്രൈബ് ചെയ്യുക", - "subscribe_on_this_device": "ഈ ഉപകരണത്തിൽ സബ്സ്ക്രൈബ് ചെയ്യുക", + "no_patients_to_show": "കാണിക്കാൻ രോഗികളില്ല.", + "no_results_found": "ഫലങ്ങളൊന്നും കണ്ടെത്തിയില്ല", + "no_staff": "ജീവനക്കാരെ കണ്ടെത്തിയില്ല", + "no_treating_physicians_available": "ഈ സൗകര്യത്തിന് ഹോം ഫെസിലിറ്റി ഡോക്ടർമാരില്ല. ദയവായി നിങ്ങളുടെ അഡ്‌മിനെ ബന്ധപ്പെടുക.", + "no_users_found": "ഉപയോക്താക്കളെ കണ്ടെത്തിയില്ല", + "none": "ഒന്നുമില്ല", + "normal": "സാധാരണ", + "not_specified": "വ്യക്തമാക്കിയിട്ടില്ല", + "notes": "കുറിപ്പുകൾ", + "notes_placeholder": "നിങ്ങളുടെ കുറിപ്പുകൾ ടൈപ്പ് ചെയ്യുക", "notification_permission_denied": "അറിയിപ്പ് അനുമതി നിഷേധിച്ചു", "notification_permission_granted": "അറിയിപ്പ് അനുമതി നൽകി", - "show_unread_notifications": "വായിക്കാത്തത് കാണിക്കുക", - "show_all_notifications": "എല്ലാം കാണിക്കുക", - "filter_by_category": "വിഭാഗം അനുസരിച്ച് ഫിൽട്ടർ ചെയ്യുക", - "mark_all_as_read": "എല്ലാം വായിച്ചതായി അടയാളപ്പെടുത്തുക", - "reload": "വീണ്ടും ലോഡുചെയ്യുക", - "no_results_found": "ഫലങ്ങളൊന്നും കണ്ടെത്തിയില്ല", - "load_more": "കൂടുതൽ ലോഡ് ചെയ്യുക", - "subscription_error": "സബ്സ്ക്രിപ്ഷൻ പിശക്", - "unsubscribe_failed": "അൺസബ്‌സ്‌ക്രൈബ് ചെയ്യാനായില്ല.", - "unsubscribe": "അൺസബ്സ്ക്രൈബ് ചെയ്യുക", - "escape": "രക്ഷപ്പെടുക", - "invalid_asset_id_msg": "ശ്ശോ! നിങ്ങൾ നൽകിയ അസറ്റ് ഐഡി സാധുതയുള്ളതായി കാണുന്നില്ല.", - "asset_not_found_msg": "ശ്ശോ! നിങ്ങൾ അന്വേഷിക്കുന്ന അസറ്റ് നിലവിലില്ല. അസറ്റ് ഐഡി പരിശോധിക്കുക.", - "create_resource_request": "റിസോഴ്സ് അഭ്യർത്ഥന സൃഷ്ടിക്കുക", - "contact_person": "ഫെസിലിറ്റിയിൽ ബന്ധപ്പെടുന്ന വ്യക്തിയുടെ പേര്", - "approving_facility": "അംഗീകാരം നൽകുന്ന സൗകര്യത്തിൻ്റെ പേര്", - "contact_phone": "ബന്ധപ്പെടാനുള്ള വ്യക്തി നമ്പർ", + "number_of_aged_dependents_above_60": "പ്രായമായ ആശ്രിതരുടെ എണ്ണം (60-ൽ കൂടുതൽ)", + "number_of_beds": "കിടക്കകളുടെ എണ്ണം", + "number_of_beds_out_of_range_error": "കിടക്കകളുടെ എണ്ണം 100-ൽ കൂടരുത്", + "number_of_chronic_diseased_dependents": "വിട്ടുമാറാത്ത രോഗങ്ങളെ ആശ്രയിക്കുന്നവരുടെ എണ്ണം", + "on": "ഓൺ", + "ongoing_medications": "നടന്നുകൊണ്ടിരിക്കുന്ന മരുന്നുകൾ", + "open": "തുറക്കുക", + "open_camera": "ക്യാമറ തുറക്കുക", + "open_live_monitoring": "ലൈവ് മോണിറ്ററിംഗ് തുറക്കുക", + "optional": "ഓപ്ഷണൽ", + "ordering": "ഓർഡർ ചെയ്യുന്നു", + "origin_facility": "നിലവിലെ സൗകര്യം", + "oxygen_information": "ഓക്സിജൻ വിവരങ്ങൾ", + "page_not_found": "പേജ് കണ്ടെത്തിയില്ല", + "pain": "വേദന", + "pain_chart_description": "വേദനയുടെ പ്രദേശവും തീവ്രതയും അടയാളപ്പെടുത്തുക", + "passport_number": "പാസ്പോർട്ട് നമ്പർ", + "password": "പാസ്‌വേഡ്", + "password_mismatch": "പാസ്‌വേഡും ഉറപ്പാക്കിയ പാസ്‌വേഡും സമാനമായിരിക്കണം", + "password_reset_failure": "പാസ്‌വേഡ് പുന: സജ്ജീകരണം പരാജയപ്പെട്ടു", + "password_reset_success": "പാസ്‌വേഡ് പുന: സജ്ജീകരണം വിജയിച്ചു", + "password_sent": "പാസ്‌വേഡ് പുന: സജ്ജീകരണ ലിങ്ക് അയച്ചിട്ടുണ്ട്", + "patient_address": "രോഗിയുടെ വിലാസം", + "patient_category": "രോഗികളുടെ വിഭാഗം", + "patient_consultation__admission": "പ്രവേശന തീയതി", + "patient_consultation__consultation_notes": "പൊതു നിർദ്ദേശങ്ങൾ", + "patient_consultation__dc_admission": "ഡൊമിസിലിയറി കെയർ ആരംഭിച്ച തീയതി", + "patient_consultation__ip": "ഐ.പി", + "patient_consultation__op": "ഒ.പി", + "patient_consultation__special_instruction": "പ്രത്യേക നിർദ്ദേശങ്ങൾ", + "patient_consultation__treatment__plan": "പ്ലാൻ ചെയ്യുക", + "patient_consultation__treatment__summary": "സംഗ്രഹം", + "patient_consultation__treatment__summary__date": "തീയതി", + "patient_consultation__treatment__summary__spo2": "SpO2", + "patient_consultation__treatment__summary__temperature": "താപനില", + "patient_created": "രോഗിയെ സൃഷ്ടിച്ചു", + "patient_name": "രോഗിയുടെ പേര്", + "patient_no": "OP/IP നമ്പർ", + "patient_phone_number": "രോഗിയുടെ ഫോൺ നമ്പർ", + "patient_registration__address": "വിലാസം", + "patient_registration__age": "പ്രായം", + "patient_registration__comorbidities": "കോമോർബിഡിറ്റികൾ", + "patient_registration__comorbidities__details": "വിശദാംശങ്ങൾ", + "patient_registration__comorbidities__disease": "രോഗം", + "patient_registration__contact": "അടിയന്തര കോൺടാക്റ്റ്", + "patient_registration__gender": "ലിംഗഭേദം", + "patient_registration__name": "പേര്", + "patient_state": "രോഗിയുടെ അവസ്ഥ", + "patient_status": "രോഗിയുടെ അവസ്ഥ", + "patient_transfer_birth_match_note": "ശ്രദ്ധിക്കുക: ട്രാൻസ്ഫർ അഭ്യർത്ഥന പ്രോസസ്സ് ചെയ്യുന്നതിന് ജനന വർഷം രോഗിയുമായി പൊരുത്തപ്പെടണം.", + "phone": "ഫോൺ", + "phone_no": "ഫോൺ നമ്പർ.", + "phone_number": "ഫോൺ നമ്പർ", + "phone_number_at_current_facility": "നിലവിലെ സൗകര്യത്തിൽ ബന്ധപ്പെടുന്ന വ്യക്തിയുടെ ഫോൺ നമ്പർ", + "pincode": "പിൻകോഡ്", + "please_enter_a_reason_for_the_shift": "ഷിഫ്റ്റിനുള്ള കാരണം നൽകുക.", + "please_select_a_facility": "ദയവായി ഒരു സൗകര്യം തിരഞ്ഞെടുക്കുക", + "please_select_breathlessness_level": "ശ്വാസതടസ്സം നില തിരഞ്ഞെടുക്കുക", + "please_select_facility_type": "ദയവായി സൗകര്യത്തിൻ്റെ തരം തിരഞ്ഞെടുക്കുക", + "please_select_patient_category": "ദയവായി രോഗി വിഭാഗം തിരഞ്ഞെടുക്കുക", + "please_select_preferred_vehicle_type": "ദയവായി തിരഞ്ഞെടുത്ത വാഹന തരം തിരഞ്ഞെടുക്കുക", + "please_select_status": "ദയവായി സ്റ്റാറ്റസ് തിരഞ്ഞെടുക്കുക", + "please_upload_a_csv_file": "ദയവായി ഒരു CSV ഫയൽ അപ്‌ലോഡ് ചെയ്യുക", + "post_your_comment": "നിങ്ങളുടെ അഭിപ്രായം പോസ്റ്റ് ചെയ്യുക", + "powered_by": "പ്രായോജകർ", + "preferred_facility_type": "ഇഷ്ടപ്പെട്ട സൗകര്യ തരം", + "preferred_vehicle": "ഇഷ്ടപ്പെട്ട വാഹനം", + "prescription": "കുറിപ്പടി", + "prescription_details": "കുറിപ്പടി വിശദാംശങ്ങൾ", + "prescription_discontinued": "കുറിപ്പടി നിർത്തലാക്കി", + "prescription_logs": "കുറിപ്പടി രേഖകൾ", + "prescription_medication": "കുറിപ്പടി മരുന്ന്", + "prescription_medications": "കുറിപ്പടി മരുന്നുകൾ", + "prescriptions__dosage_frequency": "അളവും ആവൃത്തിയും", + "prescriptions__medicine": "മരുന്ന്", + "prescriptions__route": "റൂട്ട്", + "prescriptions__start_date": "നിർദ്ദേശിച്ചിരിക്കുന്നത്", + "prev_sessions": "മുൻ സെഷനുകൾ", + "principal": "പ്രിൻസിപ്പൽ", + "principal_diagnosis": "പ്രധാന രോഗനിർണയം", + "print": "അച്ചടിക്കുക", + "print_referral_letter": "റഫറൽ കത്ത് അച്ചടിക്കുക", + "prn_prescription": "PRN കുറിപ്പടി", + "prn_prescriptions": "PRN കുറിപ്പടികൾ", + "procedure_suggestions": "നടപടിക്രമ നിർദ്ദേശങ്ങൾ", + "provisional": "താൽക്കാലികം", + "ration_card__APL": "എ.പി.എൽ", + "ration_card__BPL": "ബി.പി.എൽ", + "ration_card__NO_CARD": "നോൺ-കാർഡ് ഹോൾഡർ", + "reason": "കാരണം", + "reason_for_discontinuation": "നിർത്തലാക്കാനുള്ള കാരണം", + "reason_for_edit": "തിരുത്താനുള്ള കാരണം", + "reason_for_referral": "റഫറൽ ചെയ്യാനുള്ള കാരണം", + "reason_for_shift": "ഷിഫ്റ്റിനുള്ള കാരണം", + "recommended_aspect_ratio_for": "ഇതിനായി ശുപാർശ ചെയ്യുന്ന വീക്ഷണ അനുപാതം", + "record": "റെക്കോർഡ് ഓഡിയോ", + "record_delete_confirm": "ഈ റെക്കോർഡ് ഇല്ലാതാക്കണമെന്ന് തീർച്ചയാണോ?", + "record_has_been_deleted_successfully": "റെക്കോർഡ് വിജയകരമായി ഇല്ലാതാക്കി.", + "record_updates": "റെക്കോർഡ് അപ്ഡേറ്റുകൾ", + "recording": "റെക്കോർഡിംഗ്", + "redirected_to_create_consultation": "ശ്രദ്ധിക്കുക: കൺസൾട്ടേഷൻ ഫോം സൃഷ്‌ടിക്കാൻ നിങ്ങളെ റീഡയറക്‌ടുചെയ്യും. കൈമാറ്റ പ്രക്രിയ പൂർത്തിയാക്കാൻ ദയവായി ഫോം പൂരിപ്പിക്കുക", + "referral_letter": "റഫറൽ കത്ത്", + "referred_to": "പരാമർശിച്ചത്", + "refresh_list": "ലിസ്റ്റ് പുതുക്കുക", + "refuted": "നിഷേധിച്ചു", + "register_hospital": "ആശുപത്രി രജിസ്റ്റർ ചെയ്യുക", + "register_page_title": "ആശുപത്രി അഡ്മിനിസ്ട്രേറ്ററായി രജിസ്റ്റർ ചെയ്യുക", + "reload": "വീണ്ടും ലോഡുചെയ്യുക", + "remove": "നീക്കം ചെയ്യുക", + "rename": "പേരുമാറ്റുക", + "report": "റിപ്പോർട്ട് ചെയ്യുക", + "req_atleast_one_digit": "കുറഞ്ഞത് ഒരു അക്കമെങ്കിലും ആവശ്യമാണ്", + "req_atleast_one_lowercase": "കുറഞ്ഞത് ഒരു ചെറിയ അക്ഷരമെങ്കിലും ആവശ്യമാണ്", + "req_atleast_one_symbol": "കുറഞ്ഞത് ഒരു ചിഹ്നമെങ്കിലും ആവശ്യമാണ്", + "req_atleast_one_uppercase": "കുറഞ്ഞത് ഒരു വലിയ കേസെങ്കിലും ആവശ്യമാണ്", + "request_description": "അഭ്യർത്ഥനയുടെ വിവരണം", + "request_description_placeholder": "നിങ്ങളുടെ വിവരണം ഇവിടെ ടൈപ്പ് ചെയ്യുക", "request_title": "പേര് അഭ്യർത്ഥിക്കുക", "request_title_placeholder": "നിങ്ങളുടെ തലക്കെട്ട് ഇവിടെ ടൈപ്പ് ചെയ്യുക", + "required": "ആവശ്യമാണ്", "required_quantity": "ആവശ്യമായ അളവ്", - "request_description": "അഭ്യർത്ഥനയുടെ വിവരണം", - "request_description_placeholder": "നിങ്ങളുടെ വിവരണം ഇവിടെ ടൈപ്പ് ചെയ്യുക", + "reset": "പുന: സജ്ജമാക്കുക ", + "reset_password": "പാസ്‌വേഡ് പുന: സജ്ജമാക്കുക", + "resource_request": "റിസോഴ്സ് അഭ്യർത്ഥന", + "result": "ഫലം", + "result_date": "ഫല തീയതി", + "result_details": "ഫലത്തിൻ്റെ വിശദാംശങ്ങൾ", + "resume": "പുനരാരംഭിക്കുക", + "retake": "വീണ്ടും എടുക്കുക", + "return_to_care": "CARE എന്ന താളിലേക്ക് മടങ്ങുക", + "return_to_login": "ലോഗിൻ എന്നതിലേക്ക് മടങ്ങുക", + "return_to_password_reset": "പാസ്‌വേഡ് പുനഃസജ്ജീകരണത്തിലേക്ക് മടങ്ങുക", + "return_to_patient_dashboard": "പേഷ്യൻ്റ് ഡാഷ്‌ബോർഡിലേക്ക് മടങ്ങുക", + "right": "ശരിയാണ്", + "route": "റൂട്ട്", + "sample_collection_date": "സാമ്പിൾ ശേഖരണ തീയതി", + "sample_format": "സാമ്പിൾ ഫോർമാറ്റ്", + "sample_type": "സാമ്പിൾ തരം", + "save": "സംരക്ഷിക്കുക", + "save_and_continue": "സംരക്ഷിച്ച് തുടരുക", + "save_investigation": "അന്വേഷണം സംരക്ഷിക്കുക", + "scan_asset_qr": "അസറ്റ് ക്യുആർ സ്കാൻ ചെയ്യുക!", + "search_by_username": "ഉപയോക്തൃനാമം ഉപയോഗിച്ച് തിരയുക", + "search_for_facility": "സൗകര്യത്തിനായി തിരയുക", + "search_icd11_placeholder": "ICD-11 രോഗനിർണയങ്ങൾക്കായി തിരയുക", + "search_investigation_placeholder": "അന്വേഷണവും ഗ്രൂപ്പുകളും", + "search_patient": "രോഗിയെ തിരയുക", "search_resource": "തിരയൽ റിസോഴ്സ്", - "emergency": "അടിയന്തരാവസ്ഥ", - "up_shift": "മുകളിലേക്ക് ഷിഫ്റ്റ്", - "antenatal": "ജനനത്തിനുമുമ്പ്", - "phone_no": "ഫോൺ നമ്പർ.", - "patient_name": "രോഗിയുടെ പേര്", - "disease_status": "രോഗാവസ്ഥ", - "breathlessness_level": "ശ്വാസതടസ്സം നില", - "assigned_facility": "സൗകര്യം ഏൽപ്പിച്ചു", - "origin_facility": "നിലവിലെ സൗകര്യം", - "shifting_approval_facility": "ഷിഫ്റ്റിംഗ് അംഗീകാര സൗകര്യം", + "select": "തിരഞ്ഞെടുക്കുക", + "select_date": "തീയതി തിരഞ്ഞെടുക്കുക", + "select_facility_for_discharged_patients_warning": "ഡിസ്ചാർജ് ചെയ്ത രോഗികളെ കാണാനുള്ള സൗകര്യം തിരഞ്ഞെടുക്കേണ്ടതുണ്ട്.", + "select_for_administration": "അഡ്മിനിസ്ട്രേഷനായി തിരഞ്ഞെടുക്കുക", + "select_groups": "ഗ്രൂപ്പുകൾ തിരഞ്ഞെടുക്കുക", + "select_investigation": "അന്വേഷണങ്ങൾ തിരഞ്ഞെടുക്കുക (എല്ലാ അന്വേഷണങ്ങളും സ്ഥിരസ്ഥിതിയായി തിരഞ്ഞെടുക്കും)", + "select_investigation_groups": "അന്വേഷണ സംഘങ്ങൾ തിരഞ്ഞെടുക്കുക", + "select_investigations": "അന്വേഷണങ്ങൾ തിരഞ്ഞെടുക്കുക", + "select_local_body": "തദ്ദേശ സ്ഥാപനം തിരഞ്ഞെടുക്കുക", + "select_skills": "കുറച്ച് കഴിവുകൾ തിരഞ്ഞെടുത്ത് ചേർക്കുക", + "select_wards": "വാർഡുകൾ തിരഞ്ഞെടുക്കുക", + "send_email": "ഇമെയിൽ അയയ്ക്കുക", + "send_reset_link": "പുന: സജ്ജീകരണ ലിങ്ക് അയയ്‌ക്കുക", + "serial_number": "സീരിയൽ നമ്പർ", + "serviced_on": "സർവീസ് ചെയ്തു", + "session_expired": "സെഷൻ കാലഹരണപ്പെട്ടു", + "session_expired_msg": "നിങ്ങളുടെ സെഷൻ കാലഹരണപ്പെട്ടതായി തോന്നുന്നു. ഇത് നിഷ്ക്രിയത്വം മൂലമാകാം. തുടരാൻ വീണ്ടും ലോഗിൻ ചെയ്യുക.", + "set_average_weekly_working_hours_for": "ഇതിനായി ശരാശരി പ്രതിവാര പ്രവൃത്തി സമയം സജ്ജമാക്കുക", + "settings_and_filters": "ക്രമീകരണങ്ങളും ഫിൽട്ടറുകളും", + "severity_of_breathlessness": "ശ്വാസതടസ്സത്തിൻ്റെ തീവ്രത", + "shift_request_updated_successfully": "ഷിഫ്റ്റ് അഭ്യർത്ഥന വിജയകരമായി അപ്ഡേറ്റ് ചെയ്തു", "shifting": "ഷിഫ്റ്റിംഗ്", - "search_patient": "രോഗിയെ തിരയുക", - "list_view": "ലിസ്റ്റ് കാഴ്ച", - "comment_min_length": "കമൻ്റിൽ കുറഞ്ഞത് 1 പ്രതീകമെങ്കിലും ഉണ്ടായിരിക്കണം", - "comment_added_successfully": "അഭിപ്രായം വിജയകരമായി ചേർത്തു", - "post_your_comment": "നിങ്ങളുടെ അഭിപ്രായം പോസ്റ്റ് ചെയ്യുക", + "shifting_approval_facility": "ഷിഫ്റ്റിംഗ് അംഗീകാര സൗകര്യം", "shifting_approving_facility": "അംഗീകാരം നൽകുന്ന സൗകര്യം മാറ്റുന്നു", - "is_emergency_case": "അടിയന്തര സാഹചര്യമാണ്", - "is_upshift_case": "കേസ് മാറ്റി", - "is_antenatal": "ജനനത്തിനു മുമ്പുള്ളതാണ്", - "patient_phone_number": "രോഗിയുടെ ഫോൺ നമ്പർ", - "created_date": "സൃഷ്ടിച്ച തീയതി", - "modified_date": "പരിഷ്കരിച്ച തീയതി", - "no_patients_to_show": "കാണിക്കാൻ രോഗികളില്ല.", - "shifting_status": "ഷിഫ്റ്റിംഗ് സ്റ്റാറ്റസ്", - "transfer_to_receiving_facility": "സ്വീകരിക്കാനുള്ള സൗകര്യത്തിലേക്ക് ട്രാൻസ്ഫർ ചെയ്യുക", - "confirm_transfer_complete": "കൈമാറ്റം പൂർത്തിയായെന്ന് സ്ഥിരീകരിക്കുക!", - "mark_transfer_complete_confirmation": "ഈ കൈമാറ്റം പൂർത്തിയായതായി അടയാളപ്പെടുത്തണമെന്ന് തീർച്ചയാണോ? ഒറിജിൻ സൗകര്യത്തിന് ഈ രോഗിക്ക് ഇനി ആക്‌സസ് ഉണ്ടായിരിക്കില്ല", - "board_view": "ബോർഡ് കാഴ്ച", + "shifting_approving_facility_can_not_be_empty": "ഷിഫ്റ്റിംഗ് അപ്രൂവിംഗ് സൗകര്യം ശൂന്യമായിരിക്കരുത്.", "shifting_deleted": "ഷിഫ്റ്റിംഗ് റെക്കോർഡ് വിജയകരമായി ഇല്ലാതാക്കി.", - "details_of_shifting_approving_facility": "അംഗീകാരം നൽകുന്ന സൗകര്യം മാറ്റുന്നതിൻ്റെ വിശദാംശങ്ങൾ", - "details_of_assigned_facility": "നിയുക്ത സൗകര്യത്തിൻ്റെ വിശദാംശങ്ങൾ", - "details_of_origin_facility": "ഉറവിട സൗകര്യത്തിൻ്റെ വിശദാംശങ്ങൾ", - "details_of_patient": "രോഗിയുടെ വിശദാംശങ്ങൾ", - "record_delete_confirm": "ഈ റെക്കോർഡ് ഇല്ലാതാക്കണമെന്ന് തീർച്ചയാണോ?", - "phone_number_at_current_facility": "നിലവിലെ സൗകര്യത്തിൽ ബന്ധപ്പെടുന്ന വ്യക്തിയുടെ ഫോൺ നമ്പർ", - "authorize_shift_delete": "ഷിഫ്റ്റ് ഇല്ലാതാക്കൽ അംഗീകരിക്കുക", - "delete_record": "റെക്കോർഡ് ഇല്ലാതാക്കുക", - "severity_of_breathlessness": "ശ്വാസതടസ്സത്തിൻ്റെ തീവ്രത", - "facility_preference": "സൗകര്യ മുൻഗണന", - "vehicle_preference": "വാഹന മുൻഗണന", - "is_up_shift": "ഷിഫ്റ്റ് ആയി", - "ambulance_driver_name": "ആംബുലൻസ് ഡ്രൈവറുടെ പേര്", - "ambulance_phone_number": "ആംബുലൻസിൻ്റെ ഫോൺ നമ്പർ", - "ambulance_number": "ആംബുലൻസ് നം", - "is_emergency": "അടിയന്തരാവസ്ഥയാണ്", - "contact_person_at_the_facility": "നിലവിലെ സൗകര്യത്തിലുള്ള വ്യക്തിയുമായി ബന്ധപ്പെടുക", - "update_status_details": "സ്റ്റാറ്റസ്/വിശദാംശങ്ങൾ അപ്ഡേറ്റ് ചെയ്യുക", "shifting_details": "വിശദാംശങ്ങൾ മാറ്റുന്നു", - "auto_generated_for_care": "പരിചരണത്തിനായി സ്വയമേവ സൃഷ്ടിച്ചത്", - "approved_by_district_covid_control_room": "ജില്ലാ കോവിഡ് കൺട്രോൾ റൂം അംഗീകരിച്ചു", - "treatment_summary": "ചികിത്സയുടെ സംഗ്രഹം", - "reason_for_referral": "റഫറൽ ചെയ്യാനുള്ള കാരണം", - "referred_to": "പരാമർശിച്ചത്", - "covid_19_cat_gov": "സർക്കാർ പ്രകാരം കോവിഡ്_19 ക്ലിനിക്കൽ വിഭാഗം. കേരള മാർഗരേഖ (എ/ബി/സി)", - "district_program_management_supporting_unit": "ജില്ലാ പ്രോഗ്രാം മാനേജ്മെൻ്റ് സപ്പോർട്ടിംഗ് യൂണിറ്റ്", - "name_of_hospital": "ആശുപത്രിയുടെ പേര്", - "passport_number": "പാസ്പോർട്ട് നമ്പർ", + "shifting_status": "ഷിഫ്റ്റിംഗ് സ്റ്റാറ്റസ്", + "show_all": "എല്ലാം കാണിക്കുക", + "show_all_notifications": "എല്ലാം കാണിക്കുക", + "show_default_presets": "ഡിഫോൾട്ട് പ്രീസെറ്റുകൾ കാണിക്കുക", + "show_patient_presets": "രോഗിയുടെ പ്രീസെറ്റുകൾ കാണിക്കുക", + "show_unread_notifications": "വായിക്കാത്തത് കാണിക്കുക", + "sign_out": "ലോഗ് ഔട്ട് ചെയ്യുക/പുറത്തിറങ്ങുക", + "something_went_wrong": "എന്തോ കുഴപ്പം സംഭവിച്ചു..!", + "something_wrong": "എന്തോ കുഴപ്പം സംഭവിച്ചു! കുറച്ചു കഴിഞ്ഞു വീണ്ടും ശ്രമിക്കുക!", + "sort_by": "ഇങ്ങനെ അടുക്കുക", + "source": "ഉറവിടം", + "srf_id": "SRF ഐഡി", + "staff_list": "സ്റ്റാഫ് ലിസ്റ്റ്", + "start_dosage": "ഡോസ് ആരംഭിക്കുക", + "state": "സംസ്ഥാനം", + "status": "നില", + "stop": "നിർത്തുക", + "stream_stop_due_to_inativity": "സജീവമല്ലാത്തതിനാൽ തത്സമയ ഫീഡ് സ്ട്രീമിംഗ് നിർത്തും", + "stream_stopped_due_to_inativity": "സജീവമല്ലാത്തതിനാൽ തത്സമയ ഫീഡ് സ്ട്രീമിംഗ് നിർത്തി", + "sub_category": "ഉപവിഭാഗം", + "submit": "സമർപ്പിക്കുക", + "submitting": "സമർപ്പിക്കുന്നു", + "subscribe": "സബ്സ്ക്രൈബ് ചെയ്യുക", + "subscribe_on_this_device": "ഈ ഉപകരണത്തിൽ സബ്സ്ക്രൈബ് ചെയ്യുക", + "subscription_error": "സബ്സ്ക്രിപ്ഷൻ പിശക്", + "suggested_investigations": "നിർദ്ദേശിച്ച അന്വേഷണങ്ങൾ", + "summary": "സംഗ്രഹം", + "support": "പിന്തുണ", + "switch": "മാറുക", + "systolic": "സിസ്റ്റോളിക്", + "tachycardia": "ടാക്കിക്കാർഡിയ", + "target_dosage": "ടാർഗെറ്റ് ഡോസ്", "test_type": "ടെസ്റ്റ് തരം", - "medical_worker": "മെഡിക്കൽ വർക്കർ", - "error_deleting_shifting": "ഷിഫ്റ്റിംഗ് റെക്കോർഡ് ഇല്ലാതാക്കുന്നതിൽ പിശക്", + "titrate_dosage": "ടൈട്രേറ്റ് ഡോസ്", + "to_be_conducted": "നടത്തേണ്ടത്", + "total_beds": "മൊത്തം കിടക്കകൾ", + "total_users": "മൊത്തം ഉപയോക്താക്കൾ", + "transfer_in_progress": "കൈമാറ്റം പുരോഗമിക്കുന്നു", + "transfer_to_receiving_facility": "സ്വീകരിക്കാനുള്ള സൗകര്യത്തിലേക്ക് ട്രാൻസ്ഫർ ചെയ്യുക", + "travel_within_last_28_days": "ആഭ്യന്തര/അന്താരാഷ്ട്ര യാത്ര (കഴിഞ്ഞ 28 ദിവസത്തിനുള്ളിൽ)", + "treating_doctor": "ചികിത്സിക്കുന്ന ഡോക്ടർ", + "treatment_summary": "ചികിത്സയുടെ സംഗ്രഹം", + "treatment_summary__head_title": "ചികിത്സയുടെ സംഗ്രഹം", + "treatment_summary__heading": "ഇടക്കാല ചികിത്സ സംഗ്രഹം", + "treatment_summary__print": "ചികിത്സയുടെ സംഗ്രഹം അച്ചടിക്കുക", + "try_again_later": "പിന്നീട് വീണ്ടും ശ്രമിക്കുക!", "type_any_extra_comments_here": "എന്തെങ്കിലും അധിക അഭിപ്രായങ്ങൾ ഇവിടെ ടൈപ്പ് ചെയ്യുക", + "type_b_cylinders": "ബി തരം സിലിണ്ടറുകൾ", + "type_c_cylinders": "സി തരം സിലിണ്ടറുകൾ", + "type_d_cylinders": "ഡി തരം സിലിണ്ടറുകൾ", + "type_to_search": "തിരയാൻ ടൈപ്പ് ചെയ്യുക", + "type_your_comment": "നിങ്ങളുടെ അഭിപ്രായം ടൈപ്പ് ചെയ്യുക", "type_your_reason_here": "നിങ്ങളുടെ കാരണം ഇവിടെ ടൈപ്പ് ചെയ്യുക", - "reason_for_shift": "ഷിഫ്റ്റിനുള്ള കാരണം", - "preferred_facility_type": "ഇഷ്ടപ്പെട്ട സൗകര്യ തരം", - "preferred_vehicle": "ഇഷ്ടപ്പെട്ട വാഹനം", - "is_it_upshift": "അത് ഉയർച്ചയാണോ?", - "is_this_an_upshift": "ഇതൊരു ഉയർച്ചയാണോ?", - "is_this_an_emergency": "ഇതൊരു അടിയന്തരാവസ്ഥയാണോ?", - "what_facility_assign_the_patient_to": "ഏത് സൗകര്യമാണ് രോഗിയെ ഏൽപ്പിക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നത്", - "name_of_shifting_approving_facility": "ഷിഫ്റ്റിംഗ് അപ്രൂവിംഗ് സൗകര്യത്തിൻ്റെ പേര്", + "unconfirmed": "സ്ഥിരീകരിച്ചിട്ടില്ല", + "unique_id": "അദ്വിതീയ ഐഡി", + "unknown": "അജ്ഞാതം", + "unsubscribe": "അൺസബ്സ്ക്രൈബ് ചെയ്യുക", + "unsubscribe_failed": "അൺസബ്‌സ്‌ക്രൈബ് ചെയ്യാനായില്ല.", + "unsupported_browser": "പിന്തുണയ്‌ക്കാത്ത ബ്രൗസർ", + "unsupported_browser_description": "നിങ്ങളുടെ ബ്രൗസർ ({{name}} പതിപ്പ് {{version}}) പിന്തുണയ്ക്കുന്നില്ല. ഏറ്റവും പുതിയ പതിപ്പിലേക്ക് നിങ്ങളുടെ ബ്രൗസർ അപ്‌ഡേറ്റ് ചെയ്യുക അല്ലെങ്കിൽ മികച്ച അനുഭവത്തിനായി പിന്തുണയ്‌ക്കുന്ന ബ്രൗസറിലേക്ക് മാറുക.", + "up": "മുകളിലേക്ക്", + "up_shift": "മുകളിലേക്ക് ഷിഫ്റ്റ്", + "update": "അപ്ഡേറ്റ്", + "update_asset": "അസറ്റ് അപ്ഡേറ്റ് ചെയ്യുക", + "update_asset_service_record": "അസറ്റ് സർവീസ് റെക്കോർഡ് അപ്ഡേറ്റ് ചെയ്യുക", + "update_bed": "കിടക്ക അപ്ഡേറ്റ് ചെയ്യുക", + "update_facility": "അപ്ഡേറ്റ് സൗകര്യം", + "update_facility_middleware_success": "ഫെസിലിറ്റി മിഡിൽവെയർ വിജയകരമായി അപ്ഡേറ്റ് ചെയ്തു", + "update_log": "അപ്ഡേറ്റ് ലോഗ്", + "update_record": "റെക്കോർഡ് അപ്ഡേറ്റ് ചെയ്യുക", + "update_record_for_asset": "അസറ്റിൻ്റെ റെക്കോർഡ് അപ്ഡേറ്റ് ചെയ്യുക", "update_shift_request": "ഷിഫ്റ്റ് അഭ്യർത്ഥന അപ്ഡേറ്റ് ചെയ്യുക", - "shift_request_updated_successfully": "ഷിഫ്റ്റ് അഭ്യർത്ഥന വിജയകരമായി അപ്ഡേറ്റ് ചെയ്തു", - "please_enter_a_reason_for_the_shift": "ഷിഫ്റ്റിനുള്ള കാരണം നൽകുക.", - "please_select_preferred_vehicle_type": "ദയവായി തിരഞ്ഞെടുത്ത വാഹന തരം തിരഞ്ഞെടുക്കുക", - "please_select_facility_type": "ദയവായി സൗകര്യത്തിൻ്റെ തരം തിരഞ്ഞെടുക്കുക", - "please_select_breathlessness_level": "ശ്വാസതടസ്സം നില തിരഞ്ഞെടുക്കുക", - "please_select_a_facility": "ദയവായി ഒരു സൗകര്യം തിരഞ്ഞെടുക്കുക", - "please_select_status": "ദയവായി സ്റ്റാറ്റസ് തിരഞ്ഞെടുക്കുക", - "please_select_patient_category": "ദയവായി രോഗി വിഭാഗം തിരഞ്ഞെടുക്കുക", - "shifting_approving_facility_can_not_be_empty": "ഷിഫ്റ്റിംഗ് അപ്രൂവിംഗ് സൗകര്യം ശൂന്യമായിരിക്കരുത്.", - "redirected_to_create_consultation": "ശ്രദ്ധിക്കുക: കൺസൾട്ടേഷൻ ഫോം സൃഷ്‌ടിക്കാൻ നിങ്ങളെ റീഡയറക്‌ടുചെയ്യും. കൈമാറ്റ പ്രക്രിയ പൂർത്തിയാക്കാൻ ദയവായി ഫോം പൂരിപ്പിക്കുക", - "mark_this_transfer_as_complete_question": "ഈ കൈമാറ്റം പൂർത്തിയായതായി അടയാളപ്പെടുത്തണമെന്ന് തീർച്ചയാണോ? ഒറിജിൻ സൗകര്യത്തിന് ഈ രോഗിക്ക് ഇനി ആക്‌സസ് ഉണ്ടായിരിക്കില്ല", - "transfer_in_progress": "കൈമാറ്റം പുരോഗമിക്കുന്നു", - "patient_state": "രോഗിയുടെ അവസ്ഥ", - "yet_to_be_decided": "ഇനിയും തീരുമാനമായിട്ടില്ല", - "awaiting_destination_approval": "ഡെസ്റ്റിനേഷൻ അനുമതിക്കായി കാത്തിരിക്കുന്നു", + "update_status_details": "സ്റ്റാറ്റസ്/വിശദാംശങ്ങൾ അപ്ഡേറ്റ് ചെയ്യുക", + "updated": "അപ്ഡേറ്റ് ചെയ്തു", + "updating": "അപ്ഡേറ്റ് ചെയ്യുന്നു", + "upload": "അപ്‌ലോഡ് ചെയ്യുക", + "upload_an_image": "ഒരു ചിത്രം അപ്‌ലോഡ് ചെയ്യുക", + "upload_headings__consultation": "പുതിയ കൺസൾട്ടേഷൻ ഫയൽ അപ്‌ലോഡ് ചെയ്യുക", + "upload_headings__patient": "പുതിയ രോഗി ഫയൽ അപ്‌ലോഡ് ചെയ്യുക", + "upload_headings__sample_report": "സാമ്പിൾ റിപ്പോർട്ട് അപ്‌ലോഡ് ചെയ്യുക", + "upload_headings__supporting_info": "സഹായ വിവരങ്ങൾ അപ്‌ലോഡ് ചെയ്യുക", + "uploading": "അപ്‌ലോഡ് ചെയ്യുന്നു", + "user_deleted_successfuly": "ഉപയോക്താവ് ഇല്ലാതാക്കി", "user_management": "ഉപയോക്തൃ മാനേജ്മെൻ്റ്", - "facilities": "സൗകര്യങ്ങൾ", - "add_new_user": "പുതിയ ഉപയോക്താവിനെ ചേർക്കുക", - "no_users_found": "ഉപയോക്താക്കളെ കണ്ടെത്തിയില്ല", - "home_facility": "ഹോം സൗകര്യം", - "no_home_facility": "വീടിനുള്ള സൗകര്യം നൽകിയിട്ടില്ല", - "clear_home_facility": "ഹോം സൗകര്യം മായ്‌ക്കുക", - "linked_facilities": "ബന്ധിപ്പിച്ച സൗകര്യങ്ങൾ", - "no_linked_facilities": "ലിങ്ക്ഡ് സൗകര്യങ്ങളൊന്നുമില്ല", - "average_weekly_working_hours": "പ്രതിവാര ശരാശരി പ്രവൃത്തി സമയം", - "set_average_weekly_working_hours_for": "ഇതിനായി ശരാശരി പ്രതിവാര പ്രവൃത്തി സമയം സജ്ജമാക്കുക", - "search_by_username": "ഉപയോക്തൃനാമം ഉപയോഗിച്ച് തിരയുക", - "last_online": "അവസാനമായി ഓൺലൈൻ", - "total_users": "മൊത്തം ഉപയോക്താക്കൾ" -} \ No newline at end of file + "username": "യൂസർനെയിം/ഉപയോക്തൃനാമം", + "users": "ഉപയോക്താക്കൾ", + "vehicle_preference": "വാഹന മുൻഗണന", + "vendor_name": "വെണ്ടർ പേര്", + "view": "കാണുക", + "view_abdm_records": "ABDM റെക്കോർഡുകൾ കാണുക", + "view_asset": "അസറ്റുകൾ കാണുക", + "view_details": "വിശദാംശങ്ങൾ കാണുക", + "view_faciliy": "സൗകര്യം കാണുക", + "view_patients": "രോഗികളെ കാണുക", + "view_users": "ഉപയോക്താക്കളെ കാണുക", + "virtual_nursing_assistant": "വെർച്വൽ നഴ്സിംഗ് അസിസ്റ്റൻ്റ്", + "ward": "വാർഡ്", + "warranty_amc_expiry": "വാറൻ്റി / AMC കാലഹരണപ്പെടുന്നു", + "what_facility_assign_the_patient_to": "ഏത് സൗകര്യമാണ് രോഗിയെ ഏൽപ്പിക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നത്", + "why_the_asset_is_not_working": "എന്തുകൊണ്ടാണ് അസറ്റ് പ്രവർത്തിക്കാത്തത്?", + "working_status": "പ്രവർത്തന നില", + "yes": "അതെ", + "yet_to_be_decided": "ഇനിയും തീരുമാനമായിട്ടില്ല", + "you_need_at_least_a_location_to_create_an_assest": "ഒരു അസസ്‌റ്റ് സൃഷ്‌ടിക്കാൻ നിങ്ങൾക്ക് ഒരു ലൊക്കേഷനെങ്കിലും ആവശ്യമാണ്.", + "zoom_in": "സൂം ഇൻ ചെയ്യുക", + "zoom_out": "സൂം ഔട്ട്" +} diff --git a/src/Locale/mr.json b/src/Locale/mr.json index 180e7df8391..06e9c5bbbde 100644 --- a/src/Locale/mr.json +++ b/src/Locale/mr.json @@ -1,66 +1,66 @@ { - "username": "युजरनेम", - "password": "पासवर्ड", - "new_password": "नवीन पासवर्ड", - "confirm_password": "पासवर्डची खात्री करा", - "first_name": "नाव", - "last_name": "आडनाव", - "email": "ई-मेल पत्ता", - "phone_number": "दूरध्वनी क्रमांक", - "district": "जिल्हा", - "gender": "लिंग", - "age": "वय", - "login": "लॉगिन", - "field_required": "हे भरणे आवश्यक आहे", - "password_mismatch": "\"पासवर्ड\" आणि \"पासवर्डची खात्री करा\" दोन्ही सारखे हवेत.", - "enter_valid_age": "वैध वय प्रविष्ट करा", - "invalid_username": "आवश्यक. १५० अक्षरे किंवा त्याहून कमी. फक्त अक्षरे, अंक आणि @/./+/-/_", - "invalid_password": "पासवर्डसाठी आवश्यक बाबी नाहीत", - "invalid_email": "वैध ईमेल पत्ता प्रविष्ट करा.", - "invalid_phone": "वैध दूरध्वनी क्रमांक प्रविष्ट करा.", - "register_hospital": "हॉस्पिटलचे नाव नोंदवा", - "register_page_title": "हॉस्पिटल व्यवस्थापक म्हणून नोंदणी करा", - "auth_login_title": "अधिकृत लॉगिन", - "back_to_login": "लॉगिन पृष्ठावर परत या", - "available_in": "उपलब्ध भाषा", - "forget_password": "पासवर्ड विसरलात?", - "forget_password_instruction": "युजरनेम प्रविष्ट करा आणि आम्ही तुम्हाला पासवर्ड रीसेट करण्यासाठी एक लिंक पाठवू.", - "send_reset_link": "रीसेट लिंक पाठवा", - "already_a_member": "आधीपासून सदस्य आहात?", - "password_sent": "पासवर्ड रिसेट झाला इमेल पाठवला", - "password_reset_success": "पासवर्ड यशस्वीपणे रिसेट झाला", - "password_reset_failure": "पासवर्ड रिसेट झाला नाही", - "reset_password": "रिसेट पासवर्ड", - "sign_out": "साइन आउट", - "goal": "डिजिटल साधनांचा वापर करून सार्वजनिक आरोग्य सेवांची गुणवत्ता आणि सुलभता सतत सुधारणे हे आमचे ध्येय आहे.", - "something_wrong": "काहीतरी चूक झाली! पुन्हा प्रयत्न करा", - "contribute_github": "Github वर योगदान द्या", - "footer_body": "कोरोनासेफ नेटवर्क ही एक मुक्त-स्त्रोत सार्वजनिक सुविधा आहे जी केरळ सरकारच्या पूर्ण मदतीने आणि समर्थनासह सरकारच्या प्रयत्नांना पाठिंबा देण्यासाठी मॉडेलवर काम करणारे नवीन-स्वयंसेवक आणि स्वयंसेवकांच्या एकाधिक-शिस्तबद्ध टीमद्वारे डिझाइन केलेले आहे.", - "reset": "रीसेट करा", - "downloads": "डाउनलोड", - "download_type": "डाउनलोड प्रकार", - "State": "राज्य", + "Assets": "मालमत्ता", + "Dashboard": "डॅशबोर्ड", "District": "जिल्हा", + "Facilities": "हॉस्पिटल", + "Facility Type": "हॉस्पिटल प्रकार", + "KASP Empanelled": "KASP समिती ", "Local Body": "स्थानिक संस्था", "Location": "स्थान", - "Ward": "वॉर्ड", "Notice Board": "सूचना फलक", - "Assets": "मालमत्ता", "Notifications": "अधिसूचना", - "Facilities": "हॉस्पिटल", "Patients": "रुग्ण", + "Profile": "प्रोफाइल", + "Resource": "संसाधन", "Sample Test": "नमुना तपासणी ", "Shifting": "शिफ्टिंग", - "Resource": "संसाधन", + "State": "राज्य", "Users": "युजर्स", - "Profile": "प्रोफाइल", - "Dashboard": "डॅशबोर्ड", - "facility_search_placeholder": "हॉस्पिटल / जिल्हा यानुसार शोध घ्या", - "advanced_filters": "अद्ययावत फिल्टर ", - "Facility Type": "हॉस्पिटल प्रकार", - "KASP Empanelled": "KASP समिती ", "View Facility": "हॉस्पिटल पाहा", + "Ward": "वॉर्ड", + "advanced_filters": "अद्ययावत फिल्टर ", + "age": "वय", + "already_a_member": "आधीपासून सदस्य आहात?", + "auth_login_title": "अधिकृत लॉगिन", + "available_in": "उपलब्ध भाषा", + "back_to_login": "लॉगिन पृष्ठावर परत या", + "confirm_password": "पासवर्डची खात्री करा", + "contribute_github": "Github वर योगदान द्या", + "create_facility": "नवीन हॉस्पिटल सुविधा निर्माण करा", + "district": "जिल्हा", + "download_type": "डाउनलोड प्रकार", + "downloads": "डाउनलोड", + "email": "ई-मेल पत्ता", + "enter_valid_age": "वैध वय प्रविष्ट करा", + "facility_search_placeholder": "हॉस्पिटल / जिल्हा यानुसार शोध घ्या", + "field_required": "हे भरणे आवश्यक आहे", + "first_name": "नाव", + "footer_body": "कोरोनासेफ नेटवर्क ही एक मुक्त-स्त्रोत सार्वजनिक सुविधा आहे जी केरळ सरकारच्या पूर्ण मदतीने आणि समर्थनासह सरकारच्या प्रयत्नांना पाठिंबा देण्यासाठी मॉडेलवर काम करणारे नवीन-स्वयंसेवक आणि स्वयंसेवकांच्या एकाधिक-शिस्तबद्ध टीमद्वारे डिझाइन केलेले आहे.", + "forget_password": "पासवर्ड विसरलात?", + "forget_password_instruction": "युजरनेम प्रविष्ट करा आणि आम्ही तुम्हाला पासवर्ड रीसेट करण्यासाठी एक लिंक पाठवू.", + "gender": "लिंग", + "goal": "डिजिटल साधनांचा वापर करून सार्वजनिक आरोग्य सेवांची गुणवत्ता आणि सुलभता सतत सुधारणे हे आमचे ध्येय आहे.", + "invalid_email": "वैध ईमेल पत्ता प्रविष्ट करा.", + "invalid_password": "पासवर्डसाठी आवश्यक बाबी नाहीत", + "invalid_phone": "वैध दूरध्वनी क्रमांक प्रविष्ट करा.", + "invalid_username": "आवश्यक. १५० अक्षरे किंवा त्याहून कमी. फक्त अक्षरे, अंक आणि @/./+/-/_", + "last_name": "आडनाव", + "login": "लॉगिन", + "new_password": "नवीन पासवर्ड", "no_duplicate_facility": "बनावट हॉस्पिटल सुविधा मुळीच तयार करू नका", "no_facilities": "कोणतेही हॉस्पिटल नाही", - "create_facility": "नवीन हॉस्पिटल सुविधा निर्माण करा" -} \ No newline at end of file + "password": "पासवर्ड", + "password_mismatch": "\"पासवर्ड\" आणि \"पासवर्डची खात्री करा\" दोन्ही सारखे हवेत.", + "password_reset_failure": "पासवर्ड रिसेट झाला नाही", + "password_reset_success": "पासवर्ड यशस्वीपणे रिसेट झाला", + "password_sent": "पासवर्ड रिसेट झाला इमेल पाठवला", + "phone_number": "दूरध्वनी क्रमांक", + "register_hospital": "हॉस्पिटलचे नाव नोंदवा", + "register_page_title": "हॉस्पिटल व्यवस्थापक म्हणून नोंदणी करा", + "reset": "रीसेट करा", + "reset_password": "रिसेट पासवर्ड", + "send_reset_link": "रीसेट लिंक पाठवा", + "sign_out": "साइन आउट", + "something_wrong": "काहीतरी चूक झाली! पुन्हा प्रयत्न करा", + "username": "युजरनेम" +} diff --git a/src/Locale/ta.json b/src/Locale/ta.json index cb2eb506bc2..1fbf82c29aa 100644 --- a/src/Locale/ta.json +++ b/src/Locale/ta.json @@ -1,813 +1,813 @@ { - "create_asset": "சொத்தை உருவாக்கவும்", - "edit_history": "வரலாற்றைத் திருத்தவும்", - "update_record_for_asset": "சொத்துக்கான பதிவைப் புதுப்பிக்கவும்", - "edited_on": "அன்று திருத்தப்பட்டது", - "edited_by": "திருத்தியது", - "serviced_on": "சேவை செய்யப்பட்டது", - "notes": "குறிப்புகள்", - "back": "மீண்டும்", - "close": "மூடு", - "update_asset_service_record": "சொத்து சேவை பதிவை புதுப்பிக்கவும்", - "eg_details_on_functionality_service_etc": "எ.கா. செயல்பாடு, சேவை போன்றவை பற்றிய விவரங்கள்.", - "updating": "புதுப்பிக்கிறது", - "update": "புதுப்பிக்கவும்", - "are_you_still_watching": "நீங்கள் இன்னும் பார்க்கிறீர்களா?", - "stream_stop_due_to_inativity": "லைவ் ஃபீட் செயல்படாததால் ஸ்ட்ரீமிங் நிறுத்தப்படும்", - "stream_stopped_due_to_inativity": "லைவ் ஃபீட் செயல்படாததால் ஸ்ட்ரீமிங் நிறுத்தப்பட்டது", - "continue_watching": "தொடர்ந்து பார்க்கவும்", - "resume": "ரெஸ்யூம்", - "username": "பயனர்பெயர்", - "password": "கடவுச்சொல்", - "new_password": "புதிய கடவுச்சொல்", - "confirm_password": "கடவுச்சொல்லை உறுதிப்படுத்தவும்", - "first_name": "முதல் பெயர்", - "last_name": "கடைசி பெயர்", - "email": "மின்னஞ்சல் முகவரி", - "phone_number": "தொலைபேசி எண்", - "district": "மாவட்டம்", - "gender": "பாலினம்", - "age": "வயது", - "login": "உள்நுழைய", - "password_mismatch": "கடவுச்சொல் பொருந்தவில்லை", - "enter_valid_age": "செல்லுபடியாகும் வயதை உள்ளிடவும்", - "invalid_username": "தேவை. 150 எழுத்துக்கள் அல்லது குறைவானவை. எழுத்துக்கள், எண்கள் மற்றும் @ /. / + / - / _ மட்டும்.", - "invalid_password": "கடவுச்சொல் தேவைகளை பூர்த்தி செய்யவில்லை", - "invalid_email": "செல்லுபடியாகும் மின்னஞ்சல் முகவரியை உள்ளிடவும்", - "invalid_phone": "செல்லுபடியாகும் தொலைபேசி எண்ணை உள்ளிடவும்", - "register_hospital": "மருத்துவமனை பதிவு", - "register_page_title": "மருத்துவமனை நிர்வாகியாக பதிவு செய்யுங்கள்", - "auth_login_title": "அங்கீகரிக்கப்பட்ட உள்நுழைவு", - "forget_password": "கடவுச்சொல்லை மறந்துவிட்டீர்களா?", - "forget_password_instruction": "உங்கள் பயனர்பெயரை உள்ளிடவும், உங்கள் கடவுச்சொல்லை மீட்டமைக்க ஒரு இணைப்பை நாங்கள் உங்களுக்கு அனுப்புவோம்.", - "send_reset_link": "மீட்டமை இணைப்பை அனுப்பவும்", - "already_a_member": "ஏற்கனவே உறுப்பினரா?", - "password_sent": "கடவுச்சொல் மீட்டமை மின்னஞ்சல் அனுப்பப்பட்டது!", - "password_reset_success": "கடவுச்சொல் வெற்றிகரமாக மீட்டமைக்கப்பட்டது!", - "password_reset_failure": "கடவுச்சொல் மீட்டமைப்பு தோல்வியுற்றது!", - "reset_password": "கடவுச்சொல்லை மீட்டமை", - "available_in": "கிடைக்கும் மொழிகள்", - "sign_out": "வெளியேறு", - "back_to_login": "உள்நுழைவு பக்கத்திற்குத் திரும்பு", - "min_password_len_8": "குறைந்தபட்ச கடவுச்சொல் நீளம் 8", - "req_atleast_one_digit": "குறைந்தது ஒரு இலக்கமாவது தேவை", - "req_atleast_one_uppercase": "குறைந்தபட்சம் ஒரு பெரிய வழக்கு தேவை", - "req_atleast_one_lowercase": "குறைந்தபட்சம் ஒரு சிறிய எழுத்து தேவை", - "req_atleast_one_symbol": "குறைந்தது ஒரு சின்னம் தேவை", - "bed_search_placeholder": "படுக்கைகளின் பெயரைக் கொண்டு தேடுங்கள்", + "404_message": "இல்லாத அல்லது வேறொரு URLக்கு நகர்த்தப்பட்ட ஒரு பக்கத்தில் நீங்கள் தடுமாறிவிட்டதாகத் தெரிகிறது. நீங்கள் சரியான இணைப்பை உள்ளிட்டுள்ளீர்கள் என்பதை உறுதிப்படுத்தவும்!", + "AUTOMATED": "தானியங்கி", + "Assets": "சொத்துக்கள்", "BED_WITH_OXYGEN_SUPPORT": "ஆக்ஸிஜன் ஆதரவுடன் படுக்கை", - "REGULAR": "வழக்கமான", + "CONSCIOUSNESS_LEVEL__AGITATED_OR_CONFUSED": "கலக்கம் அல்லது குழப்பம்", + "CONSCIOUSNESS_LEVEL__ALERT": "எச்சரிக்கை", + "CONSCIOUSNESS_LEVEL__ONSET_OF_AGITATION_AND_CONFUSION": "கிளர்ச்சி மற்றும் குழப்பத்தின் ஆரம்பம்", + "CONSCIOUSNESS_LEVEL__RESPONDS_TO_PAIN": "வலிக்கு பதிலளிக்கிறது", + "CONSCIOUSNESS_LEVEL__RESPONDS_TO_VOICE": "குரலுக்கு பதிலளிக்கிறது", + "CONSCIOUSNESS_LEVEL__UNRESPONSIVE": "பதிலளிக்காதது", + "Cancel": "ரத்து செய்", + "DD/MM/YYYY": "DD/MM/YYYY", + "DOCTORS_LOG": "முன்னேற்றக் குறிப்பு", + "Dashboard": "டாஷ்போர்டு", + "Facilities": "வசதிகள்", + "GENDER__1": "ஆண்", + "GENDER__2": "பெண்", + "GENDER__3": "பைனரி அல்லாத", + "HEARTBEAT_RHYTHM__IRREGULAR": "ஒழுங்கற்ற", + "HEARTBEAT_RHYTHM__REGULAR": "வழக்கமான", + "HEARTBEAT_RHYTHM__UNKNOWN": "தெரியவில்லை", "ICU": "ஐசியூ", + "INSULIN_INTAKE_FREQUENCY__BD": "ஒரு நாளைக்கு இரண்டு முறை (BD)", + "INSULIN_INTAKE_FREQUENCY__OD": "ஒரு நாளைக்கு ஒரு முறை (OD)", + "INSULIN_INTAKE_FREQUENCY__TD": "ஒரு நாளைக்கு மூன்று முறை (டிடி)", + "INSULIN_INTAKE_FREQUENCY__UNKNOWN": "தெரியவில்லை", "ISOLATION": "தனிமைப்படுத்துதல்", - "add_beds": "படுக்கைகளைச் சேர்", - "update_bed": "படுக்கையைப் புதுப்பிக்கவும்", - "bed_type": "படுக்கை வகை", - "make_multiple_beds_label": "நீங்கள் பல படுக்கைகளை உருவாக்க விரும்புகிறீர்களா?", - "number_of_beds": "படுக்கைகளின் எண்ணிக்கை", - "number_of_beds_out_of_range_error": "படுக்கைகளின் எண்ணிக்கை 100க்கு மேல் இருக்கக்கூடாது", - "goal": "டிஜிட்டல் கருவிகளைப் பயன்படுத்தி பொது சுகாதார சேவைகளின் தரம் மற்றும் அணுகல்தன்மையை தொடர்ந்து மேம்படுத்துவதே எங்கள் குறிக்கோள்.", - "something_wrong": "ஏதோ தவறு நடந்துவிட்டது! பின்னர் மீண்டும் முயற்சிக்கவும்!", - "try_again_later": "பிறகு முயற்சிக்கவும்!", - "contribute_github": "Github-ல் பங்களிப்பு செய்யுங்கள்", - "footer_body": "கொரோனா சேஃப் நெட்வொர்க் என்பது ஒரு திறந்த மூல பொது பயன்பாடாகும், இது கேரள அரசாங்கத்தின் முழு புரிதலுடனும் ஆதரவிற்கும் அரசாங்க முயற்சிகளை ஆதரிக்க ஒரு மாதிரியில் பணிபுரியும் புதுமைப்பித்தர்கள் மற்றும் தன்னார்வலர்களின் பல ஒழுக்கக் குழுவால் வடிவமைக்கப்பட்டுள்ளது.", - "reset": "மீட்டமை", - "download": "பதிவிறக்கவும்", - "downloads": "பதிவிறக்கங்கள்", - "downloading": "பதிவிறக்குகிறது", - "generating": "உருவாக்குகிறது", - "send_email": "மின்னஞ்சல் அனுப்பவும்", - "email_address": "மின்னஞ்சல் முகவரி", - "email_success": "விரைவில் மின்னஞ்சல் அனுப்புவோம். உங்கள் இன்பாக்ஸை சரிபார்க்கவும்.", - "disclaimer": "மறுப்பு", - "category": "வகை", - "sub_category": "துணை வகை", - "download_type": "பதிவிறக்க வகை", - "state": "மாநிலம்", - "location": "இடம்", - "ward": "வார்டு", + "KASP Empanelled": "KASP சேர்ந்தார்", + "LIMB_RESPONSE__EXTENSION": "நீட்டிப்பு", + "LIMB_RESPONSE__FLEXION": "நெகிழ்வு", + "LIMB_RESPONSE__MODERATE": "மிதமான", + "LIMB_RESPONSE__NONE": "இல்லை", + "LIMB_RESPONSE__STRONG": "வலுவான", + "LIMB_RESPONSE__UNKNOWN": "தெரியவில்லை", + "LIMB_RESPONSE__WEAK": "பலவீனமான", + "NORMAL": "சுருக்கமான புதுப்பிப்பு", + "NURSING_CARE_PROCEDURE__catheter_care": "வடிகுழாய் பராமரிப்பு", + "NURSING_CARE_PROCEDURE__chest_tube_care": "மார்பு குழாய் பராமரிப்பு", + "NURSING_CARE_PROCEDURE__dressing": "ஆடை அணிதல்", + "NURSING_CARE_PROCEDURE__dvt_pump_stocking": "DVT பம்ப் ஸ்டாக்கிங்", + "NURSING_CARE_PROCEDURE__iv_sitecare": "IV தள பராமரிப்பு", + "NURSING_CARE_PROCEDURE__nubulisation": "நுபுலைசேஷன்", + "NURSING_CARE_PROCEDURE__personal_hygiene": "தனிப்பட்ட சுகாதாரம்", + "NURSING_CARE_PROCEDURE__positioning": "நிலைப்படுத்துதல்", + "NURSING_CARE_PROCEDURE__restrain": "கட்டுப்படுத்து", + "NURSING_CARE_PROCEDURE__ryles_tube_care": "ரைல்ஸ் குழாய் பராமரிப்பு", + "NURSING_CARE_PROCEDURE__stoma_care": "ஸ்டோமா கேர்", + "NURSING_CARE_PROCEDURE__suctioning": "உறிஞ்சும்", + "NURSING_CARE_PROCEDURE__tracheostomy_care": "டிரக்கியோஸ்டமி பராமரிப்பு", "Notice Board": "அறிவிப்பு பலகை", - "Assets": "சொத்துக்கள்", "Notifications": "அறிவிப்புகள்", + "OXYGEN_MODALITY__HIGH_FLOW_NASAL_CANNULA": "அதிக ஓட்டம் நாசி கேனுலா", + "OXYGEN_MODALITY__NASAL_PRONGS": "நாசி முனைகள்", + "OXYGEN_MODALITY__NON_REBREATHING_MASK": "சுவாசிக்காத முகமூடி", + "OXYGEN_MODALITY__SIMPLE_FACE_MASK": "எளிய முகமூடி", + "PRESCRIPTION_FREQUENCY_BD": "தினமும் இருமுறை", + "PRESCRIPTION_FREQUENCY_HS": "இரவு மட்டும்", + "PRESCRIPTION_FREQUENCY_OD": "தினமும் ஒருமுறை", + "PRESCRIPTION_FREQUENCY_Q4H": "4 வது மணிநேரம்", + "PRESCRIPTION_FREQUENCY_QID": "6 வது மணிநேரம்", + "PRESCRIPTION_FREQUENCY_QOD": "மாற்று நாள்", + "PRESCRIPTION_FREQUENCY_QWK": "வாரம் ஒருமுறை", + "PRESCRIPTION_FREQUENCY_STAT": "உடனடியாக", + "PRESCRIPTION_FREQUENCY_TID": "8வது மணிநேரம்", + "PRESCRIPTION_ROUTE_IM": "ஐ.எம்", + "PRESCRIPTION_ROUTE_INHALATION": "உள்ளிழுத்தல்", + "PRESCRIPTION_ROUTE_INTRATHECAL": "உள்நோக்கி ஊசி", + "PRESCRIPTION_ROUTE_IV": "IV", + "PRESCRIPTION_ROUTE_NASOGASTRIC": "நாசோகாஸ்ட்ரிக் / காஸ்ட்ரோஸ்டமி குழாய்", + "PRESCRIPTION_ROUTE_ORAL": "வாய்வழி", + "PRESCRIPTION_ROUTE_RECTAL": "மலக்குடல்", + "PRESCRIPTION_ROUTE_SC": "எஸ்/சி", + "PRESCRIPTION_ROUTE_SUBLINGUAL": "சப்ளிங்குவல்", + "PRESCRIPTION_ROUTE_TRANSDERMAL": "டிரான்ஸ்டெர்மல்", + "PUPIL_REACTION__BRISK": "சுறுசுறுப்பான", + "PUPIL_REACTION__CANNOT_BE_ASSESSED": "மதிப்பிட முடியாது", + "PUPIL_REACTION__FIXED": "சரி செய்யப்பட்டது", + "PUPIL_REACTION__SLUGGISH": "மந்தமான", + "PUPIL_REACTION__UNKNOWN": "தெரியவில்லை", + "Patients": "நோயாளிகள்", + "Profile": "சுயவிவரம்", + "REGULAR": "வழக்கமான", + "RESPIRATORY_SUPPORT_SHORT__INVASIVE": "IV", + "RESPIRATORY_SUPPORT_SHORT__NON_INVASIVE": "என்.ஐ.வி", + "RESPIRATORY_SUPPORT_SHORT__OXYGEN_SUPPORT": "O2 ஆதரவு", + "RESPIRATORY_SUPPORT_SHORT__UNKNOWN": "இல்லை", + "RESPIRATORY_SUPPORT__INVASIVE": "ஊடுருவும் காற்றோட்டம் (IV)", + "RESPIRATORY_SUPPORT__NON_INVASIVE": "ஆக்கிரமிப்பு அல்லாத வென்டிலேட்டர் (NIV)", + "RESPIRATORY_SUPPORT__OXYGEN_SUPPORT": "ஆக்ஸிஜன் ஆதரவு", + "RESPIRATORY_SUPPORT__UNKNOWN": "இல்லை", + "Resource": "வளம்", + "SORT_OPTIONS__-bed__name": "படுக்கை எண். N-1", + "SORT_OPTIONS__-category_severity": "அதிக தீவிரத்தன்மை பிரிவு முதலில்", + "SORT_OPTIONS__-created_date": "புதிதாக உருவாக்கப்பட்ட தேதி முதலில்", + "SORT_OPTIONS__-modified_date": "முதலில் புதுப்பிக்கப்பட்ட தேதி", + "SORT_OPTIONS__-name": "நோயாளியின் பெயர் ZA", + "SORT_OPTIONS__-review_time": "சமீபத்திய மதிப்பாய்வு தேதி முதலில்", + "SORT_OPTIONS__-taken_at": "சமீபத்தில் எடுக்கப்பட்ட தேதி முதலில்", + "SORT_OPTIONS__bed__name": "படுக்கை எண் 1-N", + "SORT_OPTIONS__category_severity": "குறைந்த தீவிரத்தன்மை வகை முதலில்", + "SORT_OPTIONS__created_date": "பழைய உருவாக்கப்பட்ட தேதி முதலில்", + "SORT_OPTIONS__facility__name,-last_consultation__current_bed__bed__name": "படுக்கை எண். N-1", + "SORT_OPTIONS__facility__name,last_consultation__current_bed__bed__name": "படுக்கை எண் 1-N", + "SORT_OPTIONS__modified_date": "பழைய புதுப்பிக்கப்பட்ட தேதி முதலில்", + "SORT_OPTIONS__name": "நோயாளியின் பெயர் AZ", + "SORT_OPTIONS__review_time": "பழைய மதிப்பாய்வு தேதி முதலில்", + "SORT_OPTIONS__taken_at": "முதலில் எடுக்கப்பட்ட பழைய தேதி", + "Sample Test": "மாதிரி சோதனை", + "Shifting": "மாற்றுதல்", "Submit": "சமர்ப்பிக்கவும்", - "Cancel": "ரத்து செய்", - "powered_by": "மூலம் இயக்கப்படுகிறது", - "care": "கவனிப்பு", - "something_went_wrong": "ஏதோ தவறாகிவிட்டது..!", - "stop": "நிறுத்து", - "record": "ஆடியோ பதிவு", - "recording": "பதிவு செய்தல்", - "yes": "ஆம்", - "no": "இல்லை", - "status": "நிலை", - "created": "உருவாக்கப்பட்டது", - "modified": "மாற்றியமைக்கப்பட்டது", - "updated": "புதுப்பிக்கப்பட்டது", - "configure": "கட்டமைக்கவும்", - "assigned_to": "க்கு ஒதுக்கப்பட்டது", - "cancel": "ரத்து செய்", - "clear": "தெளிவு", - "apply": "விண்ணப்பிக்கவும்", - "filter_by": "வடிகட்டவும்", - "filter": "வடிகட்டி", - "settings_and_filters": "அமைப்புகள் மற்றும் வடிப்பான்கள்", - "ordering": "ஆர்டர் செய்தல்", - "international_mobile": "சர்வதேச மொபைல்", - "indian_mobile": "இந்திய மொபைல்", - "mobile": "மொபைல்", - "landline": "இந்திய லேண்ட்லைன்", - "support": "ஆதரவு", - "emergency_contact_number": "அவசர தொடர்பு எண்", - "last_modified": "கடைசியாக மாற்றப்பட்டது", - "patient_address": "நோயாளியின் முகவரி", - "all_details": "அனைத்து விவரங்களும்", - "confirm": "உறுதிப்படுத்தவும்", - "refresh_list": "பட்டியலைப் புதுப்பிக்கவும்", - "last_edited": "கடைசியாக திருத்தப்பட்டது", - "audit_log": "தணிக்கை பதிவு", - "comments": "கருத்துகள்", - "contact_person_number": "தொடர்பு நபர் எண்", - "referral_letter": "பரிந்துரை கடிதம்", - "print": "அச்சிடுக", - "print_referral_letter": "பரிந்துரை கடிதத்தை அச்சிடுங்கள்", - "date_of_positive_covid_19_swab": "பாசிட்டிவ் கோவிட் 19 ஸ்வாப் தேதி", - "patient_no": "OP/IP எண்", - "date_of_admission": "சேர்க்கை தேதி", - "india_1": "இந்தியா", - "unique_id": "தனித்துவமான ஐடி", - "date_and_time": "தேதி மற்றும் நேரம்", - "facility_type": "வசதி வகை", - "number_of_chronic_diseased_dependents": "நாள்பட்ட நோய்களைச் சார்ந்திருப்பவர்களின் எண்ணிக்கை", - "number_of_aged_dependents_above_60": "வயதான சார்புடையவர்களின் எண்ணிக்கை (60 க்கு மேல்)", - "ongoing_medications": "தொடரும் மருந்துகள்", - "countries_travelled": "நாடுகள் பயணம் செய்தன", - "travel_within_last_28_days": "உள்நாட்டு/சர்வதேச பயணம் (கடந்த 28 நாட்களுக்குள்)", - "estimated_contact_date": "மதிப்பிடப்பட்ட தொடர்பு தேதி", - "blood_group": "இரத்தக் குழு", - "date_of_birth": "பிறந்த தேதி", - "date_of_test": "தேர்வு தேதி", - "srf_id": "SRF ஐடி", - "contact_number": "தொடர்பு எண்", - "diagnosis": "நோய் கண்டறிதல்", - "copied_to_clipboard": "கிளிப்போர்டுக்கு நகலெடுக்கப்பட்டது", - "is": "உள்ளது", - "reason": "காரணம்", - "description": "விளக்கம்", - "name": "பெயர்", - "address": "முகவரி", - "phone": "தொலைபேசி", - "nationality": "தேசியம்", - "allergies": "ஒவ்வாமை", - "type_your_comment": "உங்கள் கருத்தை உள்ளிடவும்", - "any_other_comments": "வேறு ஏதேனும் கருத்துகள்", - "loading": "ஏற்றுகிறது...", - "facility": "வசதி", - "local_body": "உள்ளூர் அமைப்பு", - "filters": "வடிப்பான்கள்", - "unknown": "தெரியவில்லை", + "TELEMEDICINE": "டெலிமெடிசின்", + "Users": "பயனர்கள்", + "VENTILATOR": "விரிவான புதுப்பிப்பு", + "VENTILATOR_MODE__CMV": "கட்டுப்பாட்டு இயந்திர காற்றோட்டம் (CMV)", + "VENTILATOR_MODE__PCV": "அழுத்தம் கட்டுப்பாட்டு காற்றோட்டம் (PCV)", + "VENTILATOR_MODE__PC_SIMV": "அழுத்தம் கட்டுப்படுத்தப்பட்ட SIMV (PC-SIMV)", + "VENTILATOR_MODE__PSV": "சி-பிஏபி / பிரஷர் சப்போர்ட் வென்டிலேஷன் (பிஎஸ்வி)", + "VENTILATOR_MODE__SIMV": "ஒத்திசைக்கப்பட்ட இடைப்பட்ட கட்டாய காற்றோட்டம் (SIMV)", + "VENTILATOR_MODE__VCV": "வால்யூம் கண்ட்ரோல் வென்டிலேஷன் (VCV)", + "VENTILATOR_MODE__VC_SIMV": "தொகுதி கட்டுப்படுத்தப்பட்ட SIMV (VC-SIMV)", + "View Facility": "வசதி காண்க", + "action_irreversible": "இந்த நடவடிக்கை மீள முடியாதது", "active": "செயலில்", - "completed": "முடிக்கப்பட்டது", - "on": "அன்று", - "open": "திற", - "features": "அம்சங்கள்", - "pincode": "பின்கோடு", - "required": "தேவை", - "field_required": "இந்த புலம் தேவை", - "litres": "லிட்டர்கள்", - "litres_per_day": "லிட்டர்/நாள்", - "invalid_pincode": "தவறான பின்கோடு", - "invalid_phone_number": "தவறான தொலைபேசி எண்", - "latitude_invalid": "அட்சரேகை -90 மற்றும் 90 க்கு இடையில் இருக்க வேண்டும்", - "longitude_invalid": "தீர்க்கரேகை -180 மற்றும் 180 க்கு இடையில் இருக்க வேண்டும்", - "save": "சேமிக்கவும்", - "continue": "தொடரவும்", - "save_and_continue": "சேமித்து தொடரவும்", - "select": "தேர்ந்தெடு", - "lsg": "Lsg", - "delete": "நீக்கு", - "remove": "அகற்று", - "max_size_for_image_uploaded_should_be": "பதிவேற்றப்பட்ட படத்திற்கான அதிகபட்ச அளவு இருக்க வேண்டும்", - "allowed_formats_are": "அனுமதிக்கப்பட்ட வடிவங்கள்", - "recommended_aspect_ratio_for": "பரிந்துரைக்கப்பட்ட தோற்ற விகிதம்", - "drag_drop_image_to_upload": "பதிவேற்ற படத்தை இழுத்து விடவும்", - "upload_an_image": "ஒரு படத்தை பதிவேற்றவும்", - "upload": "பதிவேற்றவும்", - "uploading": "பதிவேற்றுகிறது", - "switch": "மாறவும்", - "capture": "பிடிப்பு", - "retake": "மீண்டும் எடுக்கவும்", - "submit": "சமர்ப்பிக்கவும்", - "camera": "கேமரா", - "camera_permission_denied": "கேமரா அனுமதி நிராகரித்தது", - "submitting": "சமர்ப்பிக்கிறது", - "view_details": "விவரங்களைக் காண்க", - "type_to_search": "தேட தட்டச்சு செய்யவும்", - "show_all": "அனைத்தையும் காட்டு", - "hide": "மறை", - "select_skills": "சில திறன்களைத் தேர்ந்தெடுத்து சேர்க்கவும்", - "contact_your_admin_to_add_skills": "திறன்களைச் சேர்க்க உங்கள் நிர்வாகியைத் தொடர்புகொள்ளவும்", + "active_prescriptions": "செயலில் உள்ள மருந்துகள்", "add": "சேர்", "add_as": "என சேர்", - "sort_by": "வரிசைப்படுத்து", - "none": "இல்லை", - "choose_file": "சாதனத்திலிருந்து பதிவேற்றவும்", - "open_camera": "கேமராவைத் திற", - "file_preview": "கோப்பு முன்னோட்டம்", - "file_preview_not_supported": "இந்தக் கோப்பை முன்னோட்டமிட முடியவில்லை. பதிவிறக்கம் செய்து பாருங்கள்.", - "view_faciliy": "பார்வை வசதி", - "view_patients": "நோயாளிகளைப் பார்க்கவும்", - "frequency": "அதிர்வெண்", - "days": "நாட்கள்", - "never": "ஒருபோதும்", + "add_beds": "படுக்கைகளைச் சேர்", + "add_details_of_patient": "நோயாளியின் விவரங்களைச் சேர்க்கவும்", + "add_location": "இருப்பிடத்தைச் சேர்க்கவும்", + "add_new_user": "புதிய பயனரைச் சேர்க்கவும்", "add_notes": "குறிப்புகளைச் சேர்க்கவும்", - "notes_placeholder": "உங்கள் குறிப்புகளைத் தட்டச்சு செய்யவும்", - "optional": "விருப்பமானது", - "discontinue": "நிறுத்து", - "discontinued": "நிறுத்தப்பட்டது", - "not_specified": "குறிப்பிடப்படவில்லை", + "add_prescription_medication": "பரிந்துரைக்கப்பட்ட மருந்துகளைச் சேர்க்கவும்", + "add_prescription_to_consultation_note": "இந்த ஆலோசனையில் புதிய மருந்துச் சீட்டைச் சேர்க்கவும்.", + "add_prn_prescription": "PRN மருந்துச் சீட்டைச் சேர்க்கவும்", + "address": "முகவரி", + "administer": "நிர்வாகம்", + "administer_medicine": "மருந்தை நிர்வகி", + "administer_medicines": "மருந்துகளை நிர்வகிக்கவும்", + "administer_selected_medicines": "தேர்ந்தெடுக்கப்பட்ட மருந்துகளை நிர்வகிக்கவும்", + "administered_on": "அன்று நிர்வகிக்கப்படுகிறது", + "administration_dosage_range_error": "ஆரம்ப மற்றும் இலக்கு டோஸ் இடையே மருந்தளவு இருக்க வேண்டும்", + "administration_notes": "நிர்வாக குறிப்புகள்", + "advanced_filters": "மேம்பட்ட வடிப்பான்கள்", + "age": "வயது", "all_changes_have_been_saved": "அனைத்து மாற்றங்களும் சேமிக்கப்பட்டன", - "no_data_found": "தரவு எதுவும் கிடைக்கவில்லை", - "edit": "திருத்தவும்", - "clear_selection": "தெளிவான தேர்வு", - "select_date": "தேதியைத் தேர்ந்தெடுக்கவும்", - "DD/MM/YYYY": "DD/MM/YYYY", - "clear_all_filters": "அனைத்து வடிப்பான்களையும் அழிக்கவும்", - "summary": "சுருக்கம்", - "report": "அறிக்கை", - "treating_doctor": "சிகிச்சை அளிக்கும் மருத்துவர்", - "ration_card__NO_CARD": "அட்டை இல்லாதவர்", - "ration_card__BPL": "பிபிஎல்", - "ration_card__APL": "ஏபிஎல்", - "empty_date_time": "--:-- --; ------------", - "caution": "எச்சரிக்கை", - "feed_optimal_experience_for_phones": "சிறந்த பார்வை அனுபவத்திற்கு, உங்கள் சாதனத்தைச் சுழற்றுவதைக் கவனியுங்கள்.", - "feed_optimal_experience_for_apple_phones": "சிறந்த பார்வை அனுபவத்திற்கு, உங்கள் சாதனத்தைச் சுழற்றுவதைக் கவனியுங்கள். உங்கள் சாதன அமைப்புகளில் தானாகச் சுழற்றுவது இயக்கப்பட்டிருப்பதை உறுதிசெய்யவும்.", - "action_irreversible": "இந்த நடவடிக்கை மீள முடியாதது", - "GENDER__1": "ஆண்", - "GENDER__2": "பெண்", - "GENDER__3": "பைனரி அல்லாத", - "normal": "இயல்பானது", - "done": "முடிந்தது", - "view": "காண்க", - "rename": "மறுபெயரிடவும்", - "more_info": "மேலும் தகவல்", + "all_details": "அனைத்து விவரங்களும்", + "allergies": "ஒவ்வாமை", + "allowed_formats_are": "அனுமதிக்கப்பட்ட வடிவங்கள்", + "already_a_member": "ஏற்கனவே உறுப்பினரா?", + "ambulance_driver_name": "ஆம்புலன்ஸ் ஓட்டுநரின் பெயர்", + "ambulance_number": "ஆம்புலன்ஸ் எண்", + "ambulance_phone_number": "ஆம்புலன்ஸின் தொலைபேசி எண்", + "antenatal": "முற்பிறவி", + "any_other_comments": "வேறு ஏதேனும் கருத்துகள்", + "apply": "விண்ணப்பிக்கவும்", + "approved_by_district_covid_control_room": "மாவட்ட கோவிட் கட்டுப்பாட்டு அறையால் அங்கீகரிக்கப்பட்டது", + "approving_facility": "அங்கீகரிக்கும் வசதியின் பெயர்", "archive": "காப்பகம்", - "discard": "நிராகரி", - "live": "வாழ்க", - "discharged": "வெளியேற்றப்பட்டது", "archived": "காப்பகப்படுத்தப்பட்டது", - "no_changes_made": "எந்த மாற்றமும் செய்யப்படவில்லை", - "user_deleted_successfuly": "பயனர் வெற்றிகரமாக நீக்கப்பட்டார்", - "users": "பயனர்கள்", + "are_you_still_watching": "நீங்கள் இன்னும் பார்க்கிறீர்களா?", "are_you_sure_want_to_delete": "{{name}}ஐ நிச்சயமாக நீக்க விரும்புகிறீர்களா?", - "oxygen_information": "ஆக்ஸிஜன் தகவல்", - "deleted_successfully": "{{name}} வெற்றிகரமாக நீக்கப்பட்டது", - "delete_item": "{{name}}ஐ நீக்கவும்", - "unsupported_browser": "ஆதரிக்கப்படாத உலாவி", - "unsupported_browser_description": "உங்கள் உலாவி ({{name}} பதிப்பு {{version}}) ஆதரிக்கப்படவில்லை. உங்கள் உலாவியை சமீபத்திய பதிப்பிற்கு புதுப்பிக்கவும் அல்லது சிறந்த அனுபவத்திற்காக ஆதரிக்கப்படும் உலாவிக்கு மாறவும்.", - "SORT_OPTIONS__-created_date": "புதிதாக உருவாக்கப்பட்ட தேதி முதலில்", - "SORT_OPTIONS__created_date": "பழைய உருவாக்கப்பட்ட தேதி முதலில்", - "SORT_OPTIONS__-category_severity": "அதிக தீவிரத்தன்மை பிரிவு முதலில்", - "SORT_OPTIONS__category_severity": "குறைந்த தீவிரத்தன்மை வகை முதலில்", - "SORT_OPTIONS__-modified_date": "முதலில் புதுப்பிக்கப்பட்ட தேதி", - "SORT_OPTIONS__modified_date": "பழைய புதுப்பிக்கப்பட்ட தேதி முதலில்", - "SORT_OPTIONS__facility__name,last_consultation__current_bed__bed__name": "படுக்கை எண் 1-N", - "SORT_OPTIONS__facility__name,-last_consultation__current_bed__bed__name": "படுக்கை எண். N-1", - "SORT_OPTIONS__-review_time": "சமீபத்திய மதிப்பாய்வு தேதி முதலில்", - "SORT_OPTIONS__review_time": "பழைய மதிப்பாய்வு தேதி முதலில்", - "SORT_OPTIONS__taken_at": "முதலில் எடுக்கப்பட்ட பழைய தேதி", - "SORT_OPTIONS__-taken_at": "சமீபத்தில் எடுக்கப்பட்ட தேதி முதலில்", - "SORT_OPTIONS__name": "நோயாளியின் பெயர் AZ", - "SORT_OPTIONS__-name": "நோயாளியின் பெயர் ZA", - "SORT_OPTIONS__bed__name": "படுக்கை எண் 1-N", - "SORT_OPTIONS__-bed__name": "படுக்கை எண். N-1", - "middleware_hostname": "மிடில்வேர் ஹோஸ்ட்பெயர்", - "local_ipaddress": "உள்ளூர் ஐபி முகவரி", - "no_consultation_updates": "ஆலோசனை அறிவிப்புகள் இல்லை", - "consultation_updates": "ஆலோசனை புதுப்பிப்புகள்", - "update_log": "புதுப்பிப்பு பதிவேடு", - "record_updates": "பதிவு புதுப்பிப்புகள்", - "log_lab_results": "பதிவு ஆய்வக முடிவுகள்", - "no_log_update_delta": "முந்தைய பதிவு புதுப்பித்தலுக்குப் பிறகு எந்த மாற்றமும் இல்லை", - "virtual_nursing_assistant": "மெய்நிகர் நர்சிங் உதவியாளர்", - "discharge": "வெளியேற்றம்", - "discharge_summary": "வெளியேற்ற சுருக்கம்", - "discharge_from_care": "CARE இலிருந்து வெளியேற்றம்", - "generating_discharge_summary": "வெளியேற்ற சுருக்கத்தை உருவாக்குகிறது", - "discharge_summary_not_ready": "டிஸ்சார்ஜ் சுருக்கம் இன்னும் தயாராகவில்லை.", - "download_discharge_summary": "வெளியேற்ற சுருக்கத்தைப் பதிவிறக்கவும்", - "email_discharge_summary_description": "டிஸ்சார்ஜ் சுருக்கத்தைப் பெற உங்கள் சரியான மின்னஞ்சல் முகவரியை உள்ளிடவும்", - "generated_summary_caution": "இது CARE அமைப்பில் கைப்பற்றப்பட்ட தகவலைப் பயன்படுத்தி கணினியில் உருவாக்கப்பட்ட சுருக்கமாகும்.", - "NORMAL": "சுருக்கமான புதுப்பிப்பு", - "VENTILATOR": "விரிவான புதுப்பிப்பு", - "DOCTORS_LOG": "முன்னேற்றக் குறிப்பு", - "AUTOMATED": "தானியங்கி", - "TELEMEDICINE": "டெலிமெடிசின்", - "investigations": "விசாரணைகள்", - "search_investigation_placeholder": "தேடல் விசாரணை & குழுக்கள்", - "save_investigation": "விசாரணையைச் சேமிக்கவும்", - "investigation_reports": "விசாரணை அறிக்கைகள்", - "no_investigation": "விசாரணை அறிக்கைகள் எதுவும் கிடைக்கவில்லை", - "investigations_suggested": "விசாரணைகள் பரிந்துரைக்கப்பட்டுள்ளன", - "to_be_conducted": "நடத்தப்பட வேண்டும்", - "log_report": "பதிவு அறிக்கை", - "no_investigation_suggestions": "விசாரணை பரிந்துரைகள் இல்லை", - "select_investigation": "விசாரணைகளைத் தேர்ந்தெடு (எல்லா விசாரணைகளும் இயல்பாகவே தேர்ந்தெடுக்கப்படும்)", - "select_investigations": "விசாரணைகளைத் தேர்ந்தெடுக்கவும்", - "get_tests": "சோதனைகளைப் பெறுங்கள்", - "select_investigation_groups": "விசாரணைக் குழுக்களைத் தேர்ந்தெடுக்கவும்", - "select_groups": "குழுக்களைத் தேர்ந்தெடுக்கவும்", - "generate_report": "அறிக்கையை உருவாக்கவும்", - "prev_sessions": "முந்தைய அமர்வுகள்", - "next_sessions": "அடுத்த அமர்வுகள்", - "no_changes": "மாற்றங்கள் இல்லை", - "back_to_consultation": "ஆலோசனைக்குத் திரும்பு", - "no_treating_physicians_available": "இந்த வசதியில் வீட்டு வசதி டாக்டர்கள் இல்லை. உங்கள் நிர்வாகியைத் தொடர்பு கொள்ளவும்.", - "encounter_suggestion_edit_disallowed": "திருத்த ஆலோசனையில் இந்த விருப்பத்திற்கு மாற அனுமதிக்கப்படவில்லை", - "encounter_suggestion__A": "சேர்க்கை", - "encounter_suggestion__DC": "வீட்டு பராமரிப்பு", - "encounter_suggestion__OP": "வெளி நோயாளி வருகை", - "encounter_suggestion__DD": "ஆலோசனை", - "encounter_suggestion__HI": "ஆலோசனை", - "encounter_suggestion__R": "ஆலோசனை", - "encounter_date_field_label__A": "வசதிக்கான சேர்க்கை தேதி மற்றும் நேரம்", - "encounter_date_field_label__DC": "வீட்டு பராமரிப்பு தொடங்கும் தேதி மற்றும் நேரம்", - "encounter_date_field_label__OP": "வெளி நோயாளி வருகையின் தேதி மற்றும் நேரம்", - "encounter_date_field_label__DD": "கலந்தாய்வு தேதி & நேரம்", - "encounter_date_field_label__HI": "கலந்தாய்வு தேதி & நேரம்", - "encounter_date_field_label__R": "கலந்தாய்வு தேதி & நேரம்", + "are_you_sure_want_to_delete_this_record": "இந்தப் பதிவை நிச்சயமாக நீக்க விரும்புகிறீர்களா?", + "asset_class": "சொத்து வகுப்பு", + "asset_location": "சொத்து இருப்பிடம்", + "asset_name": "சொத்து பெயர்", + "asset_not_found_msg": "அச்சச்சோ! நீங்கள் தேடும் சொத்து இல்லை. சொத்து ஐடியைச் சரிபார்க்கவும்.", + "asset_qr_id": "சொத்து QR ஐடி", + "asset_type": "சொத்து வகை", + "assigned_facility": "வசதி ஒதுக்கப்பட்டுள்ளது", + "assigned_to": "க்கு ஒதுக்கப்பட்டது", + "audio__allow_permission": "தள அமைப்புகளில் மைக்ரோஃபோன் அனுமதியை அனுமதிக்கவும்", + "audio__allow_permission_button": "எப்படி அனுமதிப்பது என்பதை அறிய இங்கே கிளிக் செய்யவும்", + "audio__allow_permission_helper": "கடந்த காலத்தில் மைக்ரோஃபோன் அணுகலை நீங்கள் மறுத்திருக்கலாம்.", + "audio__record": "ஆடியோ பதிவு", + "audio__record_helper": "பதிவைத் தொடங்க பொத்தானைக் கிளிக் செய்யவும்", + "audio__recorded": "ஆடியோ பதிவு செய்யப்பட்டது", + "audio__recording": "பதிவு செய்தல்", + "audio__recording_helper": "உங்கள் மைக்ரோஃபோனில் பேசவும்.", + "audio__recording_helper_2": "பதிவை நிறுத்த பொத்தானைக் கிளிக் செய்யவும்.", + "audio__start_again": "மீண்டும் தொடங்கவும்", + "audit_log": "தணிக்கை பதிவு", + "auth_login_title": "அங்கீகரிக்கப்பட்ட உள்நுழைவு", + "authorize_shift_delete": "ஷிப்ட் நீக்கத்தை அங்கீகரிக்கவும்", + "auto_generated_for_care": "பராமரிப்புக்காக தானாக உருவாக்கப்பட்டுள்ளது", + "available_features": "கிடைக்கும் அம்சங்கள்", + "available_in": "கிடைக்கும் மொழிகள்", + "average_weekly_working_hours": "சராசரி வாராந்திர வேலை நேரம்", + "awaiting_destination_approval": "இலக்கு அனுமதிக்காக காத்திருக்கிறது", + "back": "மீண்டும்", "back_dated_encounter_date_caution": "நீங்கள் ஒரு சந்திப்பை உருவாக்குகிறீர்கள்", - "encounter_duration_confirmation": "இந்த சந்திப்பின் காலம் இருக்கும்", - "consultation_notes": "பொதுவான வழிமுறைகள் (ஆலோசனை)", - "procedure_suggestions": "செயல்முறை பரிந்துரைகள்", - "edit_cover_photo": "அட்டைப் படத்தைத் திருத்து", - "no_cover_photo_uploaded_for_this_facility": "இந்த வசதிக்காக அட்டைப் புகைப்படம் பதிவேற்றப்படவில்லை", + "back_to_consultation": "ஆலோசனைக்குத் திரும்பு", + "back_to_login": "உள்நுழைவு பக்கத்திற்குத் திரும்பு", + "base_dosage": "மருந்தளவு", + "bed_capacity": "படுக்கை திறன்", + "bed_search_placeholder": "படுக்கைகளின் பெயரைக் கொண்டு தேடுங்கள்", + "bed_type": "படுக்கை வகை", + "blood_group": "இரத்தக் குழு", + "board_view": "பலகை காட்சி", + "bradycardia": "பிராடி கார்டியா", + "breathlessness_level": "மூச்சுத்திணறல் நிலை", + "camera": "கேமரா", + "camera_permission_denied": "கேமரா அனுமதி நிராகரித்தது", + "cancel": "ரத்து செய்", + "capture": "பிடிப்பு", "capture_cover_photo": "அட்டைப் படத்தைப் பிடிக்கவும்", - "diagnoses": "நோய் கண்டறிகிறது", - "diagnosis_already_added": "இந்த நோயறிதல் ஏற்கனவே சேர்க்கப்பட்டது", - "principal": "அதிபர்", - "principal_diagnosis": "முதன்மை நோயறிதல்", - "unconfirmed": "உறுதி செய்யப்படவில்லை", - "provisional": "தற்காலிகமானது", - "differential": "வித்தியாசமான", - "confirmed": "உறுதி செய்யப்பட்டது", - "refuted": "மறுத்தார்", - "entered-in-error": "தவறுதலாக உள்ளிடப்பட்டது", - "help_unconfirmed": "இதை உறுதிப்படுத்தப்பட்ட நிலையாகக் கருதுவதற்கு போதுமான நோயறிதல் மற்றும்/அல்லது மருத்துவ சான்றுகள் இல்லை.", - "help_provisional": "இது ஒரு தற்காலிக நோயறிதல் - இன்னும் ஒரு வேட்பாளர் பரிசீலனையில் உள்ளது.", - "help_differential": "சாத்தியமான (மற்றும் பொதுவாக பரஸ்பரம் பிரத்தியேகமான) நோயறிதல்களின் தொகுப்பில் ஒன்று கண்டறியும் செயல்முறை மற்றும் பூர்வாங்க சிகிச்சையை மேலும் வழிகாட்டும்.", - "help_confirmed": "இதை உறுதிப்படுத்தப்பட்ட நிலையாகக் கருதுவதற்கு போதுமான நோயறிதல் மற்றும்/அல்லது மருத்துவ சான்றுகள் உள்ளன.", - "help_refuted": "இந்த நிலை அடுத்தடுத்த நோயறிதல் மற்றும் மருத்துவ சான்றுகளால் நிராகரிக்கப்பட்டது.", - "help_entered-in-error": "அறிக்கை பிழையாக உள்ளிடப்பட்டது, அது செல்லாது.", - "search_icd11_placeholder": "ICD-11 நோய் கண்டறிதல்களைத் தேடவும்", - "icd11_as_recommended": "WHO பரிந்துரைத்த ICD-11 இன் படி", - "Facilities": "வசதிகள்", - "Patients": "நோயாளிகள்", - "Sample Test": "மாதிரி சோதனை", - "Shifting": "மாற்றுதல்", - "Resource": "வளம்", - "Users": "பயனர்கள்", - "Profile": "சுயவிவரம்", - "Dashboard": "டாஷ்போர்டு", - "return_to_care": "CARE பக்கத்துக்குத் திரும்பு", - "404_message": "இல்லாத அல்லது வேறொரு URLக்கு நகர்த்தப்பட்ட ஒரு பக்கத்தில் நீங்கள் தடுமாறிவிட்டதாகத் தெரிகிறது. நீங்கள் சரியான இணைப்பை உள்ளிட்டுள்ளீர்கள் என்பதை உறுதிப்படுத்தவும்!", - "error_404": "பிழை 404", - "page_not_found": "பக்கம் கிடைக்கவில்லை", - "session_expired": "அமர்வு காலாவதியானது", - "invalid_password_reset_link": "தவறான கடவுச்சொல் மீட்டமைப்பு இணைப்பு", - "invalid_link_msg": "நீங்கள் பயன்படுத்திய கடவுச்சொல் மீட்டமைப்பு இணைப்பு தவறானது அல்லது காலாவதியானது போல் தெரிகிறது. புதிய கடவுச்சொல் மீட்டமைப்பு இணைப்பைக் கோரவும்.", - "return_to_password_reset": "கடவுச்சொல் மீட்டமைப்புக்குத் திரும்பு", - "return_to_login": "உள்நுழைவுக்குத் திரும்பு", - "session_expired_msg": "உங்கள் அமர்வு காலாவதியானது போல் தெரிகிறது. இது செயலற்ற தன்மை காரணமாக இருக்கலாம். தொடர மீண்டும் உள்நுழையவும்.", - "invalid_reset": "தவறான மீட்டமைப்பு", - "please_upload_a_csv_file": "CSV கோப்பைப் பதிவேற்றவும்", - "csv_file_in_the_specified_format": "குறிப்பிட்ட வடிவத்தில் CSV கோப்பைத் தேர்ந்தெடுக்கவும்", - "sample_format": "மாதிரி வடிவம்", - "search_for_facility": "வசதியைத் தேடுங்கள்", - "select_local_body": "உள்ளாட்சி அமைப்பைத் தேர்ந்தெடுக்கவும்", - "select_wards": "வார்டுகளைத் தேர்ந்தெடுக்கவும்", - "result_date": "முடிவு தேதி", - "sample_collection_date": "மாதிரி சேகரிப்பு தேதி", - "record_has_been_deleted_successfully": "பதிவு வெற்றிகரமாக நீக்கப்பட்டது.", - "error_while_deleting_record": "பதிவை நீக்குவதில் பிழை", - "result_details": "முடிவு விவரங்கள்", + "care": "கவனிப்பு", + "category": "வகை", + "caution": "எச்சரிக்கை", + "central_nursing_station": "மத்திய நர்சிங் நிலையம்", + "choose_file": "சாதனத்திலிருந்து பதிவேற்றவும்", + "choose_location": "இருப்பிடத்தைத் தேர்ந்தெடுக்கவும்", + "clear": "தெளிவு", + "clear_all_filters": "அனைத்து வடிப்பான்களையும் அழிக்கவும்", + "clear_home_facility": "தெளிவான வீட்டு வசதி", + "clear_selection": "தெளிவான தேர்வு", + "close": "மூடு", + "close_scanner": "ஸ்கேனரை மூடு", + "comment_added_successfully": "கருத்து வெற்றிகரமாக சேர்க்கப்பட்டது", + "comment_min_length": "கருத்து குறைந்தது 1 எழுத்தையாவது கொண்டிருக்க வேண்டும்", + "comments": "கருத்துகள்", + "completed": "முடிக்கப்பட்டது", + "configure": "கட்டமைக்கவும்", + "configure_facility": "வசதியை உள்ளமைக்கவும்", + "confirm": "உறுதிப்படுத்தவும்", "confirm_delete": "நீக்குவதை உறுதிப்படுத்தவும்", - "are_you_sure_want_to_delete_this_record": "இந்தப் பதிவை நிச்சயமாக நீக்க விரும்புகிறீர்களா?", - "patient_category": "நோயாளி வகை", - "source": "ஆதாரம்", - "result": "முடிவு", - "sample_type": "மாதிரி வகை", - "patient_status": "நோயாளியின் நிலை", - "mobile_number": "மொபைல் எண்", - "patient_created": "நோயாளி உருவாக்கப்பட்டது", - "update_record": "பதிவைப் புதுப்பிக்கவும்", - "facility_search_placeholder": "வசதி / மாவட்ட பெயர் மூலம் தேடுங்கள்", - "advanced_filters": "மேம்பட்ட வடிப்பான்கள்", - "facility_name": "வசதி பெயர்", - "KASP Empanelled": "KASP சேர்ந்தார்", - "View Facility": "வசதி காண்க", - "no_duplicate_facility": "நீங்கள் நகல் வசதிகளை உருவாக்கக்கூடாது", - "no_facilities": "வசதிகள் எதுவும் கிடைக்கவில்லை", - "no_staff": "ஊழியர்கள் இல்லை", - "no_bed_types_found": "படுக்கை வகைகள் இல்லை", - "total_beds": "மொத்த படுக்கைகள்", + "confirm_discontinue": "நிறுத்துவதை உறுதிப்படுத்தவும்", + "confirm_password": "கடவுச்சொல்லை உறுதிப்படுத்தவும்", + "confirm_transfer_complete": "பரிமாற்றம் முடிந்தது என்பதை உறுதிப்படுத்தவும்!", + "confirmed": "உறுதி செய்யப்பட்டது", + "consultation_notes": "பொதுவான வழிமுறைகள் (ஆலோசனை)", + "consultation_updates": "ஆலோசனை புதுப்பிப்புகள்", + "contact_number": "தொடர்பு எண்", + "contact_person": "வசதி உள்ள தொடர்பு நபரின் பெயர்", + "contact_person_at_the_facility": "தற்போதைய வசதியில் உள்ள நபரைத் தொடர்பு கொள்ளவும்", + "contact_person_number": "தொடர்பு நபர் எண்", + "contact_phone": "தொடர்பு நபர் எண்", + "contact_your_admin_to_add_skills": "திறன்களைச் சேர்க்க உங்கள் நிர்வாகியைத் தொடர்புகொள்ளவும்", + "continue": "தொடரவும்", + "continue_watching": "தொடர்ந்து பார்க்கவும்", + "contribute_github": "Github-ல் பங்களிப்பு செய்யுங்கள்", + "copied_to_clipboard": "கிளிப்போர்டுக்கு நகலெடுக்கப்பட்டது", + "countries_travelled": "நாடுகள் பயணம் செய்தன", + "covid_19_cat_gov": "அரசாங்கத்தின்படி கோவிட்_19 மருத்துவ வகை. கேரளா வழிகாட்டுதல் (A/B/C)", + "create": "உருவாக்கு", + "create_add_more": "உருவாக்கி மேலும் சேர்க்கவும்", + "create_asset": "சொத்தை உருவாக்கவும்", "create_facility": "புதிய வசதியை உருவாக்கவும்", - "staff_list": "பணியாளர்கள் பட்டியல்", - "bed_capacity": "படுக்கை திறன்", - "cylinders": "சிலிண்டர்கள்", - "cylinders_per_day": "சிலிண்டர்கள்/நாள்", - "liquid_oxygen_capacity": "திரவ ஆக்ஸிஜன் திறன்", - "expected_burn_rate": "எதிர்பார்க்கப்படும் எரிப்பு விகிதம்", - "type_b_cylinders": "பி வகை சிலிண்டர்கள்", - "type_c_cylinders": "சி வகை சிலிண்டர்கள்", - "type_d_cylinders": "டி வகை சிலிண்டர்கள்", - "update_asset": "சொத்தைப் புதுப்பிக்கவும்", "create_new_asset": "புதிய சொத்தை உருவாக்கவும்", - "you_need_at_least_a_location_to_create_an_assest": "ஒரு அசெஸ்ட்டை உருவாக்க குறைந்தபட்சம் ஒரு இருப்பிடமாவது தேவை.", - "add_location": "இருப்பிடத்தைச் சேர்க்கவும்", - "close_scanner": "ஸ்கேனரை மூடு", - "scan_asset_qr": "அசெட் க்யூஆர் ஸ்கேன்!", - "create": "உருவாக்கு", - "asset_name": "சொத்து பெயர்", - "asset_location": "சொத்து இருப்பிடம்", - "asset_type": "சொத்து வகை", - "asset_class": "சொத்து வகுப்பு", - "details_about_the_equipment": "உபகரணங்கள் பற்றிய விவரங்கள்", - "working_status": "வேலை நிலை", - "why_the_asset_is_not_working": "சொத்து ஏன் வேலை செய்யவில்லை?", - "describe_why_the_asset_is_not_working": "சொத்து ஏன் வேலை செய்யவில்லை என்பதை விவரிக்கவும்", - "asset_qr_id": "சொத்து QR ஐடி", - "manufacturer": "உற்பத்தியாளர்", - "eg_xyz": "எ.கா. XYZ", - "eg_abc": "எ.கா. ஏபிசி", - "warranty_amc_expiry": "உத்தரவாதம் / AMC காலாவதி", + "create_resource_request": "ஆதார கோரிக்கையை உருவாக்கவும்", + "created": "உருவாக்கப்பட்டது", + "created_date": "உருவாக்கப்பட்ட தேதி", + "csv_file_in_the_specified_format": "குறிப்பிட்ட வடிவத்தில் CSV கோப்பைத் தேர்ந்தெடுக்கவும்", + "customer_support_email": "வாடிக்கையாளர் ஆதரவு மின்னஞ்சல்", "customer_support_name": "வாடிக்கையாளர் ஆதரவு பெயர்", "customer_support_number": "வாடிக்கையாளர் ஆதரவு எண்", - "customer_support_email": "வாடிக்கையாளர் ஆதரவு மின்னஞ்சல்", - "eg_mail_example_com": "எ.கா. mail@example.com", - "vendor_name": "விற்பனையாளர் பெயர்", - "serial_number": "வரிசை எண்", - "last_serviced_on": "கடைசியாக சேவை செய்யப்பட்டது", - "create_add_more": "உருவாக்கி மேலும் சேர்க்கவும்", - "discharged_patients": "வெளியேற்றப்பட்ட நோயாளிகள்", - "discharged_patients_empty": "இந்த வசதியில் டிஸ்சார்ஜ் செய்யப்பட்ட நோயாளிகள் யாரும் இல்லை", - "update_facility_middleware_success": "வசதி மிடில்வேர் வெற்றிகரமாக புதுப்பிக்கப்பட்டது", - "treatment_summary__head_title": "சிகிச்சை சுருக்கம்", - "treatment_summary__print": "அச்சு சிகிச்சை சுருக்கம்", - "treatment_summary__heading": "இடைக்கால சிகிச்சை சுருக்கம்", - "patient_registration__name": "பெயர்", - "patient_registration__address": "முகவரி", - "patient_registration__age": "வயது", - "patient_consultation__op": "OP", - "patient_consultation__ip": "ஐபி", - "patient_consultation__dc_admission": "வீட்டு பராமரிப்பு தேதி தொடங்கியது", - "patient_consultation__admission": "சேர்க்கை தேதி", - "patient_registration__gender": "பாலினம்", - "patient_registration__contact": "அவசரத் தொடர்பு", - "patient_registration__comorbidities": "கூட்டு நோய்கள்", - "patient_registration__comorbidities__disease": "நோய்", - "patient_registration__comorbidities__details": "விவரங்கள்", - "patient_consultation__consultation_notes": "பொதுவான வழிமுறைகள்", - "patient_consultation__special_instruction": "சிறப்பு வழிமுறைகள்", - "suggested_investigations": "பரிந்துரைக்கப்பட்ட விசாரணைகள்", - "investigations__date": "தேதி", - "investigations__name": "பெயர்", - "investigations__result": "முடிவு", - "investigations__ideal_value": "சிறந்த மதிப்பு", - "investigations__range": "மதிப்பு வரம்பு", - "investigations__unit": "அலகு", - "patient_consultation__treatment__plan": "திட்டம்", - "patient_consultation__treatment__summary": "சுருக்கம்", - "patient_consultation__treatment__summary__date": "தேதி", - "patient_consultation__treatment__summary__spo2": "SpO2", - "patient_consultation__treatment__summary__temperature": "வெப்பநிலை", - "diagnosis__principal": "அதிபர்", + "cylinders": "சிலிண்டர்கள்", + "cylinders_per_day": "சிலிண்டர்கள்/நாள்", + "date_and_time": "தேதி மற்றும் நேரம்", + "date_of_admission": "சேர்க்கை தேதி", + "date_of_birth": "பிறந்த தேதி", + "date_of_positive_covid_19_swab": "பாசிட்டிவ் கோவிட் 19 ஸ்வாப் தேதி", + "date_of_test": "தேர்வு தேதி", + "days": "நாட்கள்", + "delete": "நீக்கு", + "delete_facility": "நீக்கு வசதி", + "delete_item": "{{name}}ஐ நீக்கவும்", + "delete_record": "பதிவை நீக்கு", + "deleted_successfully": "{{name}} வெற்றிகரமாக நீக்கப்பட்டது", + "describe_why_the_asset_is_not_working": "சொத்து ஏன் வேலை செய்யவில்லை என்பதை விவரிக்கவும்", + "description": "விளக்கம்", + "details_about_the_equipment": "உபகரணங்கள் பற்றிய விவரங்கள்", + "details_of_assigned_facility": "ஒதுக்கப்பட்ட வசதியின் விவரங்கள்", + "details_of_origin_facility": "மூல வசதியின் விவரங்கள்", + "details_of_patient": "நோயாளியின் விவரங்கள்", + "details_of_shifting_approving_facility": "ஒப்புதல் வசதியை மாற்றுவதற்கான விவரங்கள்", + "diagnoses": "நோய் கண்டறிகிறது", + "diagnosis": "நோய் கண்டறிதல்", "diagnosis__confirmed": "உறுதி செய்யப்பட்டது", + "diagnosis__differential": "வித்தியாசமான", + "diagnosis__principal": "அதிபர்", "diagnosis__provisional": "தற்காலிகமானது", "diagnosis__unconfirmed": "உறுதி செய்யப்படவில்லை", - "diagnosis__differential": "வித்தியாசமான", - "active_prescriptions": "செயலில் உள்ள மருந்துகள்", - "prescriptions__medicine": "மருந்து", - "prescriptions__route": "பாதை", - "prescriptions__dosage_frequency": "மருந்தளவு & அதிர்வெண்", - "prescriptions__start_date": "அன்று பரிந்துரைக்கப்பட்டது", - "select_facility_for_discharged_patients_warning": "டிஸ்சார்ஜ் செய்யப்பட்ட நோயாளிகளைப் பார்க்க வசதியைத் தேர்ந்தெடுக்க வேண்டும்.", + "diagnosis_already_added": "இந்த நோயறிதல் ஏற்கனவே சேர்க்கப்பட்டது", + "diastolic": "டயஸ்டாலிக்", + "differential": "வித்தியாசமான", + "discard": "நிராகரி", + "discharge": "வெளியேற்றம்", + "discharge_from_care": "CARE இலிருந்து வெளியேற்றம்", + "discharge_prescription": "வெளியேற்ற மருந்து", + "discharge_summary": "வெளியேற்ற சுருக்கம்", + "discharge_summary_not_ready": "டிஸ்சார்ஜ் சுருக்கம் இன்னும் தயாராகவில்லை.", + "discharged": "வெளியேற்றப்பட்டது", + "discharged_patients": "வெளியேற்றப்பட்ட நோயாளிகள்", + "discharged_patients_empty": "இந்த வசதியில் டிஸ்சார்ஜ் செய்யப்பட்ட நோயாளிகள் யாரும் இல்லை", + "disclaimer": "மறுப்பு", + "discontinue": "நிறுத்து", + "discontinue_caution_note": "இந்த மருந்தை நிச்சயமாக நிறுத்த விரும்புகிறீர்களா?", + "discontinued": "நிறுத்தப்பட்டது", + "disease_status": "நோய் நிலை", + "district": "மாவட்டம்", + "district_program_management_supporting_unit": "மாவட்ட திட்ட மேலாண்மை துணை அலகு", + "done": "முடிந்தது", + "dosage": "மருந்தளவு", + "down": "கீழே", + "download": "பதிவிறக்கவும்", + "download_discharge_summary": "வெளியேற்ற சுருக்கத்தைப் பதிவிறக்கவும்", + "download_type": "பதிவிறக்க வகை", + "downloading": "பதிவிறக்குகிறது", + "downloads": "பதிவிறக்கங்கள்", + "drag_drop_image_to_upload": "பதிவேற்ற படத்தை இழுத்து விடவும்", + "duplicate_patient_record_birth_unknown": "நோயாளியின் பிறந்த ஆண்டு குறித்து உங்களுக்குத் தெரியாவிட்டால், உங்கள் மாவட்ட பராமரிப்பு ஒருங்கிணைப்பாளர், இடமாற்றம் செய்யும் வசதி அல்லது நோயாளியைத் தொடர்பு கொள்ளவும்.", "duplicate_patient_record_confirmation": "பிறந்த ஆண்டைச் சேர்ப்பதன் மூலம் நோயாளியின் பதிவை உங்கள் வசதியில் அனுமதிக்கவும்", "duplicate_patient_record_rejection": "நான் உருவாக்க விரும்பும் சந்தேக நபர் / நோயாளி பட்டியலில் இல்லை என்பதை உறுதிப்படுத்துகிறேன்.", - "duplicate_patient_record_birth_unknown": "நோயாளியின் பிறந்த ஆண்டு குறித்து உங்களுக்குத் தெரியாவிட்டால், உங்கள் மாவட்ட பராமரிப்பு ஒருங்கிணைப்பாளர், இடமாற்றம் செய்யும் வசதி அல்லது நோயாளியைத் தொடர்பு கொள்ளவும்.", - "patient_transfer_birth_match_note": "குறிப்பு: பரிமாற்றக் கோரிக்கையைச் செயல்படுத்த, பிறந்த ஆண்டு நோயாளியுடன் பொருந்த வேண்டும்.", - "available_features": "கிடைக்கும் அம்சங்கள்", - "update_facility": "மேம்படுத்தல் வசதி", - "configure_facility": "வசதியை உள்ளமைக்கவும்", - "inventory_management": "சரக்கு மேலாண்மை", - "location_management": "இருப்பிட மேலாண்மை", - "resource_request": "ஆதார கோரிக்கை", - "view_asset": "சொத்துக்களைப் பார்க்கவும்", - "view_users": "பயனர்களைக் காண்க", - "view_abdm_records": "ABDM பதிவுகளைப் பார்க்கவும்", - "delete_facility": "நீக்கு வசதி", - "central_nursing_station": "மத்திய நர்சிங் நிலையம்", - "add_details_of_patient": "நோயாளியின் விவரங்களைச் சேர்க்கவும்", - "choose_location": "இருப்பிடத்தைத் தேர்ந்தெடுக்கவும்", - "live_monitoring": "நேரடி கண்காணிப்பு", - "open_live_monitoring": "நேரடி கண்காணிப்பைத் திறக்கவும்", - "audio__allow_permission": "தள அமைப்புகளில் மைக்ரோஃபோன் அனுமதியை அனுமதிக்கவும்", - "audio__allow_permission_helper": "கடந்த காலத்தில் மைக்ரோஃபோன் அணுகலை நீங்கள் மறுத்திருக்கலாம்.", - "audio__allow_permission_button": "எப்படி அனுமதிப்பது என்பதை அறிய இங்கே கிளிக் செய்யவும்", - "audio__record": "ஆடியோ பதிவு", - "audio__record_helper": "பதிவைத் தொடங்க பொத்தானைக் கிளிக் செய்யவும்", - "audio__recording": "பதிவு செய்தல்", - "audio__recording_helper": "உங்கள் மைக்ரோஃபோனில் பேசவும்.", - "audio__recording_helper_2": "பதிவை நிறுத்த பொத்தானைக் கிளிக் செய்யவும்.", - "audio__recorded": "ஆடியோ பதிவு செய்யப்பட்டது", - "audio__start_again": "மீண்டும் தொடங்கவும்", + "edit": "திருத்தவும்", + "edit_caution_note": "திருத்தப்பட்ட விவரங்களுடன் கலந்தாய்வில் புதிய மருந்துச் சீட்டு சேர்க்கப்படும் மற்றும் தற்போதைய மருந்துச் சீட்டு நிறுத்தப்படும்.", + "edit_cover_photo": "அட்டைப் படத்தைத் திருத்து", + "edit_history": "வரலாற்றைத் திருத்தவும்", + "edit_prescriptions": "மருந்துச்சீட்டுகளைத் திருத்தவும்", + "edited_by": "திருத்தியது", + "edited_on": "அன்று திருத்தப்பட்டது", + "eg_abc": "எ.கா. ஏபிசி", + "eg_details_on_functionality_service_etc": "எ.கா. செயல்பாடு, சேவை போன்றவை பற்றிய விவரங்கள்.", + "eg_mail_example_com": "எ.கா. mail@example.com", + "eg_xyz": "எ.கா. XYZ", + "email": "மின்னஞ்சல் முகவரி", + "email_address": "மின்னஞ்சல் முகவரி", + "email_discharge_summary_description": "டிஸ்சார்ஜ் சுருக்கத்தைப் பெற உங்கள் சரியான மின்னஞ்சல் முகவரியை உள்ளிடவும்", + "email_success": "விரைவில் மின்னஞ்சல் அனுப்புவோம். உங்கள் இன்பாக்ஸை சரிபார்க்கவும்.", + "emergency": "அவசரநிலை", + "emergency_contact_number": "அவசர தொடர்பு எண்", + "empty_date_time": "--:-- --; ------------", + "encounter_date_field_label__A": "வசதிக்கான சேர்க்கை தேதி மற்றும் நேரம்", + "encounter_date_field_label__DC": "வீட்டு பராமரிப்பு தொடங்கும் தேதி மற்றும் நேரம்", + "encounter_date_field_label__DD": "கலந்தாய்வு தேதி & நேரம்", + "encounter_date_field_label__HI": "கலந்தாய்வு தேதி & நேரம்", + "encounter_date_field_label__OP": "வெளி நோயாளி வருகையின் தேதி மற்றும் நேரம்", + "encounter_date_field_label__R": "கலந்தாய்வு தேதி & நேரம்", + "encounter_duration_confirmation": "இந்த சந்திப்பின் காலம் இருக்கும்", + "encounter_suggestion__A": "சேர்க்கை", + "encounter_suggestion__DC": "வீட்டு பராமரிப்பு", + "encounter_suggestion__DD": "ஆலோசனை", + "encounter_suggestion__HI": "ஆலோசனை", + "encounter_suggestion__OP": "வெளி நோயாளி வருகை", + "encounter_suggestion__R": "ஆலோசனை", + "encounter_suggestion_edit_disallowed": "திருத்த ஆலோசனையில் இந்த விருப்பத்திற்கு மாற அனுமதிக்கப்படவில்லை", "enter_file_name": "கோப்பு பெயரை உள்ளிடவும்", - "no_files_found": "{{type}} கோப்புகள் இல்லை", - "upload_headings__patient": "புதிய நோயாளி கோப்பை பதிவேற்றவும்", - "upload_headings__consultation": "புதிய ஆலோசனைக் கோப்பைப் பதிவேற்றவும்", - "upload_headings__sample_report": "மாதிரி அறிக்கையைப் பதிவேற்றவும்", - "upload_headings__supporting_info": "துணைத் தகவலைப் பதிவேற்றவும்", - "file_list_headings__patient": "நோயாளி கோப்புகள்", - "file_list_headings__consultation": "ஆலோசனை கோப்புகள்", - "file_list_headings__sample_report": "மாதிரி அறிக்கை", - "file_list_headings__supporting_info": "துணைத் தகவல்", + "enter_valid_age": "செல்லுபடியாகும் வயதை உள்ளிடவும்", + "entered-in-error": "தவறுதலாக உள்ளிடப்பட்டது", + "error_404": "பிழை 404", + "error_deleting_shifting": "பதிவை மாற்றுவதில் பிழை", + "error_while_deleting_record": "பதிவை நீக்குவதில் பிழை", + "escape": "எஸ்கேப்", + "estimated_contact_date": "மதிப்பிடப்பட்ட தொடர்பு தேதி", + "expected_burn_rate": "எதிர்பார்க்கப்படும் எரிப்பு விகிதம்", + "facilities": "வசதிகள்", + "facility": "வசதி", + "facility_name": "வசதி பெயர்", + "facility_preference": "வசதி விருப்பம்", + "facility_search_placeholder": "வசதி / மாவட்ட பெயர் மூலம் தேடுங்கள்", + "facility_type": "வசதி வகை", + "features": "அம்சங்கள்", + "feed_is_currently_not_live": "ஊட்டம் தற்போது நேரலையில் இல்லை", + "feed_optimal_experience_for_apple_phones": "சிறந்த பார்வை அனுபவத்திற்கு, உங்கள் சாதனத்தைச் சுழற்றுவதைக் கவனியுங்கள். உங்கள் சாதன அமைப்புகளில் தானாகச் சுழற்றுவது இயக்கப்பட்டிருப்பதை உறுதிசெய்யவும்.", + "feed_optimal_experience_for_phones": "சிறந்த பார்வை அனுபவத்திற்கு, உங்கள் சாதனத்தைச் சுழற்றுவதைக் கவனியுங்கள்.", + "field_required": "இந்த புலம் தேவை", "file_error__choose_file": "பதிவேற்ற ஒரு கோப்பைத் தேர்ந்தெடுக்கவும்", + "file_error__dynamic": "கோப்பைப் பதிவேற்றுவதில் பிழை: {{statusText}}", "file_error__file_name": "கோப்பின் பெயரை உள்ளிடவும்", "file_error__file_size": "கோப்புகளின் அதிகபட்ச அளவு 100 எம்பி", "file_error__file_type": "தவறான கோப்பு வகை \".{{extension}}\" அனுமதிக்கப்பட்ட வகைகள்: {{allowedExtensions}}", - "file_uploaded": "கோப்பு வெற்றிகரமாக பதிவேற்றப்பட்டது", - "file_error__dynamic": "கோப்பைப் பதிவேற்றுவதில் பிழை: {{statusText}}", "file_error__network": "கோப்பைப் பதிவேற்றுவதில் பிழை: பிணையப் பிழை", - "monitor": "கண்காணிக்கவும்", - "show_default_presets": "இயல்புநிலை முன்னமைவுகளைக் காட்டு", - "show_patient_presets": "நோயாளியின் முன்னமைவுகளைக் காட்டு", - "moving_camera": "நகரும் கேமரா", + "file_list_headings__consultation": "ஆலோசனை கோப்புகள்", + "file_list_headings__patient": "நோயாளி கோப்புகள்", + "file_list_headings__sample_report": "மாதிரி அறிக்கை", + "file_list_headings__supporting_info": "துணைத் தகவல்", + "file_preview": "கோப்பு முன்னோட்டம்", + "file_preview_not_supported": "இந்தக் கோப்பை முன்னோட்டமிட முடியவில்லை. பதிவிறக்கம் செய்து பாருங்கள்.", + "file_uploaded": "கோப்பு வெற்றிகரமாக பதிவேற்றப்பட்டது", + "filter": "வடிகட்டி", + "filter_by": "வடிகட்டவும்", + "filter_by_category": "வகையின்படி வடிகட்டவும்", + "filters": "வடிப்பான்கள்", + "first_name": "முதல் பெயர்", + "footer_body": "கொரோனா சேஃப் நெட்வொர்க் என்பது ஒரு திறந்த மூல பொது பயன்பாடாகும், இது கேரள அரசாங்கத்தின் முழு புரிதலுடனும் ஆதரவிற்கும் அரசாங்க முயற்சிகளை ஆதரிக்க ஒரு மாதிரியில் பணிபுரியும் புதுமைப்பித்தர்கள் மற்றும் தன்னார்வலர்களின் பல ஒழுக்கக் குழுவால் வடிவமைக்கப்பட்டுள்ளது.", + "forget_password": "கடவுச்சொல்லை மறந்துவிட்டீர்களா?", + "forget_password_instruction": "உங்கள் பயனர்பெயரை உள்ளிடவும், உங்கள் கடவுச்சொல்லை மீட்டமைக்க ஒரு இணைப்பை நாங்கள் உங்களுக்கு அனுப்புவோம்.", + "frequency": "அதிர்வெண்", "full_screen": "முழுத்திரை", - "feed_is_currently_not_live": "ஊட்டம் தற்போது நேரலையில் இல்லை", - "zoom_out": "பெரிதாக்கவும்", - "zoom_in": "பெரிதாக்கவும்", - "right": "சரி", + "gender": "பாலினம்", + "generate_report": "அறிக்கையை உருவாக்கவும்", + "generated_summary_caution": "இது CARE அமைப்பில் கைப்பற்றப்பட்ட தகவலைப் பயன்படுத்தி கணினியில் உருவாக்கப்பட்ட சுருக்கமாகும்.", + "generating": "உருவாக்குகிறது", + "generating_discharge_summary": "வெளியேற்ற சுருக்கத்தை உருவாக்குகிறது", + "get_tests": "சோதனைகளைப் பெறுங்கள்", + "goal": "டிஜிட்டல் கருவிகளைப் பயன்படுத்தி பொது சுகாதார சேவைகளின் தரம் மற்றும் அணுகல்தன்மையை தொடர்ந்து மேம்படுத்துவதே எங்கள் குறிக்கோள்.", + "help_confirmed": "இதை உறுதிப்படுத்தப்பட்ட நிலையாகக் கருதுவதற்கு போதுமான நோயறிதல் மற்றும்/அல்லது மருத்துவ சான்றுகள் உள்ளன.", + "help_differential": "சாத்தியமான (மற்றும் பொதுவாக பரஸ்பரம் பிரத்தியேகமான) நோயறிதல்களின் தொகுப்பில் ஒன்று கண்டறியும் செயல்முறை மற்றும் பூர்வாங்க சிகிச்சையை மேலும் வழிகாட்டும்.", + "help_entered-in-error": "அறிக்கை பிழையாக உள்ளிடப்பட்டது, அது செல்லாது.", + "help_provisional": "இது ஒரு தற்காலிக நோயறிதல் - இன்னும் ஒரு வேட்பாளர் பரிசீலனையில் உள்ளது.", + "help_refuted": "இந்த நிலை அடுத்தடுத்த நோயறிதல் மற்றும் மருத்துவ சான்றுகளால் நிராகரிக்கப்பட்டது.", + "help_unconfirmed": "இதை உறுதிப்படுத்தப்பட்ட நிலையாகக் கருதுவதற்கு போதுமான நோயறிதல் மற்றும்/அல்லது மருத்துவ சான்றுகள் இல்லை.", + "hide": "மறை", + "home_facility": "வீட்டு வசதி", + "icd11_as_recommended": "WHO பரிந்துரைத்த ICD-11 இன் படி", + "inconsistent_dosage_units_error": "மருந்தளவு அலகுகள் ஒரே மாதிரியாக இருக்க வேண்டும்", + "india_1": "இந்தியா", + "indian_mobile": "இந்திய மொபைல்", + "indicator": "காட்டி", + "inidcator_event": "காட்டி நிகழ்வு", + "instruction_on_titration": "டைட்ரேஷன் பற்றிய வழிமுறைகள்", + "international_mobile": "சர்வதேச மொபைல்", + "invalid_asset_id_msg": "அச்சச்சோ! நீங்கள் உள்ளிட்ட சொத்து ஐடி சரியானதாகத் தெரியவில்லை.", + "invalid_email": "செல்லுபடியாகும் மின்னஞ்சல் முகவரியை உள்ளிடவும்", + "invalid_link_msg": "நீங்கள் பயன்படுத்திய கடவுச்சொல் மீட்டமைப்பு இணைப்பு தவறானது அல்லது காலாவதியானது போல் தெரிகிறது. புதிய கடவுச்சொல் மீட்டமைப்பு இணைப்பைக் கோரவும்.", + "invalid_password": "கடவுச்சொல் தேவைகளை பூர்த்தி செய்யவில்லை", + "invalid_password_reset_link": "தவறான கடவுச்சொல் மீட்டமைப்பு இணைப்பு", + "invalid_phone": "செல்லுபடியாகும் தொலைபேசி எண்ணை உள்ளிடவும்", + "invalid_phone_number": "தவறான தொலைபேசி எண்", + "invalid_pincode": "தவறான பின்கோடு", + "invalid_reset": "தவறான மீட்டமைப்பு", + "invalid_username": "தேவை. 150 எழுத்துக்கள் அல்லது குறைவானவை. எழுத்துக்கள், எண்கள் மற்றும் @ /. / + / - / _ மட்டும்.", + "inventory_management": "சரக்கு மேலாண்மை", + "investigation_reports": "விசாரணை அறிக்கைகள்", + "investigations": "விசாரணைகள்", + "investigations__date": "தேதி", + "investigations__ideal_value": "சிறந்த மதிப்பு", + "investigations__name": "பெயர்", + "investigations__range": "மதிப்பு வரம்பு", + "investigations__result": "முடிவு", + "investigations__unit": "அலகு", + "investigations_suggested": "விசாரணைகள் பரிந்துரைக்கப்பட்டுள்ளன", + "is": "உள்ளது", + "is_antenatal": "பிறப்புக்கு முந்தையது", + "is_emergency": "அவசரநிலை", + "is_emergency_case": "அவசர வழக்கு", + "is_it_upshift": "அது உயர்வானதா", + "is_this_an_emergency": "இது அவசரநிலையா?", + "is_this_an_upshift": "இது ஒரு உயர்வுதானா?", + "is_up_shift": "மாறிவிட்டது", + "is_upshift_case": "அப்ஷிஃப்ட் கேஸ்", + "landline": "இந்திய லேண்ட்லைன்", + "last_administered": "கடைசியாக நிர்வகிக்கப்பட்டது", + "last_edited": "கடைசியாக திருத்தப்பட்டது", + "last_modified": "கடைசியாக மாற்றப்பட்டது", + "last_name": "கடைசி பெயர்", + "last_online": "கடைசியாக ஆன்லைன்", + "last_serviced_on": "கடைசியாக சேவை செய்யப்பட்டது", + "latitude_invalid": "அட்சரேகை -90 மற்றும் 90 க்கு இடையில் இருக்க வேண்டும்", "left": "விட்டு", - "down": "கீழே", - "up": "மேலே", - "RESPIRATORY_SUPPORT_SHORT__UNKNOWN": "இல்லை", - "RESPIRATORY_SUPPORT_SHORT__OXYGEN_SUPPORT": "O2 ஆதரவு", - "RESPIRATORY_SUPPORT_SHORT__NON_INVASIVE": "என்.ஐ.வி", - "RESPIRATORY_SUPPORT_SHORT__INVASIVE": "IV", - "RESPIRATORY_SUPPORT__UNKNOWN": "இல்லை", - "RESPIRATORY_SUPPORT__OXYGEN_SUPPORT": "ஆக்ஸிஜன் ஆதரவு", - "RESPIRATORY_SUPPORT__NON_INVASIVE": "ஆக்கிரமிப்பு அல்லாத வென்டிலேட்டர் (NIV)", - "RESPIRATORY_SUPPORT__INVASIVE": "ஊடுருவும் காற்றோட்டம் (IV)", - "VENTILATOR_MODE__CMV": "கட்டுப்பாட்டு இயந்திர காற்றோட்டம் (CMV)", - "VENTILATOR_MODE__VCV": "வால்யூம் கண்ட்ரோல் வென்டிலேஷன் (VCV)", - "VENTILATOR_MODE__PCV": "அழுத்தம் கட்டுப்பாட்டு காற்றோட்டம் (PCV)", - "VENTILATOR_MODE__SIMV": "ஒத்திசைக்கப்பட்ட இடைப்பட்ட கட்டாய காற்றோட்டம் (SIMV)", - "VENTILATOR_MODE__VC_SIMV": "தொகுதி கட்டுப்படுத்தப்பட்ட SIMV (VC-SIMV)", - "VENTILATOR_MODE__PC_SIMV": "அழுத்தம் கட்டுப்படுத்தப்பட்ட SIMV (PC-SIMV)", - "VENTILATOR_MODE__PSV": "சி-பிஏபி / பிரஷர் சப்போர்ட் வென்டிலேஷன் (பிஎஸ்வி)", - "CONSCIOUSNESS_LEVEL__UNRESPONSIVE": "பதிலளிக்காதது", - "CONSCIOUSNESS_LEVEL__RESPONDS_TO_PAIN": "வலிக்கு பதிலளிக்கிறது", - "CONSCIOUSNESS_LEVEL__RESPONDS_TO_VOICE": "குரலுக்கு பதிலளிக்கிறது", - "CONSCIOUSNESS_LEVEL__ALERT": "எச்சரிக்கை", - "CONSCIOUSNESS_LEVEL__AGITATED_OR_CONFUSED": "கலக்கம் அல்லது குழப்பம்", - "CONSCIOUSNESS_LEVEL__ONSET_OF_AGITATION_AND_CONFUSION": "கிளர்ச்சி மற்றும் குழப்பத்தின் ஆரம்பம்", - "PUPIL_REACTION__UNKNOWN": "தெரியவில்லை", - "PUPIL_REACTION__BRISK": "சுறுசுறுப்பான", - "PUPIL_REACTION__SLUGGISH": "மந்தமான", - "PUPIL_REACTION__FIXED": "சரி செய்யப்பட்டது", - "PUPIL_REACTION__CANNOT_BE_ASSESSED": "மதிப்பிட முடியாது", - "LIMB_RESPONSE__UNKNOWN": "தெரியவில்லை", - "LIMB_RESPONSE__STRONG": "வலுவான", - "LIMB_RESPONSE__MODERATE": "மிதமான", - "LIMB_RESPONSE__WEAK": "பலவீனமான", - "LIMB_RESPONSE__FLEXION": "நெகிழ்வு", - "LIMB_RESPONSE__EXTENSION": "நீட்டிப்பு", - "LIMB_RESPONSE__NONE": "இல்லை", - "OXYGEN_MODALITY__NASAL_PRONGS": "நாசி முனைகள்", - "OXYGEN_MODALITY__SIMPLE_FACE_MASK": "எளிய முகமூடி", - "OXYGEN_MODALITY__NON_REBREATHING_MASK": "சுவாசிக்காத முகமூடி", - "OXYGEN_MODALITY__HIGH_FLOW_NASAL_CANNULA": "அதிக ஓட்டம் நாசி கேனுலா", - "INSULIN_INTAKE_FREQUENCY__UNKNOWN": "தெரியவில்லை", - "INSULIN_INTAKE_FREQUENCY__OD": "ஒரு நாளைக்கு ஒரு முறை (OD)", - "INSULIN_INTAKE_FREQUENCY__BD": "ஒரு நாளைக்கு இரண்டு முறை (BD)", - "INSULIN_INTAKE_FREQUENCY__TD": "ஒரு நாளைக்கு மூன்று முறை (டிடி)", - "NURSING_CARE_PROCEDURE__personal_hygiene": "தனிப்பட்ட சுகாதாரம்", - "NURSING_CARE_PROCEDURE__positioning": "நிலைப்படுத்துதல்", - "NURSING_CARE_PROCEDURE__suctioning": "உறிஞ்சும்", - "NURSING_CARE_PROCEDURE__ryles_tube_care": "ரைல்ஸ் குழாய் பராமரிப்பு", - "NURSING_CARE_PROCEDURE__iv_sitecare": "IV தள பராமரிப்பு", - "NURSING_CARE_PROCEDURE__nubulisation": "நுபுலைசேஷன்", - "NURSING_CARE_PROCEDURE__dressing": "ஆடை அணிதல்", - "NURSING_CARE_PROCEDURE__dvt_pump_stocking": "DVT பம்ப் ஸ்டாக்கிங்", - "NURSING_CARE_PROCEDURE__restrain": "கட்டுப்படுத்து", - "NURSING_CARE_PROCEDURE__chest_tube_care": "மார்பு குழாய் பராமரிப்பு", - "NURSING_CARE_PROCEDURE__tracheostomy_care": "டிரக்கியோஸ்டமி பராமரிப்பு", - "NURSING_CARE_PROCEDURE__stoma_care": "ஸ்டோமா கேர்", - "NURSING_CARE_PROCEDURE__catheter_care": "வடிகுழாய் பராமரிப்பு", - "HEARTBEAT_RHYTHM__REGULAR": "வழக்கமான", - "HEARTBEAT_RHYTHM__IRREGULAR": "ஒழுங்கற்ற", - "HEARTBEAT_RHYTHM__UNKNOWN": "தெரியவில்லை", + "linked_facilities": "இணைக்கப்பட்ட வசதிகள்", + "liquid_oxygen_capacity": "திரவ ஆக்ஸிஜன் திறன்", + "list_view": "பட்டியல் காட்சி", + "litres": "லிட்டர்கள்", + "litres_per_day": "லிட்டர்/நாள்", + "live": "வாழ்க", + "live_monitoring": "நேரடி கண்காணிப்பு", + "load_more": "மேலும் ஏற்றவும்", + "loading": "ஏற்றுகிறது...", + "local_body": "உள்ளூர் அமைப்பு", + "local_ipaddress": "உள்ளூர் ஐபி முகவரி", + "location": "இடம்", + "location_management": "இருப்பிட மேலாண்மை", + "log_lab_results": "பதிவு ஆய்வக முடிவுகள்", + "log_report": "பதிவு அறிக்கை", + "login": "உள்நுழைய", + "longitude_invalid": "தீர்க்கரேகை -180 மற்றும் 180 க்கு இடையில் இருக்க வேண்டும்", + "lsg": "Lsg", + "make_multiple_beds_label": "நீங்கள் பல படுக்கைகளை உருவாக்க விரும்புகிறீர்களா?", + "manage_prescriptions": "மருந்துகளை நிர்வகிக்கவும்", + "manufacturer": "உற்பத்தியாளர்", "map_acronym": "வரைபடம்", - "systolic": "சிஸ்டாலிக்", - "diastolic": "டயஸ்டாலிக்", - "pain": "வலி", - "pain_chart_description": "வலியின் பகுதி மற்றும் தீவிரத்தை குறிக்கவும்", - "bradycardia": "பிராடி கார்டியா", - "tachycardia": "டாக்ரிக்கார்டியா", - "medicine": "மருந்து", - "route": "பாதை", - "dosage": "மருந்தளவு", - "base_dosage": "மருந்தளவு", - "start_dosage": "தொடக்க மருந்தளவு", - "target_dosage": "இலக்கு அளவு", - "instruction_on_titration": "டைட்ரேஷன் பற்றிய வழிமுறைகள்", - "titrate_dosage": "டைட்ரேட் அளவு", - "indicator": "காட்டி", - "inidcator_event": "காட்டி நிகழ்வு", + "mark_all_as_read": "அனைத்தையும் படித்ததாகக் குறிக்கவும்", + "mark_as_read": "படித்ததாகக் குறி", + "mark_as_unread": "படிக்காதது எனக் குறி", + "mark_this_transfer_as_complete_question": "இந்தப் பரிமாற்றம் முடிந்ததாக நிச்சயமாகக் குறிக்க விரும்புகிறீர்களா? இந்த நோயாளியை ஆரிஜின் வசதி இனி அணுகாது", + "mark_transfer_complete_confirmation": "இந்தப் பரிமாற்றம் முடிந்ததாக நிச்சயமாகக் குறிக்க விரும்புகிறீர்களா? இந்த நோயாளியை ஆரிஜின் வசதி இனி அணுகாது", "max_dosage_24_hrs": "அதிகபட்சம். 24 மணி நேரத்தில் மருந்தளவு", - "min_time_bw_doses": "குறைந்தபட்சம் நேரம் b/w அளவுகள்", - "manage_prescriptions": "மருந்துகளை நிர்வகிக்கவும்", - "prescription_details": "மருந்துச் சீட்டு விவரங்கள்", - "prescription_medications": "பரிந்துரைக்கப்பட்ட மருந்துகள்", - "prn_prescriptions": "PRN பரிந்துரைகள்", - "prescription": "மருந்துச்சீட்டு", - "discharge_prescription": "வெளியேற்ற மருந்து", - "edit_prescriptions": "மருந்துச்சீட்டுகளைத் திருத்தவும்", - "prescription_medication": "பரிந்துரைக்கப்பட்ட மருந்து", - "add_prescription_medication": "பரிந்துரைக்கப்பட்ட மருந்துகளைச் சேர்க்கவும்", - "prn_prescription": "PRN மருந்து", - "add_prn_prescription": "PRN மருந்துச் சீட்டைச் சேர்க்கவும்", - "add_prescription_to_consultation_note": "இந்த ஆலோசனையில் புதிய மருந்துச் சீட்டைச் சேர்க்கவும்.", + "max_dosage_in_24hrs_gte_base_dosage_error": "அதிகபட்சம். 24 மணிநேரத்தில் மருந்தளவு அடிப்படை அளவை விட அதிகமாகவோ அல்லது சமமாகவோ இருக்க வேண்டும்", + "max_size_for_image_uploaded_should_be": "பதிவேற்றப்பட்ட படத்திற்கான அதிகபட்ச அளவு இருக்க வேண்டும்", + "medical_worker": "மருத்துவ பணியாளர்", + "medicine": "மருந்து", "medicine_administration_history": "மருத்துவ நிர்வாக வரலாறு", - "return_to_patient_dashboard": "நோயாளி டாஷ்போர்டுக்குத் திரும்பு", - "administered_on": "அன்று நிர்வகிக்கப்படுகிறது", - "administer": "நிர்வாகம்", - "administer_medicine": "மருந்தை நிர்வகி", - "administer_medicines": "மருந்துகளை நிர்வகிக்கவும்", - "administer_selected_medicines": "தேர்ந்தெடுக்கப்பட்ட மருந்துகளை நிர்வகிக்கவும்", - "select_for_administration": "நிர்வாகத்திற்கு தேர்ந்தெடுக்கவும்", "medicines_administered": "மருந்து (கள்) நிர்வகிக்கப்படுகிறது", "medicines_administered_error": "மருந்துகளை வழங்குவதில் பிழை", - "prescription_discontinued": "மருந்துச் சீட்டு நிறுத்தப்பட்டது", - "administration_notes": "நிர்வாக குறிப்புகள்", - "last_administered": "கடைசியாக நிர்வகிக்கப்பட்டது", - "prescription_logs": "மருந்துப் பதிவுகள்", + "middleware_hostname": "மிடில்வேர் ஹோஸ்ட்பெயர்", + "min_password_len_8": "குறைந்தபட்ச கடவுச்சொல் நீளம் 8", + "min_time_bw_doses": "குறைந்தபட்சம் நேரம் b/w அளவுகள்", + "mobile": "மொபைல்", + "mobile_number": "மொபைல் எண்", "modification_caution_note": "ஒருமுறை சேர்த்தால் எந்த மாற்றமும் சாத்தியமில்லை", - "discontinue_caution_note": "இந்த மருந்தை நிச்சயமாக நிறுத்த விரும்புகிறீர்களா?", - "confirm_discontinue": "நிறுத்துவதை உறுதிப்படுத்தவும்", - "edit_caution_note": "திருத்தப்பட்ட விவரங்களுடன் கலந்தாய்வில் புதிய மருந்துச் சீட்டு சேர்க்கப்படும் மற்றும் தற்போதைய மருந்துச் சீட்டு நிறுத்தப்படும்.", - "reason_for_discontinuation": "நிறுத்தத்திற்கான காரணம்", - "reason_for_edit": "திருத்தத்திற்கான காரணம்", - "PRESCRIPTION_ROUTE_ORAL": "வாய்வழி", - "PRESCRIPTION_ROUTE_IV": "IV", - "PRESCRIPTION_ROUTE_IM": "ஐ.எம்", - "PRESCRIPTION_ROUTE_SC": "எஸ்/சி", - "PRESCRIPTION_ROUTE_INHALATION": "உள்ளிழுத்தல்", - "PRESCRIPTION_ROUTE_NASOGASTRIC": "நாசோகாஸ்ட்ரிக் / காஸ்ட்ரோஸ்டமி குழாய்", - "PRESCRIPTION_ROUTE_INTRATHECAL": "உள்நோக்கி ஊசி", - "PRESCRIPTION_ROUTE_TRANSDERMAL": "டிரான்ஸ்டெர்மல்", - "PRESCRIPTION_ROUTE_RECTAL": "மலக்குடல்", - "PRESCRIPTION_ROUTE_SUBLINGUAL": "சப்ளிங்குவல்", - "PRESCRIPTION_FREQUENCY_STAT": "உடனடியாக", - "PRESCRIPTION_FREQUENCY_OD": "தினமும் ஒருமுறை", - "PRESCRIPTION_FREQUENCY_HS": "இரவு மட்டும்", - "PRESCRIPTION_FREQUENCY_BD": "தினமும் இருமுறை", - "PRESCRIPTION_FREQUENCY_TID": "8வது மணிநேரம்", - "PRESCRIPTION_FREQUENCY_QID": "6 வது மணிநேரம்", - "PRESCRIPTION_FREQUENCY_Q4H": "4 வது மணிநேரம்", - "PRESCRIPTION_FREQUENCY_QOD": "மாற்று நாள்", - "PRESCRIPTION_FREQUENCY_QWK": "வாரம் ஒருமுறை", - "inconsistent_dosage_units_error": "மருந்தளவு அலகுகள் ஒரே மாதிரியாக இருக்க வேண்டும்", - "max_dosage_in_24hrs_gte_base_dosage_error": "அதிகபட்சம். 24 மணிநேரத்தில் மருந்தளவு அடிப்படை அளவை விட அதிகமாகவோ அல்லது சமமாகவோ இருக்க வேண்டும்", - "administration_dosage_range_error": "ஆரம்ப மற்றும் இலக்கு டோஸ் இடையே மருந்தளவு இருக்க வேண்டும்", + "modified": "மாற்றியமைக்கப்பட்டது", + "modified_date": "மாற்றியமைக்கப்பட்ட தேதி", + "monitor": "கண்காணிக்கவும்", + "more_info": "மேலும் தகவல்", + "moving_camera": "நகரும் கேமரா", + "name": "பெயர்", + "name_of_hospital": "மருத்துவமனையின் பெயர்", + "name_of_shifting_approving_facility": "ஷிஃப்டிங் அங்கீகரிக்கும் வசதியின் பெயர்", + "nationality": "தேசியம்", + "never": "ஒருபோதும்", + "new_password": "புதிய கடவுச்சொல்", + "next_sessions": "அடுத்த அமர்வுகள்", + "no": "இல்லை", + "no_bed_types_found": "படுக்கை வகைகள் இல்லை", + "no_changes": "மாற்றங்கள் இல்லை", + "no_changes_made": "எந்த மாற்றமும் செய்யப்படவில்லை", + "no_consultation_updates": "ஆலோசனை அறிவிப்புகள் இல்லை", + "no_cover_photo_uploaded_for_this_facility": "இந்த வசதிக்காக அட்டைப் புகைப்படம் பதிவேற்றப்படவில்லை", + "no_data_found": "தரவு எதுவும் கிடைக்கவில்லை", + "no_duplicate_facility": "நீங்கள் நகல் வசதிகளை உருவாக்கக்கூடாது", + "no_facilities": "வசதிகள் எதுவும் கிடைக்கவில்லை", + "no_files_found": "{{type}} கோப்புகள் இல்லை", + "no_home_facility": "வீட்டு வசதி ஒதுக்கப்படவில்லை", + "no_investigation": "விசாரணை அறிக்கைகள் எதுவும் கிடைக்கவில்லை", + "no_investigation_suggestions": "விசாரணை பரிந்துரைகள் இல்லை", + "no_linked_facilities": "இணைக்கப்பட்ட வசதிகள் இல்லை", + "no_log_update_delta": "முந்தைய பதிவு புதுப்பித்தலுக்குப் பிறகு எந்த மாற்றமும் இல்லை", "no_notices_for_you": "உங்களுக்கான அறிவிப்புகள் இல்லை.", - "mark_as_read": "படித்ததாகக் குறி", - "mark_as_unread": "படிக்காதது எனக் குறி", - "subscribe": "குழுசேர்", - "subscribe_on_this_device": "இந்தச் சாதனத்தில் குழுசேரவும்", + "no_patients_to_show": "காட்ட நோயாளிகள் இல்லை.", + "no_results_found": "முடிவுகள் எதுவும் கிடைக்கவில்லை", + "no_staff": "ஊழியர்கள் இல்லை", + "no_treating_physicians_available": "இந்த வசதியில் வீட்டு வசதி டாக்டர்கள் இல்லை. உங்கள் நிர்வாகியைத் தொடர்பு கொள்ளவும்.", + "no_users_found": "பயனர்கள் இல்லை", + "none": "இல்லை", + "normal": "இயல்பானது", + "not_specified": "குறிப்பிடப்படவில்லை", + "notes": "குறிப்புகள்", + "notes_placeholder": "உங்கள் குறிப்புகளைத் தட்டச்சு செய்யவும்", "notification_permission_denied": "அறிவிப்பு அனுமதி நிராகரிக்கப்பட்டது", "notification_permission_granted": "அறிவிப்பு அனுமதி அளிக்கப்பட்டது", - "show_unread_notifications": "படிக்காததைக் காட்டு", - "show_all_notifications": "அனைத்தையும் காட்டு", - "filter_by_category": "வகையின்படி வடிகட்டவும்", - "mark_all_as_read": "அனைத்தையும் படித்ததாகக் குறிக்கவும்", - "reload": "மீண்டும் ஏற்றவும்", - "no_results_found": "முடிவுகள் எதுவும் கிடைக்கவில்லை", - "load_more": "மேலும் ஏற்றவும்", - "subscription_error": "சந்தா பிழை", - "unsubscribe_failed": "குழுவிலக முடியவில்லை.", - "unsubscribe": "குழுவிலகவும்", - "escape": "எஸ்கேப்", - "invalid_asset_id_msg": "அச்சச்சோ! நீங்கள் உள்ளிட்ட சொத்து ஐடி சரியானதாகத் தெரியவில்லை.", - "asset_not_found_msg": "அச்சச்சோ! நீங்கள் தேடும் சொத்து இல்லை. சொத்து ஐடியைச் சரிபார்க்கவும்.", - "create_resource_request": "ஆதார கோரிக்கையை உருவாக்கவும்", - "contact_person": "வசதி உள்ள தொடர்பு நபரின் பெயர்", - "approving_facility": "அங்கீகரிக்கும் வசதியின் பெயர்", - "contact_phone": "தொடர்பு நபர் எண்", + "number_of_aged_dependents_above_60": "வயதான சார்புடையவர்களின் எண்ணிக்கை (60 க்கு மேல்)", + "number_of_beds": "படுக்கைகளின் எண்ணிக்கை", + "number_of_beds_out_of_range_error": "படுக்கைகளின் எண்ணிக்கை 100க்கு மேல் இருக்கக்கூடாது", + "number_of_chronic_diseased_dependents": "நாள்பட்ட நோய்களைச் சார்ந்திருப்பவர்களின் எண்ணிக்கை", + "on": "அன்று", + "ongoing_medications": "தொடரும் மருந்துகள்", + "open": "திற", + "open_camera": "கேமராவைத் திற", + "open_live_monitoring": "நேரடி கண்காணிப்பைத் திறக்கவும்", + "optional": "விருப்பமானது", + "ordering": "ஆர்டர் செய்தல்", + "origin_facility": "தற்போதைய வசதி", + "oxygen_information": "ஆக்ஸிஜன் தகவல்", + "page_not_found": "பக்கம் கிடைக்கவில்லை", + "pain": "வலி", + "pain_chart_description": "வலியின் பகுதி மற்றும் தீவிரத்தை குறிக்கவும்", + "passport_number": "பாஸ்போர்ட் எண்", + "password": "கடவுச்சொல்", + "password_mismatch": "கடவுச்சொல் பொருந்தவில்லை", + "password_reset_failure": "கடவுச்சொல் மீட்டமைப்பு தோல்வியுற்றது!", + "password_reset_success": "கடவுச்சொல் வெற்றிகரமாக மீட்டமைக்கப்பட்டது!", + "password_sent": "கடவுச்சொல் மீட்டமை மின்னஞ்சல் அனுப்பப்பட்டது!", + "patient_address": "நோயாளியின் முகவரி", + "patient_category": "நோயாளி வகை", + "patient_consultation__admission": "சேர்க்கை தேதி", + "patient_consultation__consultation_notes": "பொதுவான வழிமுறைகள்", + "patient_consultation__dc_admission": "வீட்டு பராமரிப்பு தேதி தொடங்கியது", + "patient_consultation__ip": "ஐபி", + "patient_consultation__op": "OP", + "patient_consultation__special_instruction": "சிறப்பு வழிமுறைகள்", + "patient_consultation__treatment__plan": "திட்டம்", + "patient_consultation__treatment__summary": "சுருக்கம்", + "patient_consultation__treatment__summary__date": "தேதி", + "patient_consultation__treatment__summary__spo2": "SpO2", + "patient_consultation__treatment__summary__temperature": "வெப்பநிலை", + "patient_created": "நோயாளி உருவாக்கப்பட்டது", + "patient_name": "நோயாளி பெயர்", + "patient_no": "OP/IP எண்", + "patient_phone_number": "நோயாளியின் தொலைபேசி எண்", + "patient_registration__address": "முகவரி", + "patient_registration__age": "வயது", + "patient_registration__comorbidities": "கூட்டு நோய்கள்", + "patient_registration__comorbidities__details": "விவரங்கள்", + "patient_registration__comorbidities__disease": "நோய்", + "patient_registration__contact": "அவசரத் தொடர்பு", + "patient_registration__gender": "பாலினம்", + "patient_registration__name": "பெயர்", + "patient_state": "நோயாளி நிலை", + "patient_status": "நோயாளியின் நிலை", + "patient_transfer_birth_match_note": "குறிப்பு: பரிமாற்றக் கோரிக்கையைச் செயல்படுத்த, பிறந்த ஆண்டு நோயாளியுடன் பொருந்த வேண்டும்.", + "phone": "தொலைபேசி", + "phone_no": "தொலைபேசி எண்.", + "phone_number": "தொலைபேசி எண்", + "phone_number_at_current_facility": "தற்போதைய வசதியில் உள்ள தொடர்பு நபரின் தொலைபேசி எண்", + "pincode": "பின்கோடு", + "please_enter_a_reason_for_the_shift": "மாற்றத்திற்கான காரணத்தை உள்ளிடவும்.", + "please_select_a_facility": "வசதியைத் தேர்ந்தெடுக்கவும்", + "please_select_breathlessness_level": "மூச்சுத் திணறல் நிலையைத் தேர்ந்தெடுக்கவும்", + "please_select_facility_type": "வசதி வகையைத் தேர்ந்தெடுக்கவும்", + "please_select_patient_category": "நோயாளி வகையைத் தேர்ந்தெடுக்கவும்", + "please_select_preferred_vehicle_type": "விருப்பமான வாகன வகையைத் தேர்ந்தெடுக்கவும்", + "please_select_status": "தயவுசெய்து நிலையைத் தேர்ந்தெடுக்கவும்", + "please_upload_a_csv_file": "CSV கோப்பைப் பதிவேற்றவும்", + "post_your_comment": "உங்கள் கருத்தை பதிவிடவும்", + "powered_by": "மூலம் இயக்கப்படுகிறது", + "preferred_facility_type": "விருப்பமான வசதி வகை", + "preferred_vehicle": "விருப்பமான வாகனம்", + "prescription": "மருந்துச்சீட்டு", + "prescription_details": "மருந்துச் சீட்டு விவரங்கள்", + "prescription_discontinued": "மருந்துச் சீட்டு நிறுத்தப்பட்டது", + "prescription_logs": "மருந்துப் பதிவுகள்", + "prescription_medication": "பரிந்துரைக்கப்பட்ட மருந்து", + "prescription_medications": "பரிந்துரைக்கப்பட்ட மருந்துகள்", + "prescriptions__dosage_frequency": "மருந்தளவு & அதிர்வெண்", + "prescriptions__medicine": "மருந்து", + "prescriptions__route": "பாதை", + "prescriptions__start_date": "அன்று பரிந்துரைக்கப்பட்டது", + "prev_sessions": "முந்தைய அமர்வுகள்", + "principal": "அதிபர்", + "principal_diagnosis": "முதன்மை நோயறிதல்", + "print": "அச்சிடுக", + "print_referral_letter": "பரிந்துரை கடிதத்தை அச்சிடுங்கள்", + "prn_prescription": "PRN மருந்து", + "prn_prescriptions": "PRN பரிந்துரைகள்", + "procedure_suggestions": "செயல்முறை பரிந்துரைகள்", + "provisional": "தற்காலிகமானது", + "ration_card__APL": "ஏபிஎல்", + "ration_card__BPL": "பிபிஎல்", + "ration_card__NO_CARD": "அட்டை இல்லாதவர்", + "reason": "காரணம்", + "reason_for_discontinuation": "நிறுத்தத்திற்கான காரணம்", + "reason_for_edit": "திருத்தத்திற்கான காரணம்", + "reason_for_referral": "பரிந்துரைக்கான காரணம்", + "reason_for_shift": "மாற்றத்திற்கான காரணம்", + "recommended_aspect_ratio_for": "பரிந்துரைக்கப்பட்ட தோற்ற விகிதம்", + "record": "ஆடியோ பதிவு", + "record_delete_confirm": "இந்தப் பதிவை நிச்சயமாக நீக்க விரும்புகிறீர்களா?", + "record_has_been_deleted_successfully": "பதிவு வெற்றிகரமாக நீக்கப்பட்டது.", + "record_updates": "பதிவு புதுப்பிப்புகள்", + "recording": "பதிவு செய்தல்", + "redirected_to_create_consultation": "குறிப்பு: ஆலோசனை படிவத்தை உருவாக்க நீங்கள் திருப்பி விடப்படுவீர்கள். பரிமாற்ற செயல்முறையை முடிக்க படிவத்தை பூர்த்தி செய்யவும்", + "referral_letter": "பரிந்துரை கடிதம்", + "referred_to": "குறிப்பிடப்படுகிறது", + "refresh_list": "பட்டியலைப் புதுப்பிக்கவும்", + "refuted": "மறுத்தார்", + "register_hospital": "மருத்துவமனை பதிவு", + "register_page_title": "மருத்துவமனை நிர்வாகியாக பதிவு செய்யுங்கள்", + "reload": "மீண்டும் ஏற்றவும்", + "remove": "அகற்று", + "rename": "மறுபெயரிடவும்", + "report": "அறிக்கை", + "req_atleast_one_digit": "குறைந்தது ஒரு இலக்கமாவது தேவை", + "req_atleast_one_lowercase": "குறைந்தபட்சம் ஒரு சிறிய எழுத்து தேவை", + "req_atleast_one_symbol": "குறைந்தது ஒரு சின்னம் தேவை", + "req_atleast_one_uppercase": "குறைந்தபட்சம் ஒரு பெரிய வழக்கு தேவை", + "request_description": "கோரிக்கையின் விளக்கம்", + "request_description_placeholder": "உங்கள் விளக்கத்தை இங்கே தட்டச்சு செய்யவும்", "request_title": "தலைப்பு கோரிக்கை", "request_title_placeholder": "உங்கள் தலைப்பை இங்கே தட்டச்சு செய்யவும்", + "required": "தேவை", "required_quantity": "தேவையான அளவு", - "request_description": "கோரிக்கையின் விளக்கம்", - "request_description_placeholder": "உங்கள் விளக்கத்தை இங்கே தட்டச்சு செய்யவும்", + "reset": "மீட்டமை", + "reset_password": "கடவுச்சொல்லை மீட்டமை", + "resource_request": "ஆதார கோரிக்கை", + "result": "முடிவு", + "result_date": "முடிவு தேதி", + "result_details": "முடிவு விவரங்கள்", + "resume": "ரெஸ்யூம்", + "retake": "மீண்டும் எடுக்கவும்", + "return_to_care": "CARE பக்கத்துக்குத் திரும்பு", + "return_to_login": "உள்நுழைவுக்குத் திரும்பு", + "return_to_password_reset": "கடவுச்சொல் மீட்டமைப்புக்குத் திரும்பு", + "return_to_patient_dashboard": "நோயாளி டாஷ்போர்டுக்குத் திரும்பு", + "right": "சரி", + "route": "பாதை", + "sample_collection_date": "மாதிரி சேகரிப்பு தேதி", + "sample_format": "மாதிரி வடிவம்", + "sample_type": "மாதிரி வகை", + "save": "சேமிக்கவும்", + "save_and_continue": "சேமித்து தொடரவும்", + "save_investigation": "விசாரணையைச் சேமிக்கவும்", + "scan_asset_qr": "அசெட் க்யூஆர் ஸ்கேன்!", + "search_by_username": "பயனர்பெயர் மூலம் தேடவும்", + "search_for_facility": "வசதியைத் தேடுங்கள்", + "search_icd11_placeholder": "ICD-11 நோய் கண்டறிதல்களைத் தேடவும்", + "search_investigation_placeholder": "தேடல் விசாரணை & குழுக்கள்", + "search_patient": "நோயாளியைத் தேடுங்கள்", "search_resource": "தேடல் ஆதாரம்", - "emergency": "அவசரநிலை", - "up_shift": "அப் ஷிப்ட்", - "antenatal": "முற்பிறவி", - "phone_no": "தொலைபேசி எண்.", - "patient_name": "நோயாளி பெயர்", - "disease_status": "நோய் நிலை", - "breathlessness_level": "மூச்சுத்திணறல் நிலை", - "assigned_facility": "வசதி ஒதுக்கப்பட்டுள்ளது", - "origin_facility": "தற்போதைய வசதி", - "shifting_approval_facility": "ஒப்புதல் வசதியை மாற்றுதல்", + "select": "தேர்ந்தெடு", + "select_date": "தேதியைத் தேர்ந்தெடுக்கவும்", + "select_facility_for_discharged_patients_warning": "டிஸ்சார்ஜ் செய்யப்பட்ட நோயாளிகளைப் பார்க்க வசதியைத் தேர்ந்தெடுக்க வேண்டும்.", + "select_for_administration": "நிர்வாகத்திற்கு தேர்ந்தெடுக்கவும்", + "select_groups": "குழுக்களைத் தேர்ந்தெடுக்கவும்", + "select_investigation": "விசாரணைகளைத் தேர்ந்தெடு (எல்லா விசாரணைகளும் இயல்பாகவே தேர்ந்தெடுக்கப்படும்)", + "select_investigation_groups": "விசாரணைக் குழுக்களைத் தேர்ந்தெடுக்கவும்", + "select_investigations": "விசாரணைகளைத் தேர்ந்தெடுக்கவும்", + "select_local_body": "உள்ளாட்சி அமைப்பைத் தேர்ந்தெடுக்கவும்", + "select_skills": "சில திறன்களைத் தேர்ந்தெடுத்து சேர்க்கவும்", + "select_wards": "வார்டுகளைத் தேர்ந்தெடுக்கவும்", + "send_email": "மின்னஞ்சல் அனுப்பவும்", + "send_reset_link": "மீட்டமை இணைப்பை அனுப்பவும்", + "serial_number": "வரிசை எண்", + "serviced_on": "சேவை செய்யப்பட்டது", + "session_expired": "அமர்வு காலாவதியானது", + "session_expired_msg": "உங்கள் அமர்வு காலாவதியானது போல் தெரிகிறது. இது செயலற்ற தன்மை காரணமாக இருக்கலாம். தொடர மீண்டும் உள்நுழையவும்.", + "set_average_weekly_working_hours_for": "சராசரி வாராந்திர வேலை நேரத்தை அமைக்கவும்", + "settings_and_filters": "அமைப்புகள் மற்றும் வடிப்பான்கள்", + "severity_of_breathlessness": "மூச்சுத் திணறலின் தீவிரம்", + "shift_request_updated_successfully": "ஷிப்ட் கோரிக்கை வெற்றிகரமாக புதுப்பிக்கப்பட்டது", "shifting": "மாறுதல்", - "search_patient": "நோயாளியைத் தேடுங்கள்", - "list_view": "பட்டியல் காட்சி", - "comment_min_length": "கருத்து குறைந்தது 1 எழுத்தையாவது கொண்டிருக்க வேண்டும்", - "comment_added_successfully": "கருத்து வெற்றிகரமாக சேர்க்கப்பட்டது", - "post_your_comment": "உங்கள் கருத்தை பதிவிடவும்", + "shifting_approval_facility": "ஒப்புதல் வசதியை மாற்றுதல்", "shifting_approving_facility": "அங்கீகரிக்கும் வசதியை மாற்றுகிறது", - "is_emergency_case": "அவசர வழக்கு", - "is_upshift_case": "அப்ஷிஃப்ட் கேஸ்", - "is_antenatal": "பிறப்புக்கு முந்தையது", - "patient_phone_number": "நோயாளியின் தொலைபேசி எண்", - "created_date": "உருவாக்கப்பட்ட தேதி", - "modified_date": "மாற்றியமைக்கப்பட்ட தேதி", - "no_patients_to_show": "காட்ட நோயாளிகள் இல்லை.", - "shifting_status": "நிலை மாறுகிறது", - "transfer_to_receiving_facility": "பெறும் வசதிக்கு இடமாற்றம்", - "confirm_transfer_complete": "பரிமாற்றம் முடிந்தது என்பதை உறுதிப்படுத்தவும்!", - "mark_transfer_complete_confirmation": "இந்தப் பரிமாற்றம் முடிந்ததாக நிச்சயமாகக் குறிக்க விரும்புகிறீர்களா? இந்த நோயாளியை ஆரிஜின் வசதி இனி அணுகாது", - "board_view": "பலகை காட்சி", + "shifting_approving_facility_can_not_be_empty": "ஷிஃப்டிங் அங்கீகரிக்கும் வசதி காலியாக இருக்க முடியாது.", "shifting_deleted": "ஷிஃப்டிங் பதிவு வெற்றிகரமாக நீக்கப்பட்டது.", - "details_of_shifting_approving_facility": "ஒப்புதல் வசதியை மாற்றுவதற்கான விவரங்கள்", - "details_of_assigned_facility": "ஒதுக்கப்பட்ட வசதியின் விவரங்கள்", - "details_of_origin_facility": "மூல வசதியின் விவரங்கள்", - "details_of_patient": "நோயாளியின் விவரங்கள்", - "record_delete_confirm": "இந்தப் பதிவை நிச்சயமாக நீக்க விரும்புகிறீர்களா?", - "phone_number_at_current_facility": "தற்போதைய வசதியில் உள்ள தொடர்பு நபரின் தொலைபேசி எண்", - "authorize_shift_delete": "ஷிப்ட் நீக்கத்தை அங்கீகரிக்கவும்", - "delete_record": "பதிவை நீக்கு", - "severity_of_breathlessness": "மூச்சுத் திணறலின் தீவிரம்", - "facility_preference": "வசதி விருப்பம்", - "vehicle_preference": "வாகன விருப்பம்", - "is_up_shift": "மாறிவிட்டது", - "ambulance_driver_name": "ஆம்புலன்ஸ் ஓட்டுநரின் பெயர்", - "ambulance_phone_number": "ஆம்புலன்ஸின் தொலைபேசி எண்", - "ambulance_number": "ஆம்புலன்ஸ் எண்", - "is_emergency": "அவசரநிலை", - "contact_person_at_the_facility": "தற்போதைய வசதியில் உள்ள நபரைத் தொடர்பு கொள்ளவும்", - "update_status_details": "நிலை/விவரங்களைப் புதுப்பிக்கவும்", "shifting_details": "விவரங்களை மாற்றுகிறது", - "auto_generated_for_care": "பராமரிப்புக்காக தானாக உருவாக்கப்பட்டுள்ளது", - "approved_by_district_covid_control_room": "மாவட்ட கோவிட் கட்டுப்பாட்டு அறையால் அங்கீகரிக்கப்பட்டது", - "treatment_summary": "சிகிச்சை சுருக்கம்", - "reason_for_referral": "பரிந்துரைக்கான காரணம்", - "referred_to": "குறிப்பிடப்படுகிறது", - "covid_19_cat_gov": "அரசாங்கத்தின்படி கோவிட்_19 மருத்துவ வகை. கேரளா வழிகாட்டுதல் (A/B/C)", - "district_program_management_supporting_unit": "மாவட்ட திட்ட மேலாண்மை துணை அலகு", - "name_of_hospital": "மருத்துவமனையின் பெயர்", - "passport_number": "பாஸ்போர்ட் எண்", + "shifting_status": "நிலை மாறுகிறது", + "show_all": "அனைத்தையும் காட்டு", + "show_all_notifications": "அனைத்தையும் காட்டு", + "show_default_presets": "இயல்புநிலை முன்னமைவுகளைக் காட்டு", + "show_patient_presets": "நோயாளியின் முன்னமைவுகளைக் காட்டு", + "show_unread_notifications": "படிக்காததைக் காட்டு", + "sign_out": "வெளியேறு", + "something_went_wrong": "ஏதோ தவறாகிவிட்டது..!", + "something_wrong": "ஏதோ தவறு நடந்துவிட்டது! பின்னர் மீண்டும் முயற்சிக்கவும்!", + "sort_by": "வரிசைப்படுத்து", + "source": "ஆதாரம்", + "srf_id": "SRF ஐடி", + "staff_list": "பணியாளர்கள் பட்டியல்", + "start_dosage": "தொடக்க மருந்தளவு", + "state": "மாநிலம்", + "status": "நிலை", + "stop": "நிறுத்து", + "stream_stop_due_to_inativity": "லைவ் ஃபீட் செயல்படாததால் ஸ்ட்ரீமிங் நிறுத்தப்படும்", + "stream_stopped_due_to_inativity": "லைவ் ஃபீட் செயல்படாததால் ஸ்ட்ரீமிங் நிறுத்தப்பட்டது", + "sub_category": "துணை வகை", + "submit": "சமர்ப்பிக்கவும்", + "submitting": "சமர்ப்பிக்கிறது", + "subscribe": "குழுசேர்", + "subscribe_on_this_device": "இந்தச் சாதனத்தில் குழுசேரவும்", + "subscription_error": "சந்தா பிழை", + "suggested_investigations": "பரிந்துரைக்கப்பட்ட விசாரணைகள்", + "summary": "சுருக்கம்", + "support": "ஆதரவு", + "switch": "மாறவும்", + "systolic": "சிஸ்டாலிக்", + "tachycardia": "டாக்ரிக்கார்டியா", + "target_dosage": "இலக்கு அளவு", "test_type": "சோதனை வகை", - "medical_worker": "மருத்துவ பணியாளர்", - "error_deleting_shifting": "பதிவை மாற்றுவதில் பிழை", + "titrate_dosage": "டைட்ரேட் அளவு", + "to_be_conducted": "நடத்தப்பட வேண்டும்", + "total_beds": "மொத்த படுக்கைகள்", + "total_users": "மொத்த பயனர்கள்", + "transfer_in_progress": "இடமாற்றம் நடைபெறுகிறது", + "transfer_to_receiving_facility": "பெறும் வசதிக்கு இடமாற்றம்", + "travel_within_last_28_days": "உள்நாட்டு/சர்வதேச பயணம் (கடந்த 28 நாட்களுக்குள்)", + "treating_doctor": "சிகிச்சை அளிக்கும் மருத்துவர்", + "treatment_summary": "சிகிச்சை சுருக்கம்", + "treatment_summary__head_title": "சிகிச்சை சுருக்கம்", + "treatment_summary__heading": "இடைக்கால சிகிச்சை சுருக்கம்", + "treatment_summary__print": "அச்சு சிகிச்சை சுருக்கம்", + "try_again_later": "பிறகு முயற்சிக்கவும்!", "type_any_extra_comments_here": "கூடுதல் கருத்துகளை இங்கே தட்டச்சு செய்யவும்", + "type_b_cylinders": "பி வகை சிலிண்டர்கள்", + "type_c_cylinders": "சி வகை சிலிண்டர்கள்", + "type_d_cylinders": "டி வகை சிலிண்டர்கள்", + "type_to_search": "தேட தட்டச்சு செய்யவும்", + "type_your_comment": "உங்கள் கருத்தை உள்ளிடவும்", "type_your_reason_here": "உங்கள் காரணத்தை இங்கே தட்டச்சு செய்யவும்", - "reason_for_shift": "மாற்றத்திற்கான காரணம்", - "preferred_facility_type": "விருப்பமான வசதி வகை", - "preferred_vehicle": "விருப்பமான வாகனம்", - "is_it_upshift": "அது உயர்வானதா", - "is_this_an_upshift": "இது ஒரு உயர்வுதானா?", - "is_this_an_emergency": "இது அவசரநிலையா?", - "what_facility_assign_the_patient_to": "நோயாளியை எந்த வசதிக்கு ஒதுக்க விரும்புகிறீர்கள்", - "name_of_shifting_approving_facility": "ஷிஃப்டிங் அங்கீகரிக்கும் வசதியின் பெயர்", + "unconfirmed": "உறுதி செய்யப்படவில்லை", + "unique_id": "தனித்துவமான ஐடி", + "unknown": "தெரியவில்லை", + "unsubscribe": "குழுவிலகவும்", + "unsubscribe_failed": "குழுவிலக முடியவில்லை.", + "unsupported_browser": "ஆதரிக்கப்படாத உலாவி", + "unsupported_browser_description": "உங்கள் உலாவி ({{name}} பதிப்பு {{version}}) ஆதரிக்கப்படவில்லை. உங்கள் உலாவியை சமீபத்திய பதிப்பிற்கு புதுப்பிக்கவும் அல்லது சிறந்த அனுபவத்திற்காக ஆதரிக்கப்படும் உலாவிக்கு மாறவும்.", + "up": "மேலே", + "up_shift": "அப் ஷிப்ட்", + "update": "புதுப்பிக்கவும்", + "update_asset": "சொத்தைப் புதுப்பிக்கவும்", + "update_asset_service_record": "சொத்து சேவை பதிவை புதுப்பிக்கவும்", + "update_bed": "படுக்கையைப் புதுப்பிக்கவும்", + "update_facility": "மேம்படுத்தல் வசதி", + "update_facility_middleware_success": "வசதி மிடில்வேர் வெற்றிகரமாக புதுப்பிக்கப்பட்டது", + "update_log": "புதுப்பிப்பு பதிவேடு", + "update_record": "பதிவைப் புதுப்பிக்கவும்", + "update_record_for_asset": "சொத்துக்கான பதிவைப் புதுப்பிக்கவும்", "update_shift_request": "ஷிப்ட் கோரிக்கையைப் புதுப்பிக்கவும்", - "shift_request_updated_successfully": "ஷிப்ட் கோரிக்கை வெற்றிகரமாக புதுப்பிக்கப்பட்டது", - "please_enter_a_reason_for_the_shift": "மாற்றத்திற்கான காரணத்தை உள்ளிடவும்.", - "please_select_preferred_vehicle_type": "விருப்பமான வாகன வகையைத் தேர்ந்தெடுக்கவும்", - "please_select_facility_type": "வசதி வகையைத் தேர்ந்தெடுக்கவும்", - "please_select_breathlessness_level": "மூச்சுத் திணறல் நிலையைத் தேர்ந்தெடுக்கவும்", - "please_select_a_facility": "வசதியைத் தேர்ந்தெடுக்கவும்", - "please_select_status": "தயவுசெய்து நிலையைத் தேர்ந்தெடுக்கவும்", - "please_select_patient_category": "நோயாளி வகையைத் தேர்ந்தெடுக்கவும்", - "shifting_approving_facility_can_not_be_empty": "ஷிஃப்டிங் அங்கீகரிக்கும் வசதி காலியாக இருக்க முடியாது.", - "redirected_to_create_consultation": "குறிப்பு: ஆலோசனை படிவத்தை உருவாக்க நீங்கள் திருப்பி விடப்படுவீர்கள். பரிமாற்ற செயல்முறையை முடிக்க படிவத்தை பூர்த்தி செய்யவும்", - "mark_this_transfer_as_complete_question": "இந்தப் பரிமாற்றம் முடிந்ததாக நிச்சயமாகக் குறிக்க விரும்புகிறீர்களா? இந்த நோயாளியை ஆரிஜின் வசதி இனி அணுகாது", - "transfer_in_progress": "இடமாற்றம் நடைபெறுகிறது", - "patient_state": "நோயாளி நிலை", - "yet_to_be_decided": "இன்னும் முடிவு செய்யப்படவில்லை", - "awaiting_destination_approval": "இலக்கு அனுமதிக்காக காத்திருக்கிறது", + "update_status_details": "நிலை/விவரங்களைப் புதுப்பிக்கவும்", + "updated": "புதுப்பிக்கப்பட்டது", + "updating": "புதுப்பிக்கிறது", + "upload": "பதிவேற்றவும்", + "upload_an_image": "ஒரு படத்தை பதிவேற்றவும்", + "upload_headings__consultation": "புதிய ஆலோசனைக் கோப்பைப் பதிவேற்றவும்", + "upload_headings__patient": "புதிய நோயாளி கோப்பை பதிவேற்றவும்", + "upload_headings__sample_report": "மாதிரி அறிக்கையைப் பதிவேற்றவும்", + "upload_headings__supporting_info": "துணைத் தகவலைப் பதிவேற்றவும்", + "uploading": "பதிவேற்றுகிறது", + "user_deleted_successfuly": "பயனர் வெற்றிகரமாக நீக்கப்பட்டார்", "user_management": "பயனர் மேலாண்மை", - "facilities": "வசதிகள்", - "add_new_user": "புதிய பயனரைச் சேர்க்கவும்", - "no_users_found": "பயனர்கள் இல்லை", - "home_facility": "வீட்டு வசதி", - "no_home_facility": "வீட்டு வசதி ஒதுக்கப்படவில்லை", - "clear_home_facility": "தெளிவான வீட்டு வசதி", - "linked_facilities": "இணைக்கப்பட்ட வசதிகள்", - "no_linked_facilities": "இணைக்கப்பட்ட வசதிகள் இல்லை", - "average_weekly_working_hours": "சராசரி வாராந்திர வேலை நேரம்", - "set_average_weekly_working_hours_for": "சராசரி வாராந்திர வேலை நேரத்தை அமைக்கவும்", - "search_by_username": "பயனர்பெயர் மூலம் தேடவும்", - "last_online": "கடைசியாக ஆன்லைன்", - "total_users": "மொத்த பயனர்கள்" -} \ No newline at end of file + "username": "பயனர்பெயர்", + "users": "பயனர்கள்", + "vehicle_preference": "வாகன விருப்பம்", + "vendor_name": "விற்பனையாளர் பெயர்", + "view": "காண்க", + "view_abdm_records": "ABDM பதிவுகளைப் பார்க்கவும்", + "view_asset": "சொத்துக்களைப் பார்க்கவும்", + "view_details": "விவரங்களைக் காண்க", + "view_faciliy": "பார்வை வசதி", + "view_patients": "நோயாளிகளைப் பார்க்கவும்", + "view_users": "பயனர்களைக் காண்க", + "virtual_nursing_assistant": "மெய்நிகர் நர்சிங் உதவியாளர்", + "ward": "வார்டு", + "warranty_amc_expiry": "உத்தரவாதம் / AMC காலாவதி", + "what_facility_assign_the_patient_to": "நோயாளியை எந்த வசதிக்கு ஒதுக்க விரும்புகிறீர்கள்", + "why_the_asset_is_not_working": "சொத்து ஏன் வேலை செய்யவில்லை?", + "working_status": "வேலை நிலை", + "yes": "ஆம்", + "yet_to_be_decided": "இன்னும் முடிவு செய்யப்படவில்லை", + "you_need_at_least_a_location_to_create_an_assest": "ஒரு அசெஸ்ட்டை உருவாக்க குறைந்தபட்சம் ஒரு இருப்பிடமாவது தேவை.", + "zoom_in": "பெரிதாக்கவும்", + "zoom_out": "பெரிதாக்கவும்" +} From ef3403a327a444c9de01a640077530e172b9150b Mon Sep 17 00:00:00 2001 From: Shivank Kacker Date: Thu, 17 Oct 2024 15:36:13 +0530 Subject: [PATCH 24/25] Updated UI for facility cards and avatar component (#8782) --- cypress/pageobject/Facility/FacilityHome.ts | 2 +- src/CAREUI/display/Count.tsx | 10 +- src/Components/Common/Avatar.tsx | 62 ++++++----- .../Common/Sidebar/SidebarUserCard.tsx | 2 +- src/Components/Facility/FacilityBlock.tsx | 14 +-- src/Components/Facility/FacilityCard.tsx | 105 ++++++------------ src/Components/Facility/FacilityHome.tsx | 57 ++++------ src/Components/Patient/ManagePatients.tsx | 7 +- src/Locale/en.json | 3 + 9 files changed, 110 insertions(+), 152 deletions(-) diff --git a/cypress/pageobject/Facility/FacilityHome.ts b/cypress/pageobject/Facility/FacilityHome.ts index e021171ff0a..dea7de0e7b6 100644 --- a/cypress/pageobject/Facility/FacilityHome.ts +++ b/cypress/pageobject/Facility/FacilityHome.ts @@ -72,7 +72,7 @@ class FacilityHome { } verifyOccupancyBadgeVisibility() { - cy.get("#occupany-badge").should("be.visible"); + cy.get('[data-test-id="occupancy-badge"]').should("be.visible"); } verifyAndCloseNotifyModal() { diff --git a/src/CAREUI/display/Count.tsx b/src/CAREUI/display/Count.tsx index 997b58794eb..6b28ca4f962 100644 --- a/src/CAREUI/display/Count.tsx +++ b/src/CAREUI/display/Count.tsx @@ -11,15 +11,13 @@ interface Props { export default function CountBlock(props: Props) { return ( -
    -
    -
    +
    +
    +
    -
    +
    {props.text}
    {props.loading ? ( diff --git a/src/Components/Common/Avatar.tsx b/src/Components/Common/Avatar.tsx index a519901216b..e4d42dd72ae 100644 --- a/src/Components/Common/Avatar.tsx +++ b/src/Components/Common/Avatar.tsx @@ -1,4 +1,5 @@ -import React from "react"; +import { cn } from "@/lib/utils"; +import React, { useEffect, useRef, useState } from "react"; const colors: string[] = [ "#E6F3FF", // Light Blue @@ -44,43 +45,54 @@ const initials = (name: string): string => { interface AvatarProps { colors?: [string, string]; name: string; + imageUrl?: string; className?: string; - square?: boolean; // New prop to determine if the avatar should be square } const Avatar: React.FC = ({ colors: propColors, name, + imageUrl, className, - square = false, // Default to false for backwards compatibility }) => { - const [bgColor, fgColor] = propColors || toColor(name); + const [bgColor] = propColors || toColor(name); + const [width, setWidth] = useState(0); + const avatarRef = useRef(null); + + useEffect(() => { + const updateWidth = () => { + const avatarRect = avatarRef.current?.getBoundingClientRect(); + const width = avatarRect?.width || 0; + setWidth(width); + }; + updateWidth(); + document.addEventListener("resize", updateWidth); + return () => document.removeEventListener("resize", updateWidth); + }, []); return ( - - {square ? ( - + {imageUrl ? ( + {name} ) : ( - +
    {initials(name)}
    )} - - {initials(name)} - - +
    ); }; diff --git a/src/Components/Common/Sidebar/SidebarUserCard.tsx b/src/Components/Common/Sidebar/SidebarUserCard.tsx index 825507ffb25..9effc947dd6 100644 --- a/src/Components/Common/Sidebar/SidebarUserCard.tsx +++ b/src/Components/Common/Sidebar/SidebarUserCard.tsx @@ -40,7 +40,7 @@ const SidebarUserCard: React.FC = ({ shrinked }) => {
    diff --git a/src/Components/Facility/FacilityBlock.tsx b/src/Components/Facility/FacilityBlock.tsx index 3232321637f..0ad87b050c5 100644 --- a/src/Components/Facility/FacilityBlock.tsx +++ b/src/Components/Facility/FacilityBlock.tsx @@ -24,15 +24,11 @@ export default function FacilityBlock(props: { return ( -
    - {facility.read_cover_image_url ? ( - - ) : ( - - )} +
    +
    {facility.name} diff --git a/src/Components/Facility/FacilityCard.tsx b/src/Components/Facility/FacilityCard.tsx index 69b5b9d421e..e874a0f85c0 100644 --- a/src/Components/Facility/FacilityCard.tsx +++ b/src/Components/Facility/FacilityCard.tsx @@ -9,7 +9,6 @@ import CareIcon from "../../CAREUI/icons/CareIcon"; import { formatPhoneNumber, parsePhoneNumber } from "../../Utils/utils"; import DialogModal from "../Common/Dialog"; import TextAreaFormField from "../Form/FormFields/TextAreaFormField"; -import { classNames } from "../../Utils/utils"; import request from "../../Utils/request/request"; import routes from "../../Redux/api"; import careConfig from "@careConfig"; @@ -52,20 +51,18 @@ export const FacilityCard = (props: { return (
    -
    +
    - {(facility.read_cover_image_url && ( - {facility.name} - )) || } +
    @@ -73,21 +70,12 @@ export const FacilityCard = (props: {
    - {(facility.read_cover_image_url && ( - {facility.name} - )) || ( - - )} +
    {facility.kasp_empanelled && ( @@ -99,12 +87,27 @@ export const FacilityCard = (props: { className="flex flex-wrap items-center justify-between" id="facility-name-card" > - - {facility.name} - +
    + + {facility.name} + +
    0.85 ? "justify-center rounded-md border border-red-600 bg-red-500 p-1 font-bold text-white" : "text-secondary-700"}`} + > + + {t("live_patients_total_beds")} + {" "} + +
    + {t("occupancy")}: {facility.patient_count} /{" "} + {facility.bed_count}{" "} +
    +
    +
    - View CNS + {t("view_cns")}
    +
    -
    +
    {/*
    */}
    -
    - 0.85 - ? "button-danger-border bg-red-500" - : "button-primary-border bg-primary-100" - }`} - > - - Live Patients / Total beds - {" "} - - 0.85 - ? "text-white" - : "text-primary-600", - )} - />{" "} -
    - 0.85 - ? "text-white" - : "text-secondary-700" - }`} - > - Occupancy: {facility.patient_count} /{" "} - {facility.bed_count}{" "} -
    {" "} -
    {
    ); - const CoverImage = () => ( - {facilityData?.name} - ); - return ( { onDelete={() => facilityFetch()} facility={facilityData ?? ({} as FacilityModel)} /> - {hasCoverImage ? ( -
    - - {editCoverImageTooltip} -
    - ) : ( -
    - hasPermissionToEditCoverImage && setEditCoverImage(true) - } - > - - {editCoverImageTooltip} -
    - )} + +
    hasPermissionToEditCoverImage && setEditCoverImage(true)} + > + + {editCoverImageTooltip} +
    { hasPermissionToEditCoverImage && setEditCoverImage(true) } > - {hasCoverImage ? ( - - ) : ( -
    - -
    - )} +
    + +
    + {editCoverImageTooltip}
    diff --git a/src/Components/Patient/ManagePatients.tsx b/src/Components/Patient/ManagePatients.tsx index 5259909bebe..7d49ffdaad1 100644 --- a/src/Components/Patient/ManagePatients.tsx +++ b/src/Components/Patient/ManagePatients.tsx @@ -494,7 +494,7 @@ export const PatientManager = () => { const children = (
    { ) : (
    )} diff --git a/src/Locale/en.json b/src/Locale/en.json index a7c2d1a0c21..d4808fa185b 100644 --- a/src/Locale/en.json +++ b/src/Locale/en.json @@ -642,6 +642,7 @@ "litres_per_day": "Litres/day", "live": "Live", "live_monitoring": "Live Monitoring", + "live_patients_total_beds": "Live Patients / Total beds", "load_more": "Load More", "loading": "Loading...", "local_body": "Local body", @@ -732,6 +733,7 @@ "nursing_care": "Nursing Care", "nursing_information": "Nursing Information", "nutrition": "Nutrition", + "occupancy": "Occupancy", "occupation": "Occupation", "on": "On", "ongoing_medications": "Ongoing Medications", @@ -1036,6 +1038,7 @@ "view": "View", "view_abdm_records": "View ABDM Records", "view_asset": "View Assets", + "view_cns": "View CNS", "view_details": "View Details", "view_faciliy": "View Facility", "view_patients": "View Patients", From 8d4640b4a04c08a0661b14646338b04f51170210 Mon Sep 17 00:00:00 2001 From: Rithvik Nishad Date: Thu, 17 Oct 2024 15:37:44 +0530 Subject: [PATCH 25/25] Sort only `en` locale file in the sort-locale script; Update docker and CI to use `npm run install-all` (#8813) --- .devcontainer/devcontainer.json | 2 +- .github/workflows/cypress.yaml | 2 +- Dockerfile | 2 ++ scripts/sort-locales.js | 29 +++++++++-------------------- 4 files changed, 13 insertions(+), 22 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 4fe94183a2f..40e5259b1c6 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -26,7 +26,7 @@ "cpus": 4 }, "waitFor": "onCreateCommand", - "postCreateCommand": "npm install", + "postCreateCommand": "npm run install-all", "postAttachCommand": { "server": "npm run dev" }, diff --git a/.github/workflows/cypress.yaml b/.github/workflows/cypress.yaml index 500dbd92be0..0f588568bbc 100644 --- a/.github/workflows/cypress.yaml +++ b/.github/workflows/cypress.yaml @@ -70,7 +70,7 @@ jobs: node-version: "20" - name: Install dependencies 📦 - run: npm install + run: npm run install-all - name: Build ⚙️ run: npm run build diff --git a/Dockerfile b/Dockerfile index 5061a977585..3a96ab3c28a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,6 +13,8 @@ RUN npm install COPY . . +RUN npm run setup + RUN npm run build diff --git a/scripts/sort-locales.js b/scripts/sort-locales.js index cf365a41d09..adff586a93b 100644 --- a/scripts/sort-locales.js +++ b/scripts/sort-locales.js @@ -1,26 +1,15 @@ // eslint-disable-next-line @typescript-eslint/no-var-requires const fs = require("fs"); -// eslint-disable-next-line @typescript-eslint/no-var-requires -const path = require("path"); - -const directory = "src/Locale"; -fs.readdir(directory, (err, files) => { - if (err) throw err; +const file = "src/Locale/en.json"; - files.forEach((file) => { - if (file.endsWith(".json")) { - const filePath = path.join(directory, file); - const data = JSON.parse(fs.readFileSync(filePath, "utf8")); +const data = JSON.parse(fs.readFileSync(file, "utf8")); - const sortedData = Object.keys(data) - .sort() - .reduce((acc, key) => { - acc[key] = data[key]; - return acc; - }, {}); +const sortedData = Object.keys(data) + .sort() + .reduce((acc, key) => { + acc[key] = data[key]; + return acc; + }, {}); - fs.writeFileSync(filePath, JSON.stringify(sortedData, null, 2) + "\n"); - } - }); -}); +fs.writeFileSync(file, JSON.stringify(sortedData, null, 2) + "\n");