Epic Systems is the largest electronic health records (EHR) vendor in the world, headquartered in Madison, Wisconsin. Its hiring is known for two things: top-of-Midwest salary ceilings (Epic's New Grad SWE comp ranks #1 in the region) and an assessment system completely unlike Silicon Valley's—no LeetCode-style algorithm questions, but a Wonderlic-style cognitive ability test plus a standalone Coding Skills Assessment. This article breaks Epic's OA into its four modules and gives a concrete prep roadmap.
Epic Systems OA Overview
| Dimension | Details |
|---|---|
| Platform | Epic's proprietary test system (no public demo) |
| Duration | ~90 minutes total, split into two parts |
| Part 1 | Cognitive Assessment (50 questions / 12 minutes) |
| Part 2 | Coding Skills Assessment (1-2 problems, 60-90 minutes) |
| Difficulty | Individually easy, but extreme time pressure |
| Pass rate | ~25-35% |
| Next step | OA → Phone Screen → Skills Day (onsite) → Offer |
Module 1: Cognitive Assessment (Wonderlic Style)
Epic uses a Wonderlic variant—50 questions in 12 minutes, averaging 14 seconds each. Items mix five types:
1) Vocabulary and Analogies
"BOOK is to LIBRARY as PATIENT is to ____." A. Doctor B. Hospital C. Disease D. Treatment
Answer: B (location relationship)
2) Arithmetic and Mental Math
"A car drives at 60 mph for 2.5 hours, then 40 mph for 1.5 hours. What's the average speed?"
def average_speed(d1_time, d1_speed, d2_time, d2_speed):
total_distance = d1_time * d1_speed + d2_time * d2_speed
total_time = d1_time + d2_time
return total_distance / total_time
print(average_speed(2.5, 60, 1.5, 40)) # 52.5
Mental math tip: don't set up equations. Estimate first (must be between 40 and 60, weighted toward 60) → rule out wrong options → compute.
3) Logic and Syllogisms
"All doctors can write prescriptions. Alex cannot write prescriptions. Conclusion: Alex is not a doctor."
Decide if the conclusion follows (yes/no/cannot determine).
4) Number Sequences
"2, 6, 12, 20, 30, ?"
Differences are 4, 6, 8, 10, so next difference is 12 → 42.
5) Spatial Reasoning
Few items per test, but every year. Practice with at least 25 Wonderlic Sample Tests.
Module 2: Coding Skills Assessment
Immediately after Cognitive, 60-90 minutes, usually 1 problem (sometimes 2). Epic problems are not LeetCode-style but healthcare business implementation tasks.
Example: Drug Dosage Calculator
Given a list of dosages
dosages = [(drug_name, mg_per_kg, max_mg)]and a patient weightweight_kg, compute the actual dose per drug. Dose = min(mg_per_kg * weight_kg, max_mg). If a drug name appears twice, use the strictest (smallest) max_mg.
def calculate_dosages(dosages, weight_kg):
"""
dosages: List[Tuple[str, float, float]] # (drug, mg_per_kg, max_mg)
weight_kg: float
return: Dict[str, float]
"""
drug_limits = {}
for name, mg_per_kg, max_mg in dosages:
if name not in drug_limits:
drug_limits[name] = (mg_per_kg, max_mg)
else:
existing_per_kg, existing_max = drug_limits[name]
drug_limits[name] = (existing_per_kg, min(existing_max, max_mg))
result = {}
for name, (mg_per_kg, max_mg) in drug_limits.items():
calculated = mg_per_kg * weight_kg
result[name] = round(min(calculated, max_mg), 2)
return result
dosages = [
("ibuprofen", 10, 400),
("amoxicillin", 25, 1000),
("ibuprofen", 8, 350),
]
print(calculate_dosages(dosages, 30))
# {'ibuprofen': 240, 'amoxicillin': 750}
Example: Appointment Conflict Detection
Given a set of appointments, detect conflicts (same doctor double-booked).
from collections import defaultdict
def find_appointment_conflicts(appointments):
"""
appointments: List[Tuple[str, str, int, int]]
(doctor_id, patient_id, start_minute, end_minute)
return: List[Tuple[str, str, str]]
"""
doctor_schedule = defaultdict(list)
for doctor, patient, start, end in appointments:
doctor_schedule[doctor].append((start, end, patient))
conflicts = []
for doctor, slots in doctor_schedule.items():
slots.sort()
for i in range(1, len(slots)):
prev_start, prev_end, prev_patient = slots[i - 1]
cur_start, cur_end, cur_patient = slots[i]
if cur_start < prev_end:
conflicts.append((doctor, prev_patient, cur_patient))
return conflicts
Time complexity: O(n log n) (sort per doctor after grouping).
Hidden Requirements
- Code must compile and run—no pseudocode
- 5-8 hidden test cases covering empty input, single element, large input
- Domain-style naming (
patient_idoverpid) is preferred - Comments should be terse—no long docstrings
What Comes After the OA
Passing the OA doesn't auto-promote you to onsite. There's a 30-minute phone screen covering:
- Why Epic (not technical, but the wrong answer fails you)
- Will you relocate to Madison (mandatory, no remote)
- Deep dive into 1-2 resume projects
Pass that and Epic flies you to Madison for Skills Day, a full-day onsite unique to Epic:
- 2 coding rounds (pair programming)
- 1 behavioral round
- 1 project presentation
- 1 lunch (also evaluated)
Prep Timeline
| Week | Focus |
|---|---|
| 1 | 25 Wonderlic Sample Tests, focus on speed |
| 2 | 20 Epic-style coding problems (LeetCode Easy + domain variants) |
| 3 | Full mock: 12-min Cognitive + 60-min Coding |
| 4 | Phone screen + Skills Day behavioral prep |
FAQ
How different is Epic's OA from other companies?
Drastically. Other companies test LeetCode algorithms; Epic tests cognitive ability + business coding. The Cognitive section averages 14 seconds per question—speed beats accuracy. The Coding section demands correct, production-style code without algorithmic complexity tricks.
Can I pass without Wonderlic practice?
Very unlikely. The question types are fixed but the time pressure is brutal—untrained candidates usually finish 30-35 of 50 questions, falling below the pass line. Do at least 10 full mocks.
Do I have to move to Madison?
Yes. Epic enforces 100% in-office. New hires move to Verona, WI (Madison suburb). If you won't relocate, don't even do the phone screen. Epic offers a $5k-$10k relocation bonus to soften this.
Is Epic's Midwest salary really high?
Very high. New Grad SWE base ~$115k-$125k + $20k-$40k sign-on, plus Madison's cost of living roughly 1/3 of the Bay Area. Effective disposable income approaches a Bay Area L4. This is Epic's recruiting moat.
Which language for the Coding Skills Assessment?
Epic offers Java, C++, Python, and JavaScript. Use Python. Epic internally doesn't use Python, but the assessment is scored on correctness and readability—Python lets you finish fastest.
Preparing for Epic Systems OA?
Epic's OA system is unique and needs dedicated Wonderlic practice plus business-domain coding drills. oavoservice provides OA support for healthcare software companies including Epic, Cerner, and Allscripts, with full Wonderlic mocks and a domain problem bank.
Add WeChat: Coding0201 to get a custom Epic OA plan.
#EpicSystems #Wonderlic #HealthcareSoftware #OA #TechJobs
Contact
Email: [email protected]
Telegram: @OAVOProxy