0% found this document useful (0 votes)
3 views39 pages

Project Model

The document outlines a Computer Science investigatory project titled 'Patient Management System' prepared by students of Class XII at Hindu Global School for the academic year 2026-2027. It includes sections such as introduction to Python and MySQL, source code, and project acknowledgments. The project aims to create a system for managing patient information using Python and SQLite for database management.

Uploaded by

SRII AMMAN XEROX
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views39 pages

Project Model

The document outlines a Computer Science investigatory project titled 'Patient Management System' prepared by students of Class XII at Hindu Global School for the academic year 2026-2027. It includes sections such as introduction to Python and MySQL, source code, and project acknowledgments. The project aims to create a system for managing patient information using Python and SQLite for database management.

Uploaded by

SRII AMMAN XEROX
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

COMPUTER SCIENCE INVESTIGATORY PROJECT (2026-

2027)

CLASS:- XII-A

PROJECT TITLE :- PATIENT MANAGEMENT SYSTEM

PREPARED BY :- xxxxxxxxxxxx,

Yyyyyyyyyyyyy,

zzzzzzzzzzz
All India Senior Secondary Certificate
Examination [AISSCE]

BONAFIDE CERTIFICATE

Certified to be the bonafide record of project work done by

___________________________ at HINDU GLOBAL SCHOOL,

Mamarathupalayam, Erode – 638004, during the year 2026 – 2027, in partial

fulfilment of the study of Class XII AISSCE Examination in

________________ under our guidance.

PRINCIPAL

Internal Examiner External Examiner


CERTIFICATE BY GUIDE

This is to certify that _________________________ of class XII, 2026-

2027 Batch of HINDU GLOBAL SCHOOL, Mamarathupalayam, Erode –

638004 has completed this project file under my guidance. The student has

shown great interest and commitment in shaping up and completing the

project.

I certify that this project is up to our expectations and as per the

guidelines issued by Central Board of Secondary Education.

Name of the Teacher : _____________________________

Department : _____________________________
[Signature]

DECLARATION

I ..................................................................... Student of Class XII of HINDU

GLOBAL SCHOOL, Mamarathupalayam, Erode – 638004 hereby declare

that this project work was done by me for the partial fulfilment of the study of

class XII Project Assessment AISSCE 2026-2027 in

.....................................................

Name of the student :

Roll No :

[Signature] :
ACKNOWLEDGEMENT

I would like to convey my sincere thanks to

________________________________, in-charge of the department of

____________________________in Hindu Global School, for her immense

help and guidance throughout the project.

I would also like to convey our thanks to our Principal

Mrs. _____________________ and our School Management for providing

necessary materials.

I would like to extend our gratitude to everyone who helped me complete

this project.

Name of the Student : ________________________________

Roll No. : ________________________________


TABLE OF CONTENTS

SL. No. DESCRIPTION

01 INTRODUCTION

02 SOURCE CODE

03 OUTPUT

04 HARDWARE AND SOFTWARE REQUIREMENTS

05 BIBLIOGRAPHY

06 TEACHER’S OBSERVATION
INTRODUCTION
Python:-
Python is a general-purpose, high-level, interpreted, interactive and object-oriented
scripting language. Python is designed to be highly readable. It has fewer syntactical
constructions than other languages.

Characteristics of Python

Following are important characteristics of Python Programming −


 It supports functional and structured programming methods as well as OOP.
 It can be used as a scripting language or can be compiled to byte-code for building
large applications.
 It provides very high-level dynamic data types and supports dynamic type
checking.
 It supports automatic garbage collection.
 It can be easily integrated with C, C++, COM, ActiveX, CORBA, and Java.

Applications of Python

As mentioned before, Python is one of the most widely used language over the web. I'm
going to list few of them here:
 Easy-to-learn − Python has few keywords, simple structure, and a clearly defined
syntax. This allows the student to pick up the language quickly.
 Easy-to-read − Python code is more clearly defined and visible to the eyes.
 Easy-to-maintain − Python's source code is fairly easy-to-maintain.
 A broad standard library − Python's bulk of the library is very portable and
cross-platform compatible on UNIX, Windows, and Macintosh.
 Interactive Mode − Python has support for an interactive mode which allows
