Consultation Overview
The Consultation class is the central model for managing medical sessions. It encompasses all data related to a consultation, including user information, doctor details, communication configurations (Chat, VoIP, Video), and the resulting medical recommendation.
The Consultation Model
Below is the structure of the Consultation class and its key attributes:
public struct Consultation: Codable {
public var consultationId: Int?
public var userId: Int?
public var question: String?
public var medium: String?
public var mediaIds: [String]?
public var parentConsultationId: Int?
public var status: String?
public var isFulfilled: Int?
public var doctorName: String?
public var doctorAvatar: String?
public var doctorAverageRating: Double?
public var createdAt: String?
public var updatedAt: String?
public var closedAt: String?
public var user: User?
public var parentConsultation: Consultation?
public var consultations: [Consultation]?
public var socketChannel: String?
public var socketKey: String?
public var chatConfig: ChatConfig?
public var voipConfig: VoipConfig?
public var videoConfig: VoipConfig?
public var chatHistory: ChatHistory?
public var recommendation: Recommendation?
public var media: [Media]?
}
Related Data Structures
Media
Attached files (images or documents) associated with a consultation.
public struct Media: Codable {
public var id: String?
public var type: String?
public var name: String?
public var path: String?
public var ext: String?
public var size: Int?
public var createdAt: String?
public var url: String?
}
ChatConfig
Configuration required to initialize a chat session via Sendbird.
public struct ChatConfig: Codable {
public var id: Int?
public var consultationId: Int?
public var groupId: String?
public var chatUserId: String?
public var appId: String?
public var chatUserToken: String?
}
VoipConfig / VideoConfig
Configuration for VoIP and Video sessions powered by OpenTok (Vonage).
public struct VoipConfig: Codable {
public var id: Int?
public var consultationId: Int?
public var apiKey: String?
public var callId: String?
public var token: String?
}
Recommendation
The medical outcome provided by the doctor after a consultation.
public struct Recommendation: Codable {
public var id: Int?
public var consultationId: Int?
public var createdAt: String?
public var updatedAt: String?
public var data: RecommendationData?
}
public struct RecommendationData: Codable {
public var lab: RecommendationLab?
public var drug: RecommendationDrug?
public var icd10: RecommendationICD10?
public var doctorReferral: RecommendationDoctorReferral?
public var followUp: [RecommendationFollowUp]?
public var postCallAnswer: [RecommendationPostCallAnswer]?
}
Consultation API Functionalities
The ApiService provides several methods to manage the lifecycle of a consultation.
| Method | Parameters | Description |
|---|---|---|
createConsultation | consultation: Consultation | Submits a new consultation request. |
getConsultationInfo | id: Int | Retrieves detailed data for a specific consultation. |
getLastConsultation | — | Fetches the most recent consultation for the authenticated user. |
getConsultationList | userId: Int?, page: Int, perPage: Int | Retrieves a paginated list of consultations. |
deleteConsultation | id: Int | Deletes a consultation (if permitted). |
cancelConsultation | id: Int | Cancels a consultation that is pending or in progress. |
rateConsultation | id: Int, rating: Int, comment: String | Submits a rating and feedback for a consultation. |
uploadMedia | fileData: Data, type: String | Uploads a media file and returns a Media object. |
getPrescription | id: Int | Downloads the PDF prescription for a fulfilled consultation. |