Hospital Billing System using Classes

I'm not sure where I am going wrong. Of course the code is not complete but this is what I have thus far. The program is supposed to be a billing system (which I have not coded that just yet). Here is the assignment:

"a. Design the class doctorType, inherited from the class personType, (defined in another chapter that I ensured I have correct), with an additional data member to store the doctor's speciality...
b. class for billType (have not started this part yet).
c. class for patientType inherited from personType with addition data members to store a patient's ID, age, DOB, attending physician's name, the date when the patient was admitted and discharged. (Use class dateType to store the DOB, admit and discharge dates, and use doctorType to store the attending physician's name)..."

I'm not entirely sure how to link dateType, doctorType, and patientType along with personType....
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
 #include<iostream>
#include<string>

using namespace std;

class PersonType
{
public:
	void print() const;
	void SetName(string first, string last);
	string getFirstName() const;
	string getLastName() const;
	PersonType(string first = "", string last = "");

private:
	string FirstName, LastName;
};
void PersonType :: print() const
{
	cout << FirstName << " " << LastName << endl;
}
void PersonType :: SetName(string first, string last)
{
	FirstName = first;
	LastName = last;
	cout << "Please Enter Your FIRST Name.\n";
	cin >> first;
	cout << "Please Enter Your LAST Name.\n";
	cin >> last;
}
string PersonType :: getFirstName() const
{
	return FirstName;
}
string PersonType :: getLastName() const
{
	return LastName;
}
PersonType :: PersonType(string first, string last)
{
	FirstName = first;
	LastName = last;
}

class DoctorType : public PersonType
{
public:
	void SetName(string first, string last);
	void SetSpeciality(string Special);
	string getSpeciality() const;
	string getFirstName() const;
	string getLastName() const;
	DoctorType(string Special = "");

private:
	string FirstName, LastName, Speciality;
};
void DoctorType :: SetSpeciality(string Special)
{
	Speciality = Special;
	cout << "Please Enter Your SPECIALITY.\n";
	cin >> Special;
}
string DoctorType :: getSpeciality() const
{
	return Speciality;
}
DoctorType :: DoctorType(string Special = "")
{
	Speciality = Special;
}

class DateType
{
public:
	void printDate() const;
	void SetDate(int Day, int Month, int Year);
	int getTheDay() const;
	int getTheMonth() const;
	int getTheYear() const;
	DateType(int Day,int Month, int Year);
	
private:
	int TheDay, TheYear, TheMonth;
};
void DateType :: printDate() const
{
	cout << TheDay << " " << TheMonth << " " << TheYear << endl;
}
void DateType :: SetDate(int Day, int Month, int Year)
{
	TheDay = Day;
	TheMonth = Month;
	TheYear = Year;
	
	cout << "Please Enter The Day (DD).\n";
	cin >> Day;
	cout << "Please Enter The Month (MM).\n";
	cin >> Month;
	cout << "Please Enter The Year (YYYY).\n";
	cin >> Year;
}
int DateType :: getTheDay() const
{
	return TheDay;
}
int DateType :: getTheMonth() const
{
	return TheMonth;
}
int DateType :: getTheYear() const
{
	return TheYear;
}
DateType::DateType(int Day, int Month, int Year)
{
	TheDay = Day;
	TheMonth = Month;
	TheYear = Year;
}

class DateOfBirthType : public DateType
{
public:
	void printDOB() const;
	void SetDOB(int Day, int Month, int Year);
	int getTheDay() const;
	int getTheMonth() const;
	int getTheYear() const;

private:
	int TheDay, TheYear, TheMonth;
};
void DateOfBirthType :: printDOB() const
{
	cout << "Patients Date Of Birth: " << TheDay << "/" << TheMonth << "/" << TheYear << endl;
}
void DateOfBirthType :: SetDOB(int Day, int Month, int Year)
{
	TheDay = Day;
	TheMonth = Month;
	TheYear = Year;

	cout << "Enter The Patients DAY Of Birth.\n";
	cin >> Day;
	cout << "Enter The Patients MONTH Of Birth.\n";
	cin >> Month;
	cout << "Enter The Patients YEAR Of Birth.\n";
	cin >> Year;
}

class AdmittanceDateType : public DateType
{
public:
	void printAdmittanceDate() const;
	void SetAdmittanceDate(int Day, int Month, int Year);
	int getTheDay() const;
	int getTheMonth() const;
	int getTheYear() const;

private:
	int TheDay, TheYear, TheMonth;
};
void AdmittanceDateType :: printAdmittanceDate() const
{
	cout << "The Patients Admittance Date: " << TheDay << " " << TheMonth << " " << TheYear << endl;
}
void AdmittanceDateType :: SetAdmittanceDate(int Day, int Month, int Year)
{
	TheDay = Day;
	TheMonth = Month;
	TheYear = Year;

	cout << "Enter The Patients DAY Of Admittance.\n";
	cin >> Day;
	cout << "Enter The Patients MONTH Of Admittance.\n";
	cin >> Month;
	cout << "Enter The Patients YEAR Of Admittance.\n";
	cin >> Year;
}

class DischargeDateType : public DateType
{
public:
	void printDischargeDate() const;
	void SetDischargeDate(int Day, int Month, int Year);
	int getTheDay() const;
	int getTheMonth() const;
	int getTheYear() const;

private:
	int TheDay, TheYear, TheMonth;
};
void DischargeDateType :: printDischargeDate() const
{
	cout << "The Patients Discharge Date: " << TheDay << " " << TheMonth << " " << TheYear << endl;
}
void DischargeDateType :: SetDischargeDate(int Day, int Month, int Year)
{
	TheDay = Day;
	TheMonth = Month;
	TheYear = Year;

	cout << "Enter The Patients DAY Of Discharge.\n";
	cin >> Day;
	cout << "Enter The Patients MONTH Of Discharge.\n";
	cin >> Month;
	cout << "Enter The Patients YEAR Of Discharge.\n";
	cin >> Year;
}

class PatientType : public PersonType
{
	void print() const;
	void SetName(string first, string last);
	void SetPatientID(int ID);
	void SetPatientAge(int Age);
	int getPatientAge() const;
	int getPatientID() const;
	string getFirstName() const;
	string getLastName() const;
	PatientType(string first = "", string last = "");
	PatientType(int ID = 0);
	PatientType(int Age = 0);

private:
	string FirstName, LastName;
	int PatientID, PatientAge;
};
int PatientType::getPatientID() const
{
	return PatientID;
}
int PatientType::getPatientAge() const
{
	return PatientAge;
}
PatientType::PatientType(string first = "", string last = "")
{
	FirstName = first;
	LastName = last;
}
PatientType::PatientType(int ID = 0)
{
	PatientID = ID;
}
PatientType::PatientType(int Age = 0)
{
	PatientID = Age;
}
int main()
{
	int choice;

	PersonType *Person = NULL;

	cout << "Who would you like to input information for?\n";
	cout << "      1 - Doctor\n";
	cout << "      2 - Patient\n";
	cin >> choice;

	if (choice == 1)
	{
		Person = new DoctorType();
		Person->SetName();
		Person->SetSpeciality();
	}
	else if (choice == 2)
	{
		Person = new PatientType();
		Person->;
		Person->;
	}
	return 0;
}
You ask how to link DateType, DoctorType, and PatientType with PersonType, but if I understand the requirements correctly, you don't need to do that.

Instead, you need PatientType to be able to know information about his or her doctor and some dates.

Thus, you need some member variables in PatientType that are of types DoctorType and DateType. Then you will need setter/getter functions for those member variables.
so are you saying I have excess unnecessary code? As I was writing the code for the DateType, I was thinking that I was doing that portion for no reason. I have setter/getter functions of DoctorType and DateType, just unsure if I have them placed correctly. I also am unsure how to write the main portion to test what I have already wrote.
When I say getter/setter functions for DoctorType and DateType, I mean you literally need a setDoctor and setDate function in your PatientType class.

See how you have something like SetName() in your PatientType class? You need a set function that takes a DoctorType argument, and another set function for the dates you need.

You already have setter and getter functions for name, ID, etc. in your PatientType class. Now just add some for the Doctor/Dates you need.

In order to test it, you can set a doctor type to your patient, then you can get that doctor and print the doctor's name. So after you set it, you can do something like cout << "The patient's doctor's name is " << Person->getDoctor()->getFirstName() << "\n";
Last edited on
so...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
lass PatientType : public PersonType
{
	void print() const;
	void SetName(string first, string last);
	void SetPatientID(int ID);
	void SetPatientAge(int Age);
	int getPatientAge() const;
	int getPatientID() const;
	string getFirstName() const;
	string getLastName() const;
	PatientType(string first = "", string last = "");
	PatientType(int ID = 0);
	PatientType(int Age = 0);

private:
	string FirstName, LastName;
	int PatientID, PatientAge;
};


then add with the rest of the public functions...
1
2
void SetDoctor(string first, string last);
string getDoctor() const;


something like that?
You are close. I don't want to give you the exact answer, because I'm hoping you can reach it yourself, and it will help you learn.

Use the Doctor class. You will have one argument to your set function, and the same type will be returned from the get function.

void SetDoctor(/* your doctor class type that you created*/ doctor);
/* that same type as in the set function */ getDoctor() const;
Last edited on
I'm not asking for the exact answer.... I really appreciate the help... I'm getting back on that code here in a min and I'll see what I can come up with and post any other issues.
first let me see if I am following you...
1
2
void SetDoctor(DoctorType);
DoctorType getDoctor() const;


and this will be in... class PatientType ?
Yes.
ok so this is what I did.... right or wrong?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class DoctorType : public PersonType
{
public:
	void SetName(string first, string last);
	void SetSpeciality(string Special);
	void SetDoctor(string Doc);
	string getDoctor() const;
	string getSpeciality() const;
	string getFirstName() const;
	string getLastName() const;
	DoctorType(string Special = "");

private:
	string FirstName, LastName, Speciality, Doctor;
};
void DoctorType::SetDoctor(string Doc)
{
	Doctor = Doc;
}
string DoctorType::getDoctor() const
{
	return Doctor;
}


1
2
3
4
5
6
7
8
class PatientType : public PersonType
{
	void print() const;
	void SetName(string first, string last);
	void SetPatientID(int ID);
	void SetPatientAge(int Age);
	void SetDoctor(DoctorType);
	DoctorType getDoctor() const;
... (the rest of the code)
I'm airing more on the side of wrong though... when returning doctor, its not returning the whole class... but the compiler wont let me set the class = to anything... I tried various things that gave me errors somewhere or another...
Imagine your SetDoctor function just like any other set function you have.

"DoctorType" is just a type of an argument, just like "int" is the type of Age in your "SetPatientAge" function.

So in your SetDoctor function, you need to name your argument... right now you just have a type.



What do you mean when you say it's not returning the whole class? It should be. The reason you can't set the class equal to anything is because your DoctorType class doesn't have an equal operator. Do you have to set something equal to it? You could just as easily do something like this (assuming patient is of type PatientType):

 
patient.getDoctor().getSpecialty();


If you really need to set something equal to it, you'll need to either write an equal operator in your DoctorType class, or you could just make getDoctor() return a pointer.

1
2
3
4
5
6
7
8
class PatientType : public PersonType
{
    ...
    DoctorType *getDoctor() const;

// in another place in code
DoctorType *doctor = patient.getDoctor();
doctor->getSpecialty();
Last edited on
It does not have to be set equal to anything, I was just trying to figure out how to return the doctor's name and specialty within the PatientType class. That line patient.getDoctor().getSpecialty();
Could I assume this is within main? And is it saying... patient (of type PatientType) has this doctor with this specialty? And as far as the naming the argument, is this portion not doing this...?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class DoctorType : public PersonType
{
public:
	void SetName(string first, string last);
	void SetSpeciality(string Special);
	void SetDoctor(string Doc);
	string getDoctor() const;
	string getSpeciality() const;
	string getFirstName() const;
	string getLastName() const;
	DoctorType(string Special = "");

private:
	string FirstName, LastName, Speciality, Doctor;
};
void DoctorType::SetDoctor(string Doc)
{
	Doctor = Doc;
}
string DoctorType::getDoctor() const
{
	return Doctor;
}
Could I assume this is within main?


Yes, it could be in main if that is where the PatientType is defined.

And is it saying... patient (of type PatientType) has this doctor with this specialty?


Yes. You could just as easily get the Doctor's first or last name also (or anything else with that DoctorType).

And as far as the naming the argument, is this portion not doing this...?


No, I'm talking about in your PatientType class.

Make sure your SetDoctor function has an argument for DoctorType. In your SetDoctor function, you should be setting something equal to that argument, just like you do in your other set functions.

It needs to hold a DoctorType member variable that you will return with the getDoctor() function.

This means your PatientType will have a DoctorType member variable, and it will be set to whatever you pass into the SetDoctor function. If the member variable is not a pointer, you will need to implement an equals operator in the Doctor class (because SetDoctor will be have something like patientDoctor = doctor). If it is a pointer, you won't need to implement an equals operator in the Doctor class, and SetDoctor will take a pointer to a doctor.
Got a little busy but I will be testing this today.. I will post when I have a chance...
Topic archived. No new replies allowed.