fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <string>
  4. #include <map>
  5. #include <ctime>
  6. #include <iomanip>
  7. #include <fstream>
  8. #include <sstream>
  9. #include <cstdlib>
  10. #include <algorithm>
  11. #include <limits>
  12.  
  13. using namespace std;
  14.  
  15. // Clinic Information
  16. const string CLINIC_NAME = "IDREESI CLINIC AND DIAGNOSTICS";
  17. const string DOCTOR_NAME = "Dr. Muhammad Tayyab";
  18. const string DOCTOR_QUALIFICATION = "Healthcare Professional";
  19.  
  20. struct Patient {
  21. string hnNumber;
  22. string mrNumber;
  23. string name;
  24. int age;
  25. string gender;
  26. string contact;
  27. string date;
  28. string address;
  29. string physician;
  30. string diagnosis;
  31. vector<string> medications;
  32. map<string, string> labTests;
  33. };
  34.  
  35. vector<Patient> patients;
  36. int currentPatientIndex = -1;
  37.  
  38. // Utility Functions
  39. string getCurrentDate() {
  40. time_t now = time(0);
  41. tm *ltm = localtime(&now);
  42. stringstream ss;
  43. ss << setfill('0') << setw(2) << ltm->tm_mday << "/"
  44. << setw(2) << 1 + ltm->tm_mon << "/"
  45. << 1900 + ltm->tm_year;
  46. return ss.str();
  47. }
  48.  
  49. string generateMRNumber() {
  50. static int counter = 1;
  51. stringstream ss;
  52. ss << "MR-" << setfill('0') << setw(4) << counter++;
  53. return ss.str();
  54. }
  55.  
  56. string generateHNNumber() {
  57. static int counter = 1000;
  58. stringstream ss;
  59. ss << "HN-" << counter++;
  60. return ss.str();
  61. }
  62.  
  63. void clearScreen() {
  64. #ifdef _WIN32
  65. system("cls");
  66. #else
  67. system("clear");
  68. #endif
  69. }
  70.  
  71. void pressEnterToContinue() {
  72. cout << "\nPress Enter to continue...";
  73. cin.ignore(numeric_limits<streamsize>::max(), '\n');
  74. cin.get();
  75. }
  76.  
  77. // Core Functions
  78. bool login() {
  79. string username, password;
  80. clearScreen();
  81. cout << "========================================\n";
  82. cout << " " << CLINIC_NAME << "\n";
  83. cout << " CLINIC LOGIN SYSTEM\n";
  84. cout << "========================================\n";
  85. cout << "Username: ";
  86. getline(cin, username);
  87. cout << "Password: ";
  88. getline(cin, password);
  89.  
  90. if (username == "admin" && password == "1234") {
  91. cout << "\nLogin successful!\n";
  92. pressEnterToContinue();
  93. return true;
  94. } else {
  95. cout << "\nInvalid credentials!\n";
  96. pressEnterToContinue();
  97. return false;
  98. }
  99. }
  100.  
  101. void registerPatient() {
  102. Patient p;
  103. p.hnNumber = generateHNNumber();
  104. p.mrNumber = generateMRNumber();
  105. p.date = getCurrentDate();
  106.  
  107. clearScreen();
  108. cout << "========================================\n";
  109. cout << " " << CLINIC_NAME << "\n";
  110. cout << " NEW PATIENT REGISTRATION\n";
  111. cout << "========================================\n";
  112. cout << "HN Number: " << p.hnNumber << "\n";
  113. cout << "MR Number: " << p.mrNumber << "\n";
  114. cout << "Date: " << p.date << "\n\n";
  115.  
  116. cout << "Full Name: ";
  117. getline(cin, p.name);
  118.  
  119. cout << "Age: ";
  120. while (!(cin >> p.age) || p.age <= 0 || p.age > 120) {
  121. cin.clear();
  122. cin.ignore(numeric_limits<streamsize>::max(), '\n');
  123. cout << "Invalid age. Please enter between 1-120: ";
  124. }
  125. cin.ignore();
  126.  
  127. cout << "Gender (M/F/O): ";
  128. while (true) {
  129. getline(cin, p.gender);
  130. if (p.gender == "M" || p.gender == "F" || p.gender == "O") break;
  131. cout << "Invalid input. Please enter M, F, or O: ";
  132. }
  133.  
  134. cout << "Contact: ";
  135. getline(cin, p.contact);
  136.  
  137. cout << "Address: ";
  138. getline(cin, p.address);
  139.  
  140. cout << "Referring Physician: ";
  141. getline(cin, p.physician);
  142.  
  143. patients.push_back(p);
  144. currentPatientIndex = patients.size() - 1;
  145. cout << "\nPatient registered successfully!\n";
  146. pressEnterToContinue();
  147. }
  148.  
  149. void viewAllPatients() {
  150. clearScreen();
  151. cout << "========================================\n";
  152. cout << " " << CLINIC_NAME << "\n";
  153. cout << " PATIENT REGISTRY\n";
  154. cout << "========================================\n";
  155.  
  156. if(patients.empty()) {
  157. cout << "No patients registered!\n";
  158. } else {
  159. for(int i = 0; i < patients.size(); i++) {
  160. cout << i+1 << ". " << patients[i].hnNumber << " | "
  161. << patients[i].name << " | "
  162. << patients[i].age << " yrs | "
  163. << patients[i].gender << "\n";
  164. }
  165.  
  166. cout << "\nEnter patient number to select (0 to cancel): ";
  167. int choice;
  168. while (!(cin >> choice) || choice < 0 || choice > patients.size()) {
  169. cin.clear();
  170. cin.ignore(numeric_limits<streamsize>::max(), '\n');
  171. cout << "Invalid input. Please enter 0-" << patients.size() << ": ";
  172. }
  173. cin.ignore();
  174.  
  175. if(choice > 0) {
  176. currentPatientIndex = choice - 1;
  177. cout << "\nSelected: " << patients[currentPatientIndex].name << "\n";
  178. cout << "HN: " << patients[currentPatientIndex].hnNumber << "\n";
  179. cout << "MR: " << patients[currentPatientIndex].mrNumber << "\n";
  180. }
  181. }
  182. pressEnterToContinue();
  183. }
  184.  
  185. void enterDiagnosis() {
  186. if(currentPatientIndex == -1) {
  187. cout << "Please select a patient first!\n";
  188. pressEnterToContinue();
  189. return;
  190. }
  191.  
  192. clearScreen();
  193. cout << "========================================\n";
  194. cout << " " << CLINIC_NAME << "\n";
  195. cout << " DIAGNOSIS & PRESCRIPTION\n";
  196. cout << "========================================\n";
  197. cout << "Patient: " << patients[currentPatientIndex].name << "\n\n";
  198.  
  199. cout << "Enter Diagnosis: ";
  200. getline(cin, patients[currentPatientIndex].diagnosis);
  201.  
  202. patients[currentPatientIndex].medications.clear();
  203. while(true) {
  204. string med;
  205. cout << "Enter Medication (or 'done' to finish): ";
  206. getline(cin, med);
  207.  
  208. if(med == "done") break;
  209. if(!med.empty()) {
  210. patients[currentPatientIndex].medications.push_back(med);
  211. }
  212. }
  213.  
  214. cout << "\nDiagnosis and prescription saved!\n";
  215. pressEnterToContinue();
  216. }
  217.  
  218. void laboratoryTests() {
  219. if(currentPatientIndex == -1) {
  220. cout << "Please select a patient first!\n";
  221. pressEnterToContinue();
  222. return;
  223. }
  224.  
  225. clearScreen();
  226. cout << "========================================\n";
  227. cout << " " << CLINIC_NAME << "\n";
  228. cout << " LABORATORY TEST MANAGEMENT\n";
  229. cout << "========================================\n";
  230. cout << "Patient: " << patients[currentPatientIndex].name << "\n\n";
  231.  
  232. cout << "1. Add Standard Test Results\n";
  233. cout << "2. Add Custom Test\n";
  234. cout << "3. View All Tests\n";
  235. cout << "4. Back to Main Menu\n";
  236. cout << "Enter choice: ";
  237.  
  238. int choice;
  239. while (!(cin >> choice) || choice < 1 || choice > 4) {
  240. cin.clear();
  241. cin.ignore(numeric_limits<streamsize>::max(), '\n');
  242. cout << "Invalid choice. Please enter 1-4: ";
  243. }
  244. cin.ignore();
  245.  
  246. if(choice == 1) {
  247. // Standard tests menu
  248. clearScreen();
  249. cout << "========================================\n";
  250. cout << " " << CLINIC_NAME << "\n";
  251. cout << " STANDARD LABORATORY TESTS\n";
  252. cout << "========================================\n";
  253. cout << "1. BIL (Bilirubin) — 0.1 - 1.2 mg/dL\n";
  254. cout << "2. ALT (SGPT) — 7 - 56 U/L\n";
  255. cout << "3. BSR/F — F: 70-100 mg/dL, R: <140 mg/dL\n";
  256. cout << "4. HBA1C — <5.7%\n";
  257. cout << "5. HCV — Negative\n";
  258. cout << "6. HBsAG — Negative\n";
  259. cout << "7. MALARIA — Negative\n";
  260. cout << "8. HIV — Negative\n";
  261. cout << "9. H PYLORI — Negative\n";
  262. cout << "10. TYPHOID — Negative\n";
  263. cout << "11. UPT — Pos/Neg\n";
  264. cout << "12. BLOOD GROUP — A/B/AB/O +ve/-ve\n";
  265. cout << "13. CRP — <6 mg/L\n";
  266. cout << "14. X MATCH — Compatible/Not\n";
  267. cout << "15. HB — M: 13-17 g/dL, F: 12-15\n";
  268. cout << "16. URINE RE — Normal values\n";
  269. cout << "17. TPHA(VDRL) — Negative\n";
  270. cout << "18. UREA — 10-50 mg/dL\n";
  271. cout << "19. CREATININE — 0.6-1.3 mg/dL\n";
  272. cout << "20. URIC ACID — M: 3.4-7.0, F: 2.4-6.0\n";
  273. cout << "21. TLC — 4000-11000 cells/cu mm\n";
  274. cout << "22. PLTS — 150,000-450,000 per microliter\n";
  275. cout << "23. CHOLESTROL — <200 mg/dL\n";
  276. cout << "24. TRIGLYCERIDES — <150 mg/dL\n";
  277. cout << "25. SpO2 — 95-100%\n";
  278. cout << "26. Pulse Rate — 60-100/min\n";
  279. cout << "27. BP — 120/80 mmHg\n";
  280. cout << "Enter test number (0 to cancel): ";
  281.  
  282. int testChoice;
  283. while (!(cin >> testChoice) || testChoice < 0 || testChoice > 27) {
  284. cin.clear();
  285. cin.ignore(numeric_limits<streamsize>::max(), '\n');
  286. cout << "Invalid input. Please enter 0-27: ";
  287. }
  288. cin.ignore();
  289.  
  290. if(testChoice > 0) {
  291. string testName, normalRange;
  292. switch(testChoice) {
  293. case 1: testName = "BIL"; normalRange = "0.1-1.2 mg/dL"; break;
  294. case 2: testName = "ALT"; normalRange = "7-56 U/L"; break;
  295. case 3: testName = "BSR/F"; normalRange = "F:70-100, R:<140 mg/dL"; break;
  296. case 4: testName = "HBA1C"; normalRange = "<5.7%"; break;
  297. case 5: testName = "HCV"; normalRange = "Negative"; break;
  298. case 6: testName = "HBsAG"; normalRange = "Negative"; break;
  299. case 7: testName = "MALARIA"; normalRange = "Negative"; break;
  300. case 8: testName = "HIV"; normalRange = "Negative"; break;
  301. case 9: testName = "H PYLORI"; normalRange = "Negative"; break;
  302. case 10: testName = "TYPHOID"; normalRange = "Negative"; break;
  303. case 11: testName = "UPT"; normalRange = "Pos/Neg"; break;
  304. case 12: testName = "BLOOD GROUP"; normalRange = "A/B/AB/O +ve/-ve"; break;
  305. case 13: testName = "CRP"; normalRange = "<6 mg/L"; break;
  306. case 14: testName = "X MATCH"; normalRange = "Compatible/Not"; break;
  307. case 15: testName = "HB"; normalRange = "M:13-17, F:12-15 g/dL"; break;
  308. case 16: testName = "URINE RE"; normalRange = "Normal values"; break;
  309. case 17: testName = "TPHA(VDRL)"; normalRange = "Negative"; break;
  310. case 18: testName = "UREA"; normalRange = "10-50 mg/dL"; break;
  311. case 19: testName = "CREATININE"; normalRange = "0.6-1.3 mg/dL"; break;
  312. case 20: testName = "URIC ACID"; normalRange = "M:3.4-7.0, F:2.4-6.0"; break;
  313. case 21: testName = "TLC"; normalRange = "4000-11000 cells/cu mm"; break;
  314. case 22: testName = "PLTS"; normalRange = "150,000-450,000 per microliter"; break;
  315. case 23: testName = "CHOLESTROL"; normalRange = "<200 mg/dL"; break;
  316. case 24: testName = "TRIGLYCERIDES"; normalRange = "<150 mg/dL"; break;
  317. case 25: testName = "SpO2"; normalRange = "95-100%"; break;
  318. case 26: testName = "Pulse Rate"; normalRange = "60-100/min"; break;
  319. case 27: testName = "BP"; normalRange = "120/80 mmHg"; break;
  320. default: testName = "TEST"; normalRange = "N/A"; break;
  321. }
  322.  
  323. cout << "Enter " << testName << " result: ";
  324. string result;
  325. getline(cin, result);
  326.  
  327. patients[currentPatientIndex].labTests[testName] = result + " (" + normalRange + ")";
  328. cout << "\nTest result saved!\n";
  329. }
  330. } else if(choice == 2) {
  331. // Custom test entry
  332. clearScreen();
  333. cout << "========================================\n";
  334. cout << " " << CLINIC_NAME << "\n";
  335. cout << " CUSTOM TEST ENTRY\n";
  336. cout << "========================================\n";
  337.  
  338. while(true) {
  339. string testName, result, normalRange;
  340. cout << "Test Name (or 'done' to finish): ";
  341. getline(cin, testName);
  342.  
  343. if(testName == "done") break;
  344. if(testName.empty()) continue;
  345.  
  346. cout << "Result: ";
  347. getline(cin, result);
  348.  
  349. cout << "Normal Range: ";
  350. getline(cin, normalRange);
  351.  
  352. patients[currentPatientIndex].labTests[testName] = result + " (" + normalRange + ")";
  353. cout << "\nTest result saved!\n";
  354. }
  355. } else if(choice == 3) {
  356. // View all tests
  357. clearScreen();
  358. cout << "========================================\n";
  359. cout << " " << CLINIC_NAME << "\n";
  360. cout << " LABORATORY TEST RESULTS\n";
  361. cout << "========================================\n";
  362. cout << "Patient: " << patients[currentPatientIndex].name << "\n\n";
  363.  
  364. if(patients[currentPatientIndex].labTests.empty()) {
  365. cout << "No test results available!\n";
  366. } else {
  367. cout << left << setw(25) << "TEST" << setw(40) << "RESULT (Normal Range)" << "\n";
  368. cout << "------------------------------------------------------\n";
  369. for(const auto& test : patients[currentPatientIndex].labTests) {
  370. cout << left << setw(25) << test.first << setw(40) << test.second << "\n";
  371. }
  372. }
  373. pressEnterToContinue();
  374. return;
  375. }
  376. pressEnterToContinue();
  377. }
  378.  
  379. void generateA4Report() {
  380. if(currentPatientIndex == -1) {
  381. cout << "Please select a patient first!\n";
  382. pressEnterToContinue();
  383. return;
  384. }
  385.  
  386. Patient& p = patients[currentPatientIndex];
  387. stringstream report;
  388.  
  389. // Header
  390. report << "\n\n";
  391. report << "======================================================\n";
  392. report << " " << CLINIC_NAME << "\n";
  393. report << "======================================================\n";
  394. report << right << setw(50) << "Date: " << p.date << "\n\n";
  395.  
  396. // Patient Info
  397. report << left << setw(15) << "HN Number:" << p.hnNumber << "\n";
  398. report << setw(15) << "MR Number:" << p.mrNumber << "\n";
  399. report << setw(15) << "Patient Name:" << p.name << "\n";
  400. report << setw(15) << "Age/Sex:" << to_string(p.age) << " yrs/" << p.gender << "\n";
  401. report << setw(15) << "Contact:" << p.contact << "\n";
  402. report << setw(15) << "Address:" << p.address << "\n";
  403. report << setw(15) << "Physician:" << p.physician << "\n\n";
  404.  
  405. // Test Results
  406. if(!p.labTests.empty()) {
  407. report << "LABORATORY RESULTS:\n";
  408. report << "------------------------------------------------------\n";
  409. report << left << setw(25) << "TEST" << setw(30) << "RESULT (Normal Range)" << "\n";
  410. report << "------------------------------------------------------\n";
  411.  
  412. for(const auto& test : p.labTests) {
  413. report << left << setw(25) << test.first
  414. << setw(30) << test.second << "\n";
  415. }
  416. report << "\n";
  417. }
  418.  
  419. // Diagnosis and Prescription
  420. if(!p.diagnosis.empty()) {
  421. report << "DIAGNOSIS: " << p.diagnosis << "\n\n";
  422. }
  423.  
  424. if(!p.medications.empty()) {
  425. report << "PRESCRIPTION:\n";
  426. for(const auto& med : p.medications) {
  427. report << "- " << med << "\n";
  428. }
  429. }
  430.  
  431. // Disclaimer
  432. report << "\n\n";
  433. report << "======================================================\n";
  434. report << "NOTE:\n";
  435. report << "1. This is computer generated report does not require signatures.\n";
  436. report << "2. This report is not valid for court.\n";
  437. report << "======================================================\n";
  438.  
  439. report << "\n\n";
  440. report << right << setw(50) << "___________________________\n";
  441. report << right << setw(50) << DOCTOR_NAME << "\n";
  442. report << right << setw(50) << DOCTOR_QUALIFICATION << "\n";
  443. report << "======================================================\n";
  444.  
  445. // Save to file
  446. string filename = "Report_" + p.hnNumber + "_" + p.name + ".txt";
  447. replace(filename.begin(), filename.end(), ' ', '_');
  448. ofstream outFile(filename);
  449. if(outFile.is_open()) {
  450. outFile << report.str();
  451. outFile.close();
  452. cout << "\nA4 Report generated: " << filename << endl;
  453.  
  454. // Print automatically
  455. #ifdef _WIN32
  456. string printCmd = "notepad /p " + filename;
  457. system(printCmd.c_str());
  458. cout << "Report sent to printer!\n";
  459. #else
  460. cout << "Please print the file manually from your file browser\n";
  461. #endif
  462. } else {
  463. cout << "Error: Could not create report file!\n";
  464. }
  465. pressEnterToContinue();
  466. }
  467.  
  468. void saveData() {
  469. ofstream outFile("clinic_data.dat");
  470. if(outFile.is_open()) {
  471. for(const auto& p : patients) {
  472. outFile << p.hnNumber << "\n";
  473. outFile << p.mrNumber << "\n";
  474. outFile << p.name << "\n";
  475. outFile << p.age << "\n";
  476. outFile << p.gender << "\n";
  477. outFile << p.contact << "\n";
  478. outFile << p.date << "\n";
  479. outFile << p.address << "\n";
  480. outFile << p.physician << "\n";
  481. outFile << p.diagnosis << "\n";
  482.  
  483. // Save medications
  484. outFile << p.medications.size() << "\n";
  485. for(const auto& med : p.medications) {
  486. outFile << med << "\n";
  487. }
  488.  
  489. // Save lab tests
  490. outFile << p.labTests.size() << "\n";
  491. for(const auto& test : p.labTests) {
  492. outFile << test.first << "\n";
  493. outFile << test.second << "\n";
  494. }
  495. }
  496. outFile.close();
  497. cout << "\nData saved successfully!\n";
  498. } else {
  499. cout << "\nError saving data!\n";
  500. }
  501. pressEnterToContinue();
  502. }
  503.  
  504. void loadData() {
  505. ifstream inFile("clinic_data.dat");
  506. if(inFile.is_open()) {
  507. patients.clear();
  508. while(inFile.good()) {
  509. Patient p;
  510. getline(inFile, p.hnNumber);
  511. if(p.hnNumber.empty()) break;
  512.  
  513. getline(inFile, p.mrNumber);
  514. getline(inFile, p.name);
  515.  
  516. string ageStr;
  517. getline(inFile, ageStr);
  518. p.age = stoi(ageStr);
  519.  
  520. getline(inFile, p.gender);
  521. getline(inFile, p.contact);
  522. getline(inFile, p.date);
  523. getline(inFile, p.address);
  524. getline(inFile, p.physician);
  525. getline(inFile, p.diagnosis);
  526.  
  527. // Load medications
  528. string medCountStr;
  529. getline(inFile, medCountStr);
  530. int medCount = stoi(medCountStr);
  531. for(int i = 0; i < medCount; i++) {
  532. string med;
  533. getline(inFile, med);
  534. if(!med.empty()) {
  535. p.medications.push_back(med);
  536. }
  537. }
  538.  
  539. // Load lab tests
  540. string testCountStr;
  541. getline(inFile, testCountStr);
  542. int testCount = stoi(testCountStr);
  543. for(int i = 0; i < testCount; i++) {
  544. string testName, testResult;
  545. getline(inFile, testName);
  546. getline(inFile, testResult);
  547. if(!testName.empty()) {
  548. p.labTests[testName] = testResult;
  549. }
  550. }
  551.  
  552. patients.push_back(p);
  553. }
  554. inFile.close();
  555. }
  556. }
  557.  
  558. void findPatient() {
  559. clearScreen();
  560. cout << "========================================\n";
  561. cout << " " << CLINIC_NAME << "\n";
  562. cout << " FIND PATIENT RECORD\n";
  563. cout << "========================================\n";
  564.  
  565. if(patients.empty()) {
  566. cout << "No patients registered!\n";
  567. pressEnterToContinue();
  568. return;
  569. }
  570.  
  571. cout << "Enter search term (HN, MR, or Name): ";
  572. string searchTerm;
  573. getline(cin, searchTerm);
  574.  
  575. transform(searchTerm.begin(), searchTerm.end(), searchTerm.begin(), ::tolower);
  576.  
  577. vector<int> matches;
  578. for(int i = 0; i < patients.size(); i++) {
  579. string hnLower = patients[i].hnNumber;
  580. string mrLower = patients[i].mrNumber;
  581. string nameLower = patients[i].name;
  582.  
  583. transform(hnLower.begin(), hnLower.end(), hnLower.begin(), ::tolower);
  584. transform(mrLower.begin(), mrLower.end(), mrLower.begin(), ::tolower);
  585. transform(nameLower.begin(), nameLower.end(), nameLower.begin(), ::tolower);
  586.  
  587. if(hnLower.find(searchTerm) != string::npos ||
  588. mrLower.find(searchTerm) != string::npos ||
  589. nameLower.find(searchTerm) != string::npos) {
  590. matches.push_back(i);
  591. }
  592. }
  593.  
  594. if(matches.empty()) {
  595. cout << "\nNo matching patients found.\n";
  596. } else {
  597. cout << "\nMatching Patients:\n";
  598. for(int i = 0; i < matches.size(); i++) {
  599. cout << i+1 << ". " << patients[matches[i]].hnNumber << " | "
  600. << patients[matches[i]].name << " | "
  601. << patients[matches[i]].age << " yrs/" << patients[matches[i]].gender << "\n";
  602. }
  603.  
  604. cout << "\nEnter patient number to select (0 to cancel): ";
  605. int choice;
  606. while (!(cin >> choice) || choice < 0 || choice > matches.size()) {
  607. cin.clear();
  608. cin.ignore(numeric_limits<streamsize>::max(), '\n');
  609. cout << "Invalid input. Please enter 0-" << matches.size() << ": ";
  610. }
  611. cin.ignore();
  612.  
  613. if(choice > 0) {
  614. currentPatientIndex = matches[choice-1];
  615. cout << "Selected: " << patients[currentPatientIndex].name << "\n";
  616. }
  617. }
  618. pressEnterToContinue();
  619. }
  620.  
  621. void showMainMenu() {
  622. clearScreen();
  623. cout << "========================================\n";
  624. cout << " " << CLINIC_NAME << "\n";
  625. cout << "========================================\n";
  626. cout << "1. Register New Patient\n";
  627. cout << "2. View/Select Patient\n";
  628. cout << "3. Enter Diagnosis/Prescription\n";
  629. cout << "4. Laboratory Tests\n";
  630. cout << "5. Generate A4 Report\n";
  631. cout << "6. Find Patient\n";
  632. cout << "7. Save Data\n";
  633. cout << "8. Exit\n";
  634. cout << "========================================\n";
  635. cout << "Current Patient: "
  636. << (currentPatientIndex >= 0 ? patients[currentPatientIndex].name : "None")
  637. << "\n";
  638. cout << "Enter your choice (1-8): ";
  639. }
  640.  
  641. int main() {
  642. loadData();
  643.  
  644. if (!login()) {
  645. cout << "Exiting system...\n";
  646. return 0;
  647. }
  648.  
  649. int choice;
  650. do {
  651. showMainMenu();
  652. while (!(cin >> choice) || choice < 1 || choice > 8) {
  653. cin.clear();
  654. cin.ignore(numeric_limits<streamsize>::max(), '\n');
  655. cout << "Invalid choice. Please enter 1-8: ";
  656. }
  657. cin.ignore();
  658.  
  659. switch(choice) {
  660. case 1: registerPatient(); break;
  661. case 2: viewAllPatients(); break;
  662. case 3: enterDiagnosis(); break;
  663. case 4: laboratoryTests(); break;
  664. case 5: generateA4Report(); break;
  665. case 6: findPatient(); break;
  666. case 7: saveData(); break;
  667. case 8: cout << "Exiting system...\n"; break;
  668. }
  669. } while(choice != 8);
  670.  
  671. return 0;
  672. }