interactive testing and debugging of snippets of code.
 Portable − Python can run on a wide variety of hardware platforms and has the
same interface on all platforms.
 Extendable − You can add low-level modules to the Python interpreter. These
modules enable programmers to add to or customize their tools to be more
efficient.
 Databases − Python provides interfaces to all major commercial databases.
 GUI Programming − Python supports GUI applications that can be created and
ported to many system calls, libraries and windows systems, such as Windows
MFC, Macintosh, and the X Window system of Unix.
 Scalable − Python provides a better structure and support for large programs than
shell scripting.
It contains so many modules as well as libraries like

1. Python Satndard Library which contains modules like Math, Cmath, Random,
URLlib ,
2. Numpy,
3. SciPyplot,
4. Tkinter
5. Matplotlib.
As well as various data structures like list, queue, stack.

Mysql:

Databse is defined as collection of interrelated data stored together to serve multiple


applications. And MySQL is the most popular Open Source Relational SQL Database
Management System. MySQL is one of the best RDBMS being used for developing
various web-based software applications.

We use SQL in mysql in order to access data, manipulate data. SQL stands
for Structured Query Language SQL is a database computer language designed for the
retrieval and management of data in a relational database. And has clearly established
itself as a standard relational database language.

SQL is divided into Data Definition Language (DDL), Data Manipulation


Language(DML), Transaction Control Language(TCL).

“SOURCE CODE ”

import tkinter

import [Link]

import [Link]

import sqlite3

import [Link]

class Database:

def __init__(self):

[Link] = [Link]("[Link]")

[Link] = [Link]()

[Link]("CREATE TABLE IF NOT EXISTS patient_info (id


PRIMARYKEY text, fName text, lName text, dob text, mob text, yob text, gender text,
address text, phone text, email text, bloodGroup text, history text, doctor text)")

def __del__(self):

[Link]()

[Link]()
def Insert(self, id, fName, lName, dob, mob, yob, gender, address, phone, email,
bloodGroup, history, doctor):

[Link]("INSERT INTO patient_info VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,


?, ?)", (id, fName, lName, dob, mob, yob, gender, address, phone, email, bloodGroup,
history, doctor))

[Link]()

def Update(self, fName, lName, dob, mob, yob, gender, address, phone, email,
bloodGroup, history, doctor, id):

[Link]("UPDATE patient_info SET fName = ?, lName = ?, dob = ?, mob


= ?, yob = ?, gender = ?, address = ?, phone = ?, email = ?, bloodGroup = ?, history = ?,
doctor = ? WHERE id = ?", (fName, lName, dob, mob, yob, gender, address, phone,
email, bloodGroup, history, doctor, id))

[Link]()

def Search(self, id):

[Link]("SELECT * FROM patient_info WHERE id = ?", (id, ))

searchResults = [Link]()

return searchResults

def Delete(self, id):

[Link]("DELETE FROM patient_info WHERE id = ?", (id, ))

[Link]()

def Display(self):
[Link]("SELECT * FROM patient_info")

records = [Link]()

return records

class Values:

def Validate(self, id, fName, lName, phone, email, history, doctor):

if not ([Link]() and (len(id) == 3)):

return "id"

elif not ([Link]()):

return "fName"

elif not ([Link]()):

return "lName"

elif not ([Link]() and (len(phone) == 10)):

return "phone"

elif not ([Link]("@") == 1 and [Link](".") > 0):

return "email"

elif not ([Link]()):

return "history"

elif not ([Link]()):

return "doctor"

else:

return "SUCCESS"
class InsertWindow:

def __init__(self):

[Link] = [Link]()

[Link].wm_title("Insert data")

# Initializing all the variables

[Link] = [Link]()

[Link] = [Link]()

[Link] = [Link]()

[Link] = [Link]()

[Link] = [Link]()

[Link] = [Link]()

[Link] = [Link]()

[Link] = [Link]()

[Link] = ["Male", "Female", "Transgender", "Other"]

[Link] = list(range(1, 32))

[Link] = ["January", "February", "March", "April", "May", "June", "July",


"August", "September", "October", "November", "December"]

[Link] = list(range(1900, 2020))

[Link] = ["A+", "A-", "B+", "B-", "O+", "O-", "AB+", "AB-"]

