A modern, responsive React application for viewing and managing medical images with an intuitive patient-centric interface. Built with TypeScript, React, and Tailwind CSS.
- Patient List View: Browse through patient records with comprehensive information
- Patient Details: View patient demographics, medical history, and contact information
- Search & Filter: Easily find patients and their associated medical images
- Multi-Modal Support: View MRI, CT, Ultrasound, and X-Ray images
- Image Filtering: Filter images by modality (MRI, CT, Ultrasound, X-Ray)
- Full-Screen Modal: High-resolution image viewing with navigation controls
- Keyboard Navigation: Navigate through images using arrow keys
- Responsive Design: Optimized for desktop and mobile devices
- Split-Screen Background: Dynamic ocean-themed background with smooth transitions
- Page Transitions: Smooth swipe animations between patient list and image gallery
- Modern Design: Clean, medical-grade interface with accessibility considerations
- Demo Modes: Special demo modes for showcasing different UI themes
- Node.js (version 16 or higher)
- npm package manager
-
Clone the repository
git clone <your-repository-url> cd Task_1.B
-
Install dependencies
npm install
-
Start the development server
npm start
-
Open your browser Navigate to http://localhost:3000 to view the application.
- Patient Selection: Browse the patient list and click on any patient to view their medical images
- Image Gallery: Once a patient is selected, view all their medical images organized by modality
- Image Filtering: Use the dropdown filter to show only specific types of medical images
- Full-Screen Viewing: Click on any image thumbnail to open it in full-screen modal
- Navigation: Use arrow keys or navigation buttons to browse through images
- Return to Patients: Click the back button to return to the patient list
- Background Demo: Add
?demo=trueto the URL to see background theme options - Split-Screen Demo: Add
?demo=splitto the URL to see split-screen theme variations
Runs the app in development mode with hot reloading.
Launches the test runner in interactive watch mode.
Builds the app for production to the build folder with optimized performance.
Note: This is a one-way operation! Ejects from Create React App for full configuration control.
src/
├── components/ # React components
│ ├── BackgroundDemo.tsx # Background theme demo
│ ├── BackgroundSelector.tsx # Background selection UI
│ ├── FilterDropdown.tsx # Image filtering dropdown
│ ├── ImageModal.tsx # Full-screen image modal
│ ├── ImageThumbnail.tsx # Image thumbnail component
│ ├── MedicalImageGallery.tsx # Main image gallery
│ ├── ModeSelector.tsx # UI mode selection
│ ├── NavigationControls.tsx # Image navigation controls
│ ├── PageTransition.tsx # Page transition animations
│ ├── PatientCard.tsx # Individual patient card
│ ├── PatientList.tsx # Patient list view
│ ├── SplitScreenBackground.tsx # Split-screen background
│ ├── SplitScreenDemo.tsx # Split-screen demo
│ └── SplitScreenThemeSelector.tsx # Theme selection
├── data/ # Data models and mock data
│ ├── medicalImagesClean.ts # Medical image data
│ └── patients.ts # Patient data
├── App.tsx # Main application component
├── App.css # Application styles
├── index.tsx # Application entry point
└── index.css # Global styles
- React 19.1.0 - Modern React with latest features
- TypeScript 4.9.5 - Type-safe JavaScript development
- Tailwind CSS 3.4.17 - Utility-first CSS framework
- PostCSS & Autoprefixer - CSS processing and vendor prefixes
- React Testing Library - Component testing utilities
- Jest - JavaScript testing framework
interface Patient {
id: string;
firstName: string;
lastName: string;
dateOfBirth: string;
gender: 'Male' | 'Female' | 'Other';
phoneNumber: string;
email: string;
address: Address;
emergencyContact: EmergencyContact;
medicalInfo: MedicalInfo;
lastVisit: string;
totalImages: number;
recentModalities: string[];
status: 'Active' | 'Inactive' | 'Pending';
}interface MedicalImage {
id: string;
title: string;
modality: 'MRI' | 'CT' | 'Ultrasound' | 'X-Ray';
category: 'MRI Scan' | 'CT Scan' | 'Ultrasound' | 'X-Ray';
bodyPart: string;
date: string;
thumbnailUrl: string;
fullUrl: string;
description: string;
patientId: string;
}The application features a dynamic split-screen background with an ocean theme that responds to user interactions:
- Left Panel: Patient list with animated wave effects
- Right Panel: Medical image gallery with complementary styling
- Smooth Transitions: Animated transitions between different application states
Advanced image viewing capabilities:
- Full-Screen Display: High-resolution image viewing
- Keyboard Navigation: Arrow keys for image browsing
- Touch Support: Swipe gestures on mobile devices
- Image Information: Detailed metadata display
Mobile-first approach with:
- Adaptive Layouts: Optimized for different screen sizes
- Touch-Friendly: Large touch targets and gesture support
- Performance Optimized: Lazy loading and efficient rendering
tailwind.config.js- Tailwind CSS configurationpostcss.config.js- PostCSS processing configurationtsconfig.json- TypeScript compiler configurationpackage.json- Project dependencies and scripts
npm run buildThis creates an optimized production build in the build folder.
- Static Hosting: Deploy to Netlify, Vercel, or GitHub Pages
- Server Deployment: Use with Express.js or other Node.js servers
- Docker: Containerize for consistent deployment environments
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
If you encounter any issues or have questions:
- Check the existing issues in the repository
- Create a new issue with detailed information
- Include steps to reproduce any bugs
- DICOM Support: Integration with medical DICOM image format
- User Authentication: Secure login and role-based access
- Database Integration: Connect to real medical databases
- Advanced Filtering: More sophisticated search and filter options
- Export Features: PDF reports and image export functionality
- Annotations: Image annotation and markup tools