Success #stdin #stdout #stderr 0.01s 5320KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
Error: near line 13: near "using": syntax error
Error: near line 15: near "/": syntax error
Error: near line 17: near "const": syntax error
Error: near line 18: near "const": syntax error
Error: near line 20: near "struct": syntax error
Error: near line 22: near "string": syntax error
Error: near line 23: near "string": syntax error
Error: near line 24: near "int": syntax error
Error: near line 25: near "string": syntax error
Error: near line 26: near "string": syntax error
Error: near line 27: near "string": syntax error
Error: near line 28: near "string": syntax error
Error: near line 29: near "string": syntax error
Error: near line 30: near "string": syntax error
Error: near line 31: near "vector": syntax error
Error: near line 32: near "map": syntax error
Error: near line 33: unrecognized token: "}"
Error: near line 35: near "vector": syntax error
Error: near line 36: near "int": syntax error
Error: near line 38: near "/": syntax error
Error: near line 41: near "tm": syntax error
Error: near line 42: near "stringstream": syntax error
Error: near line 43: near "ss": syntax error
Error: near line 46: near "return": syntax error
Error: near line 47: unrecognized token: "}"
Error: near line 51: near "stringstream": syntax error
Error: near line 52: near "ss": syntax error
Error: near line 53: near "return": syntax error
Error: near line 54: unrecognized token: "}"
Error: near line 58: near "stringstream": syntax error
Error: near line 59: near "ss": syntax error
Error: near line 60: near "return": syntax error
Error: near line 61: unrecognized token: "}"
Error: near line 66: near "#else": syntax error
Error: near line 68: near "#endif": syntax error
Error: near line 73: near "cin": syntax error
Error: near line 74: near "cin": syntax error
Error: near line 75: unrecognized token: "}"
Error: near line 80: near "clearScreen": syntax error
Error: near line 81: near "cout": syntax error
Error: near line 82: near "cout": syntax error
Error: near line 83: near "cout": syntax error
Error: near line 84: near "cout": syntax error
Error: near line 85: near "cout": syntax error
Error: near line 86: near "getline": syntax error
Error: near line 87: near "cout": syntax error
Error: near line 88: near "getline": syntax error
Error: near line 90: near "if": syntax error
Error: near line 92: near "pressEnterToContinue": syntax error
Error: near line 93: near "return": syntax error
Error: near line 94: unrecognized token: "}"
Error: near line 96: near "pressEnterToContinue": syntax error
Error: near line 97: near "return": syntax error
Error: near line 98: unrecognized token: "}"
Error: near line 103: near "p": syntax error
Error: near line 104: near "p": syntax error
Error: near line 105: near "p": syntax error
Error: near line 107: near "clearScreen": syntax error
Error: near line 108: near "cout": syntax error
Error: near line 109: near "cout": syntax error
Error: near line 110: near "cout": syntax error
Error: near line 111: near "cout": syntax error
Error: near line 112: near "cout": syntax error
Error: near line 113: near "cout": syntax error
Error: near line 114: near "cout": syntax error
Error: near line 116: near "cout": syntax error
Error: near line 117: near "getline": syntax error
Error: near line 119: near "cout": syntax error
Error: near line 120: near "while": syntax error
Error: near line 122: near "cin": syntax error
Error: near line 123: near "cout": syntax error
Error: near line 124: unrecognized token: "}"
Error: near line 127: near "cout": syntax error
Error: near line 128: near "while": syntax error
Error: near line 130: near "if": syntax error
Error: near line 131: near "cout": syntax error
Error: near line 132: unrecognized token: "}"
Error: near line 135: near "getline": syntax error
Error: near line 137: near "cout": syntax error
Error: near line 138: near "getline": syntax error
Error: near line 140: near "cout": syntax error
Error: near line 141: near "getline": syntax error
Error: near line 143: near "patients": syntax error
Error: near line 144: near "currentPatientIndex": syntax error
Error: near line 145: near "cout": syntax error
Error: near line 146: near "pressEnterToContinue": syntax error
Error: near line 147: unrecognized token: "}"
Error: near line 151: near "cout": syntax error
Error: near line 152: near "cout": syntax error
Error: near line 153: near "cout": syntax error
Error: near line 154: near "cout": syntax error
Error: near line 156: near "if": syntax error
Error: near line 158: unrecognized token: "}"
Error: near line 164: unrecognized token: "}"
Error: near line 167: near "int": syntax error
Error: near line 168: near "while": syntax error
Error: near line 170: near "cin": syntax error
Error: near line 171: near "cout": syntax error
Error: near line 172: unrecognized token: "}"
Error: near line 175: near "if": syntax error
Error: near line 177: near "cout": syntax error
Error: near line 178: near "cout": syntax error
Error: near line 179: near "cout": syntax error
Error: near line 180: unrecognized token: "}"
Error: near line 183: unrecognized token: "}"
Error: near line 188: near "pressEnterToContinue": syntax error
Error: near line 189: near "return": syntax error
Error: near line 190: unrecognized token: "}"
Error: near line 193: near "cout": syntax error
Error: near line 194: near "cout": syntax error
Error: near line 195: near "cout": syntax error
Error: near line 196: near "cout": syntax error
Error: near line 197: near "cout": syntax error
Error: near line 199: near "cout": syntax error
Error: near line 200: near "getline": syntax error
Error: near line 202: near "patients": syntax error
Error: near line 203: near "while": syntax error
Error: near line 205: near "cout": syntax error
Error: near line 206: near "getline": syntax error
Error: near line 208: near "if": syntax error
Error: near line 209: near "if": syntax error
Error: near line 211: unrecognized token: "}"
Error: near line 215: near "pressEnterToContinue": syntax error
Error: near line 216: unrecognized token: "}"
Error: near line 221: near "pressEnterToContinue": syntax error
Error: near line 222: near "return": syntax error
Error: near line 223: unrecognized token: "}"
Error: near line 226: near "cout": syntax error
Error: near line 227: near "cout": syntax error
Error: near line 228: near "cout": syntax error
Error: near line 229: near "cout": syntax error
Error: near line 230: near "cout": syntax error
Error: near line 232: near "cout": syntax error
Error: near line 233: near "cout": syntax error
Error: near line 234: near "cout": syntax error
Error: near line 235: near "cout": syntax error
Error: near line 236: near "cout": syntax error
Error: near line 238: near "int": syntax error
Error: near line 239: near "while": syntax error
Error: near line 241: near "cin": syntax error
Error: near line 242: near "cout": syntax error
Error: near line 243: unrecognized token: "}"
Error: near line 246: near "if": syntax error
Error: near line 249: near "cout": syntax error
Error: near line 250: near "cout": syntax error
Error: near line 251: near "cout": syntax error
Error: near line 252: near "cout": syntax error
Error: near line 253: near "cout": syntax error
Error: near line 254: near "cout": syntax error
Error: near line 255: near "cout": syntax error
Error: near line 256: near "cout": syntax error
Error: near line 257: near "cout": syntax error
Error: near line 258: near "cout": syntax error
Error: near line 259: near "cout": syntax error
Error: near line 260: near "cout": syntax error
Error: near line 261: near "cout": syntax error
Error: near line 262: near "cout": syntax error
Error: near line 263: near "cout": syntax error
Error: near line 264: near "cout": syntax error
Error: near line 265: near "cout": syntax error
Error: near line 266: near "cout": syntax error
Error: near line 267: near "cout": syntax error
Error: near line 268: near "cout": syntax error
Error: near line 269: near "cout": syntax error
Error: near line 270: near "cout": syntax error
Error: near line 271: near "cout": syntax error
Error: near line 272: near "cout": syntax error
Error: near line 273: near "cout": syntax error
Error: near line 274: near "cout": syntax error
Error: near line 275: near "cout": syntax error
Error: near line 276: near "cout": syntax error
Error: near line 277: near "cout": syntax error
Error: near line 278: near "cout": syntax error
Error: near line 279: near "cout": syntax error
Error: near line 280: near "cout": syntax error
Error: near line 282: near "int": syntax error
Error: near line 283: near "while": syntax error
Error: near line 285: near "cin": syntax error
Error: near line 286: near "cout": syntax error
Error: near line 287: unrecognized token: "}"
Error: near line 290: near "if": syntax error
Error: near line 292: near "switch": syntax error
Error: near line 294: near "case": syntax error
Error: near line 295: near "case": syntax error
Error: near line 296: near "case": syntax error
Error: near line 297: near "case": syntax error
Error: near line 298: near "case": syntax error
Error: near line 299: near "case": syntax error
Error: near line 300: near "case": syntax error
Error: near line 301: near "case": syntax error
Error: near line 302: near "case": syntax error
Error: near line 303: near "case": syntax error
Error: near line 304: near "case": syntax error
Error: near line 305: near "case": syntax error
Error: near line 306: near "case": syntax error
Error: near line 307: near "case": syntax error
Error: near line 308: near "case": syntax error
Error: near line 309: near "case": syntax error
Error: near line 310: near "case": syntax error
Error: near line 311: near "case": syntax error
Error: near line 312: near "case": syntax error
Error: near line 313: near "case": syntax error
Error: near line 314: near "case": syntax error
Error: near line 315: near "case": syntax error
Error: near line 316: near "case": syntax error
Error: near line 317: near "case": syntax error
Error: near line 318: near "case": syntax error
Error: near line 319: near "case": syntax error
Error: near line 320: near "default": syntax error
Error: near line 321: unrecognized token: "}"
Error: near line 324: near "string": syntax error
Error: near line 325: near "getline": syntax error
Error: near line 327: near "patients": syntax error
Error: near line 328: near "cout": syntax error
Error: near line 329: unrecognized token: "}"
Error: near line 333: near "cout": syntax error
Error: near line 334: near "cout": syntax error
Error: near line 335: near "cout": syntax error
Error: near line 336: near "cout": syntax error
Error: near line 338: near "while": syntax error
Error: near line 340: near "cout": syntax error
Error: near line 341: near "getline": syntax error
Error: near line 343: near "if": syntax error
Error: near line 344: near "if": syntax error
Error: near line 346: near "cout": syntax error
Error: near line 347: near "getline": syntax error
Error: near line 349: near "cout": syntax error
Error: near line 350: near "getline": syntax error
Error: near line 352: near "patients": syntax error
Error: near line 353: near "cout": syntax error
Error: near line 354: unrecognized token: "}"
Error: near line 358: near "cout": syntax error
Error: near line 359: near "cout": syntax error
Error: near line 360: near "cout": syntax error
Error: near line 361: near "cout": syntax error
Error: near line 362: near "cout": syntax error
Error: near line 364: near "if": syntax error
Error: near line 366: unrecognized token: "}"
Error: near line 368: near "cout": syntax error
Error: near line 369: near "for": syntax error
Error: near line 371: unrecognized token: "}"
Error: near line 374: near "return": syntax error
Error: near line 375: unrecognized token: "}"
Error: near line 377: unrecognized token: "}"
Error: near line 382: near "pressEnterToContinue": syntax error
Error: near line 383: near "return": syntax error
Error: near line 384: unrecognized token: "}"
Error: near line 387: near "stringstream": syntax error
Error: near line 389: near "/": syntax error
Error: near line 391: near "report": syntax error
Error: near line 392: near "report": syntax error
Error: near line 393: near "report": syntax error
Error: near line 394: near "report": syntax error
Error: near line 396: near "/": syntax error
Error: near line 398: near "report": syntax error
Error: near line 399: near "report": syntax error
Error: near line 400: near "report": syntax error
Error: near line 401: near "report": syntax error
Error: near line 402: near "report": syntax error
Error: near line 403: near "report": syntax error
Error: near line 405: near "/": syntax error
Error: near line 408: near "report": syntax error
Error: near line 409: near "report": syntax error
Error: near line 410: near "report": syntax error
Error: near line 412: near "for": syntax error
Error: near line 415: unrecognized token: "}"
Error: near line 417: unrecognized token: "}"
Error: near line 422: unrecognized token: "}"
Error: near line 426: near "for": syntax error
Error: near line 428: unrecognized token: "}"
Error: near line 433: near "report": syntax error
Error: near line 434: near "report": syntax error
Error: near line 435: near "report": syntax error
Error: near line 436: near "report": syntax error
Error: near line 437: near "report": syntax error
Error: near line 439: near "report": syntax error
Error: near line 440: near "report": syntax error
Error: near line 441: near "report": syntax error
Error: near line 442: near "report": syntax error
Error: near line 443: near "report": syntax error
Error: near line 445: near "/": syntax error
Error: near line 447: near "(": syntax error
Error: near line 448: near "ofstream": syntax error
Error: near line 449: near "if": syntax error
Error: near line 451: near "outFile": syntax error
Error: near line 452: near "cout": syntax error
Error: near line 454: near "/": syntax error
Error: near line 457: near "system": syntax error
Error: near line 458: near "cout": syntax error
Error: near line 459: near "#else": syntax error
Error: near line 461: near "#endif": syntax error
Error: near line 464: unrecognized token: "}"
Error: near line 466: unrecognized token: "}"
Error: near line 470: near "if": syntax error
Error: near line 473: near "outFile": syntax error
Error: near line 474: near "outFile": syntax error
Error: near line 475: near "outFile": syntax error
Error: near line 476: near "outFile": syntax error
Error: near line 477: near "outFile": syntax error
Error: near line 478: near "outFile": syntax error
Error: near line 479: near "outFile": syntax error
Error: near line 480: near "outFile": syntax error
Error: near line 481: near "outFile": syntax error
Error: near line 483: near "/": syntax error
Error: near line 485: near "for": syntax error
Error: near line 487: unrecognized token: "}"
Error: near line 491: near "for": syntax error
Error: near line 493: near "outFile": syntax error
Error: near line 494: unrecognized token: "}"
Error: near line 497: near "cout": syntax error
Error: near line 498: unrecognized token: "}"
Error: near line 500: unrecognized token: "}"
Error: near line 502: unrecognized token: "}"
Error: near line 506: near "if": syntax error
Error: near line 508: near "while": syntax error
Error: near line 510: near "getline": syntax error
Error: near line 511: near "if": syntax error
Error: near line 513: near "getline": syntax error
Error: near line 514: near "getline": syntax error
Error: near line 516: near "string": syntax error
Error: near line 517: near "getline": syntax error
Error: near line 518: near "p": syntax error
Error: near line 520: near "getline": syntax error
Error: near line 521: near "getline": syntax error
Error: near line 522: near "getline": syntax error
Error: near line 523: near "getline": syntax error
Error: near line 524: near "getline": syntax error
Error: near line 525: near "getline": syntax error
Error: near line 527: near "/": syntax error
Error: near line 529: near "getline": syntax error
Error: near line 530: near "int": syntax error
Error: near line 531: near "for": syntax error
Error: near line 533: near "getline": syntax error
Error: near line 534: near "if": syntax error
Error: near line 536: unrecognized token: "}"
Error: near line 541: near "getline": syntax error
Error: near line 542: near "int": syntax error
Error: near line 543: near "for": syntax error
Error: near line 545: near "getline": syntax error
Error: near line 546: near "getline": syntax error
Error: near line 547: near "if": syntax error
Error: near line 549: unrecognized token: "}"
Error: near line 553: unrecognized token: "}"
Error: near line 555: unrecognized token: "}"
Error: near line 560: near "cout": syntax error
Error: near line 561: near "cout": syntax error
Error: near line 562: near "cout": syntax error
Error: near line 563: near "cout": syntax error
Error: near line 565: near "if": syntax error
Error: near line 567: near "pressEnterToContinue": syntax error
Error: near line 568: near "return": syntax error
Error: near line 569: unrecognized token: "}"
Error: near line 572: near "string": syntax error
Error: near line 573: near "getline": syntax error
Error: near line 575: near "transform": syntax error
Error: near line 577: near "vector": syntax error
Error: near line 578: near "for": syntax error
Error: near line 580: near "string": syntax error
Error: near line 581: near "string": syntax error
Error: near line 583: near "transform": syntax error
Error: near line 584: near "transform": syntax error
Error: near line 585: near "transform": syntax error
Error: near line 587: near "if": syntax error
Error: near line 591: unrecognized token: "}"
Error: near line 596: unrecognized token: "}"
Error: near line 598: near "for": syntax error
Error: near line 602: unrecognized token: "}"
Error: near line 605: near "int": syntax error
Error: near line 606: near "while": syntax error
Error: near line 608: near "cin": syntax error
Error: near line 609: near "cout": syntax error
Error: near line 610: unrecognized token: "}"
Error: near line 613: near "if": syntax error
Error: near line 615: near "cout": syntax error
Error: near line 616: unrecognized token: "}"
Error: near line 619: unrecognized token: "}"
Error: near line 623: near "cout": syntax error
Error: near line 624: near "cout": syntax error
Error: near line 625: near "cout": syntax error
Error: near line 626: near "cout": syntax error
Error: near line 627: near "cout": syntax error
Error: near line 628: near "cout": syntax error
Error: near line 629: near "cout": syntax error
Error: near line 630: near "cout": syntax error
Error: near line 631: near "cout": syntax error
Error: near line 632: near "cout": syntax error
Error: near line 633: near "cout": syntax error
Error: near line 634: near "cout": syntax error
Error: near line 635: near "cout": syntax error
Error: near line 638: near "cout": syntax error
Error: near line 639: unrecognized token: "}"
Error: near line 644: near "if": syntax error
Error: near line 646: near "return": syntax error
Error: near line 647: unrecognized token: "}"
Error: near line 650: near "do": syntax error
Error: near line 652: near "while": syntax error
Error: near line 654: near "cin": syntax error
Error: near line 655: near "cout": syntax error
Error: near line 656: unrecognized token: "}"
Error: near line 659: near "switch": syntax error
Error: near line 661: near "case": syntax error
Error: near line 662: near "case": syntax error
Error: near line 663: near "case": syntax error
Error: near line 664: near "case": syntax error
Error: near line 665: near "case": syntax error
Error: near line 666: near "case": syntax error
Error: near line 667: near "case": syntax error
Error: near line 668: unrecognized token: "}"
Error: near line 671: near "return": syntax error
Error: near line 672: unrecognized token: "}"