# Labels
[Link]([Link], text = "Patient ID", width = 25).grid(pady = 5, column = 1,
row = 1)

[Link]([Link], text = "First Name", width = 25).grid(pady = 5, column = 1,


row = 2)

[Link]([Link], text = "Last Name", width = 25).grid(pady = 5, column = 1,


row = 3)

[Link]([Link], text = "D.O.B", width = 25).grid(pady = 5, column = 1, row =


4)

[Link]([Link], text = "M.O.B", width = 25).grid(pady = 5, column = 1, row


= 5)

[Link]([Link], text = "Y.O.B", width = 25).grid(pady = 5, column = 1, row =


6)

[Link]([Link], text = "Gender", width = 25).grid(pady = 5, column = 1, row


= 7)

[Link]([Link], text = "Home Address", width = 25).grid(pady = 5, column =


1, row = 8)

[Link]([Link], text = "Phone Number", width = 25).grid(pady = 5, column =


1, row = 9)

[Link]([Link], text = "Email ID", width = 25).grid(pady = 5, column = 1,


row = 10)

[Link]([Link], text = "Blood Group", width = 25).grid(pady = 5, column = 1,


row = 11)

[Link]([Link], text = "Patient History", width = 25).grid(pady = 5, column =


1, row = 12)

[Link]([Link], text = "Doctor", width = 25).grid(pady = 5, column = 1, row


= 13)
# Fields

# Entry widgets

[Link] = [Link]([Link], width = 25, textvariable = [Link])

[Link] = [Link]([Link], width = 25, textvariable = [Link])

[Link] = [Link]([Link], width = 25, textvariable = [Link])

[Link] = [Link]([Link], width = 25, textvariable = [Link])

[Link] = [Link]([Link], width = 25, textvariable = [Link])

[Link] = [Link]([Link], width = 25, textvariable = [Link])

[Link] = [Link]([Link], width = 25, textvariable = [Link])

[Link] = [Link]([Link], width = 25, textvariable = [Link])

[Link](pady = 5, column = 3, row = 1)

[Link](pady = 5, column = 3, row = 2)

[Link](pady = 5, column = 3, row = 3)

[Link](pady = 5, column = 3, row = 8)

[Link](pady = 5, column = 3, row = 9)

[Link](pady = 5, column = 3, row = 10)

[Link](pady = 5, column = 3, row = 12)

[Link](pady = 5, column = 3, row = 13)

# Combobox widgets

[Link] = [Link]([Link], values = [Link], width = 20)

[Link] = [Link]([Link], values = [Link], width = 20)


[Link] = [Link]([Link], values = [Link], width = 20)

[Link] = [Link]([Link], values = [Link], width =


20)

[Link] = [Link]([Link], values = [Link],


width = 20)

[Link](pady = 5, column = 3, row = 4)

[Link](pady = 5, column = 3, row = 5)

[Link](pady = 5, column = 3, row = 6)

[Link](pady = 5, column = 3, row = 7)

[Link](pady = 5, column = 3, row = 11)

# Button widgets

[Link]([Link], width = 20, text = "Insert", command = [Link]).grid(pady


= 15, padx = 5, column = 1, row = 14)

[Link]([Link], width = 20, text = "Reset", command = [Link]).grid(pady


= 15, padx = 5, column = 2, row = 14)

[Link]([Link], width = 20, text = "Close", command =


[Link]).grid(pady = 15, padx = 5, column = 3, row = 14)

[Link]()

def Insert(self):

[Link] = Values()

[Link] = Database()
[Link] = [Link]([Link](), [Link](),
[Link](), [Link](), [Link](),
[Link](), [Link]())

if ([Link] == "SUCCESS"):

[Link]([Link](), [Link](), [Link](),


[Link](), [Link](), [Link](), [Link](),
[Link](), [Link](), [Link](),
[Link](), [Link](), [Link]())

