Add graphical CCS physical examination
This commit is contained in:
@@ -211,8 +211,28 @@ func _run() -> void:
|
||||
_assert(not screen.active_scene.choice_pager.visible, "a single terminal action should not show paging controls")
|
||||
var terminal_choice := screen.active_scene.choice_container.get_child(0) as Control
|
||||
_assert(terminal_choice.size.x <= 360.0, "a single terminal choice should remain a compact centered card")
|
||||
_assert((terminal_choice.get_child(0) as Label).text == "Begin Physical Examination",
|
||||
"terminal dialogue should lead into the graphical physical examination")
|
||||
screen.active_scene.interview_continue_requested.emit()
|
||||
_assert(host.shown_screen == "ccs_player", "terminal dialogue should hand off the same attempt to the CCS player")
|
||||
await process_frame
|
||||
_assert(screen.current_view == "physical_examination", "the examination should remain inside CCS Cases 2")
|
||||
_assert(screen.active_scene.is_physical_exam_visible(), "the physical examination panel should be visible")
|
||||
_assert(screen.active_scene.physical_exam_grid.columns == 2, "exam components should use two responsive columns")
|
||||
_assert(screen.active_scene.physical_exam_grid.get_child_count() == 12, "all twelve examination components should be available")
|
||||
_assert(not screen.active_scene.physical_exam_finish_button.disabled, "Finish Case should remain available before every exam is complete")
|
||||
screen.active_scene.set_physical_exam_pending("abdomen")
|
||||
_assert(screen.active_scene.physical_exam_finish_button.disabled, "case completion should pause while an exam command is pending")
|
||||
_assert(screen.active_scene.physical_exam_buttons.values().all(func(button): return button.disabled),
|
||||
"exam controls should disable while one component is submitted")
|
||||
var examined_attempt := _sample_attempt(true)
|
||||
examined_attempt.chart = [{"code": "abdomen", "title": "Abdomen", "text": "Mild epigastric tenderness."}]
|
||||
service.attempt = examined_attempt
|
||||
screen._on_attempt_changed()
|
||||
await process_frame
|
||||
_assert(screen.current_view == "physical_examination", "attempt refreshes should preserve the physical examination phase")
|
||||
_assert(screen.active_scene.physical_exam_buttons.abdomen.text.begins_with("[Done]"), "completed exams should be marked")
|
||||
_assert(screen.active_scene.physical_exam_buttons.abdomen.disabled, "completed exams should not be repeated")
|
||||
_assert(screen.active_scene.physical_exam_finding_text.text == "Mild epigastric tenderness.", "the returned chart finding should be displayed")
|
||||
|
||||
service.attempt = {"id": "classic-attempt", "state": "active", "openingCompleted": false, "interview": {}}
|
||||
host.shown_screen = ""
|
||||
@@ -275,10 +295,25 @@ func _sample_attempt(completed: bool) -> Dictionary:
|
||||
"pulse": "76/min", "respirations": "14/min", "oxygenSaturation": "99% on room air"
|
||||
},
|
||||
"openingCompleted": completed,
|
||||
"experienceMode": "graphical_interview",
|
||||
"availableExams": _sample_exams(), "chart": [],
|
||||
"interview": {"currentNodeId": node.id, "currentNode": node, "visitedChoiceIds": [], "completed": completed}
|
||||
}
|
||||
|
||||
|
||||
func _sample_exams() -> Array:
|
||||
var definitions := [
|
||||
["physical_appearance", "Physical Appearance"], ["skin", "Skin"], ["breasts", "Breasts"],
|
||||
["lymph_nodes", "Lymph Nodes"], ["heent_neck", "HEENT / Neck"], ["chest_lungs", "Chest / Lungs"],
|
||||
["heart_cardiovascular", "Heart / Cardiovascular"], ["abdomen", "Abdomen"], ["genitalia", "Genitalia"],
|
||||
["rectal", "Rectal"], ["extremities_spine", "Extremities / Spine"], ["neuro_psych", "Neuro / Psych"]
|
||||
]
|
||||
var exams: Array = []
|
||||
for definition in definitions:
|
||||
exams.append({"code": definition[0], "name": definition[1], "durationMinutes": 1})
|
||||
return exams
|
||||
|
||||
|
||||
func _sample_graphical_debrief() -> Dictionary:
|
||||
return {
|
||||
"id": "attempt-2", "caseExternalId": "interactive", "state": "completed", "revision": 7,
|
||||
|
||||
Reference in New Issue
Block a user