[Link]("Inserted data", "Successfully inserted the above data in the


database")

else:

[Link] = "Invalid input in field " + [Link]

[Link]("Value Error", [Link])

def Reset(self):

[Link](0, [Link])

[Link](0, [Link])

[Link](0, [Link])

[Link]("")

[Link]("")

[Link]("")

[Link]("")

[Link](0, [Link])

[Link](0, [Link])

[Link](0, [Link])
[Link]("")

[Link](0, [Link])

[Link](0, [Link])

class UpdateWindow:

def __init__(self, id):

[Link] = [Link]()

[Link].wm_title("Update data")

# Initializing all the variables

[Link] = id

[Link] = [Link]()

[Link] = [Link]()

[Link] = [Link]()

[Link] = [Link]()

[Link] = [Link]()

[Link] = [Link]()

[Link] = [Link]()

[Link] = ["Male", "Female", "Transgender", "Other"]

[Link] = list(range(1, 32))


[Link] = ["January", "February", "March", "April", "May", "June", "July",
"August", "September", "October", "November", "December"]

[Link] = list(range(1900, 2020))

[Link] = ["A+", "A-", "B+", "B-", "O+", "O-", "AB+", "AB-"]

# Labels

[Link]([Link], text = "Patient ID", width = 25).grid(pady = 5, column = 1,


row = 1)

[Link]([Link], text = id, width = 25).grid(pady = 5, column = 3, row = 1)

[Link]([Link], text = "First Name", width = 25).grid(pady = 5, column = 1,


row = 2)

[Link]([Link], text = "Last Name", width = 25).grid(pady = 5, column = 1,


row = 3)

[Link]([Link], text = "D.O.B", width = 25).grid(pady = 5, column = 1, row =


4)

[Link]([Link], text = "M.O.B", width = 25).grid(pady = 5, column = 1, row


= 5)

[Link]([Link], text = "Y.O.B", width = 25).grid(pady = 5, column = 1, row =


6)

[Link]([Link], text = "Gender", width = 25).grid(pady = 5, column = 1, row


= 7)

[Link]([Link], text = "Home Address", width = 25).grid(pady = 5, column =


1, row = 8)

[Link]([Link], text = "Phone Number", width = 25).grid(pady = 5, column =


1, row = 9)

[Link]([Link], text = "Email ID", width = 25).grid(pady = 5, column = 1,


row = 10)
[Link]([Link], text = "Blood Group", width = 25).grid(pady = 5, column = 1,
row = 11)

[Link]([Link], text = "Patient History", width = 25).grid(pady = 5, column =


1, row = 12)

[Link]([Link], text = "Doctor", width = 25).grid(pady = 5, column = 1, row


= 13)

# Set previous values

[Link] = Database()

[Link] = [Link](id)

[Link]([Link], text = [Link][0][1], width = 25).grid(pady = 5,


column = 2, row = 2)

[Link]([Link], text = [Link][0][2], width = 25).grid(pady = 5,


column = 2, row = 3)

[Link]([Link], text = [Link][0][3], width = 25).grid(pady = 5,


column = 2, row = 4)

[Link]([Link], text = [Link][0][4], width = 25).grid(pady = 5,


column = 2, row = 5)

[Link]([Link], text = [Link][0][5], width = 25).grid(pady = 5,


column = 2, row = 6)

[Link]([Link], text = [Link][0][6], width = 25).grid(pady = 5,


column = 2, row = 7)

[Link]([Link], text = [Link][0][7], width = 25).grid(pady = 5,


column = 2, row = 8)

[Link]([Link], text = [Link][0][8], width = 25).grid(pady = 5,


column = 2, row = 9)
[Link]([Link], text = [Link][0][9], width = 25).grid(pady = 5,
column = 2, row = 10)

[Link]([Link], text = [Link][0][10], width = 25).grid(pady = 5,


column = 2, row = 11)

[Link]([Link], text = [Link][0][11], width = 25).grid(pady = 5,


column = 2, row = 12)

[Link]([Link], text = [Link][0][12], width = 25).grid(pady = 5,


column = 2, row = 13)

# Fields

# Entry widgets

[Link] = [Link]([Link], width = 25, textvariable = [Link])

[Link] = [Link]([Link], width = 25, textvariable = [Link])

[Link] = [Link]([Link], width = 25, textvariable = [Link])

[Link] = [Link]([Link], width = 25, textvariable = [Link])

[Link] = [Link]([Link], width = 25, textvariable = [Link])

[Link] = [Link]([Link], width = 25, textvariable = [Link])

[Link] = [Link]([Link], width = 25, textvariable = [Link])

[Link](pady = 5, column = 3, row = 2)

[Link](pady = 5, column = 3, row = 3)

[Link](pady = 5, column = 3, row = 8)

[Link](pady = 5, column = 3, row = 9)

[Link](pady = 5, column = 3, row = 10)


[Link](pady = 5, column = 3, row = 12)

[Link](pady = 5, column = 3, row = 13)

# Combobox widgets

[Link] = [Link]([Link], values = [Link], width = 20)

[Link] = [Link]([Link], values = [Link], width = 20)

[Link] = [Link]([Link], values = [Link], width = 20)

[Link] = [Link]([Link], values = [Link], width =


20)

[Link] = [Link]([Link], values = [Link],


width = 20)

[Link](pady = 5, column = 3, row = 4)

[Link](pady = 5, column = 3, row = 5)

[Link](pady = 5, column = 3, row = 6)

[Link](pady = 5, column = 3, row = 7)

[Link](pady = 5, column = 3, row = 11)

# Button widgets

[Link]([Link], width = 20, text = "Update", command =


[Link]).grid(pady = 15, padx = 5, column = 1, row = 14)

[Link]([Link], width = 20, text = "Reset", command = [Link]).grid(pady


= 15, padx = 5, column = 2, row = 14)
[Link]([Link], width = 20, text = "Close", command =
[Link]).grid(pady = 15, padx = 5, column = 3, row = 14)

[Link]()

def Update(self):

[Link] = Database()

[Link]([Link](), [Link](), [Link](),


[Link](), [Link](), [Link](), [Link](),
[Link](), [Link](), [Link](),
[Link](), [Link](), [Link])

[Link]("Updated data", "Successfully updated the above data in


the database")

def Reset(self):

[Link](0, [Link])

[Link](0, [Link])

[Link]("")

[Link]("")

[Link]("")

[Link]("")

[Link](0, [Link])

[Link](0, [Link])

[Link](0, [Link])

[Link]("")

[Link](0, [Link])
[Link](0, [Link])

class DatabaseView:

def __init__(self, data):

[Link] = [Link]()

[Link].wm_title("Database View")

# Label widgets

[Link]([Link], text = "Database View Window", width =


25).grid(pady = 5, column = 1, row = 1)

[Link] = [Link]([Link])

[Link](pady = 5, column = 1, row = 2)

[Link]["show"] = "headings"

[Link]["columns"] = ("id", "fName", "lName", "dob", "mob", "yob",


"gender", "address", "phone", "email", "bloodGroup", "history", "doctor")

# Treeview column headings

[Link]("id", text = "ID")

[Link]("fName", text = "First Name")

[Link]("lName", text = "Last Name")

[Link]("dob", text = "D.O.B")

[Link]("mob", text = "M.O.B")


[Link]("yob", text = "Y.O.B")

[Link]("gender", text = "Gender")

[Link]("address", text = "Home Address")

[Link]("phone", text = "Phone Number")

[Link]("email", text = "Email ID")

[Link]("bloodGroup", text = "Blood Group")

[Link]("history", text = "History")

[Link]("doctor", text = "Doctor")

# Treeview columns

[Link]("id", width = 40)

[Link]("fName", width = 100)

[Link]("lName", width = 100)

[Link]("dob", width = 60)

[Link]("mob", width = 60)

[Link]("yob", width = 60)

[Link]("gender", width = 60)

[Link]("address", width = 200)

[Link]("phone", width = 100)

[Link]("email", width = 200)

[Link]("bloodGroup", width = 100)

[Link]("history", width = 100)

[Link]("doctor", width = 100)


for record in data:

[Link]('', 'end', values=(record))

[Link]()

class SearchDeleteWindow:

def __init__(self, task):

window = [Link]()

window.wm_title(task + " data")

# Initializing all the variables

[Link] = [Link]()

[Link] = [Link]()

[Link] = [Link]()

[Link] = "Please enter Patient ID to " + task

# Labels

[Link](window, text = [Link], width = 50).grid(pady = 20, row = 1)

[Link](window, text = "Patient ID", width = 10).grid(pady = 5, row = 2)

# Entry widgets

[Link] = [Link](window, width = 5, textvariable = [Link])


[Link](pady = 5, row = 3)

# Button widgets

if (task == "Search"):

[Link](window, width = 20, text = task, command = [Link]).grid(pady = 15,


padx = 5, column = 1, row = 14)

elif (task == "Delete"):

[Link](window, width = 20, text = task, command = [Link]).grid(pady = 15,


padx = 5, column = 1, row = 14)

def Search(self):

[Link] = Database()

[Link] = [Link]([Link]())

[Link] = DatabaseView([Link])

def Delete(self):

[Link] = Database()

[Link]([Link]())

class HomePage:

def __init__(self):

[Link] = [Link]()

[Link].wm_title("Patient Information System")


[Link]([Link], text = "Home Page", width = 100).grid(pady = 20,
column = 1, row = 1)

[Link]([Link], width = 20, text = "Insert", command =


[Link]).grid(pady = 15, column = 1, row = 2)

[Link]([Link], width = 20, text = "Update", command =


[Link]).grid(pady = 15, column = 1, row = 3)

[Link]([Link], width = 20, text = "Search", command =


[Link]).grid(pady = 15, column = 1, row = 4)

[Link]([Link], width = 20, text = "Delete", command =


[Link]).grid(pady = 15, column = 1, row = 5)

[Link]([Link], width = 20, text = "Display", command =


[Link]).grid(pady = 15, column = 1, row = 6)

[Link]([Link], width = 20, text = "Exit", command =


[Link]).grid(pady = 15, column = 1, row = 7)

[Link]()

def Insert(self):

[Link] = InsertWindow()

def Update(self):

[Link] = [Link]()

[Link].wm_title("Update data")
# Initializing all the variables

[Link] = [Link]()

# Label

[Link]([Link], text = "Enter the ID to update", width =


50).grid(pady = 20, row = 1)

# Entry widgets

[Link] = [Link]([Link], width = 5, textvariable = [Link])

[Link](pady = 10, row = 2)

# Button widgets

[Link]([Link], width = 20, text = "Update", command =


[Link]).grid(pady = 10, row = 3)

[Link]()

def updateID(self):

[Link] = UpdateWindow([Link]())

[Link]()
def Search(self):

[Link] = SearchDeleteWindow("Search")

def Delete(self):

[Link] = SearchDeleteWindow("Delete")

def Display(self):

[Link] = Database()

[Link] = [Link]()

[Link] = DatabaseView([Link])

homePage = HomePage()
“output for the home page”
“Output for the inserting info”
“Output for updating database”
“Output for search in database”
2
Output for delete data
Output for display data
HARDWARE AND SOFTWARE REQUIREMENTS

Hardware Requirements:

 Intel Pentium Processor


 4 GB RAM
 160 GB Hard Disk
 15.6” Led Monitor
 Keyboard
 Mouse

Software requirements:
 OS - Windows 7 or above
 Python 3.7
 MySQL 5.1
BIBLIOGRAPHY

[Link]

2. REFERENCE BOOK – Think Python


The complete reference - MySQL

3. ONLINE TUTORIALS- [Link]


[Link]
[Link]

[Link] VISUAL REFERNCES- [Link]


[Link]
TEACHER’S OBSERVATION

--------------------------------------------------------
--------------------------------------------------------
--------------------------------------------------------
--------------------------------------------------------
--------------------------------------------------------
--------------------------------------------------------
--------------------------------------------------------
--------------------------------------------------------
--------------------------------------------------------
--------------------------------------------------------
--------------------------------------------------------
--------------------------------------------------------
--------------------------------------------------------
--------------------------------------------------------
--------------------------------------------------------
--------------------------------------------------------
--------------------------------------------------------
 Student Management System: Manage student records, including names, roll numbers, and
marks.

 Gym Membership System: Manages member details, trainer assignments, and subscription
plans.

 Resort Management: Handles room bookings or menu ordering, billing, and inventory tracking.

Booking & Information Systems


These focus on specific transactional logic and seat/availability management.
 Bus Ticket Booking: Manages seat availability, bookings, and ticket cancellations.

 Movie Ticket Booking System: Schedules shows across different screens and tracks seat
counts.

 Vehicle Parking Booking System: Tracks parked vehicles, available slots, and calculates fees
based on duration.

You might also like