import 'liveConsultation.m.dart'; class AIDiagnosisRect { int right; int bottom; int left; int top; int width; int height; AIDiagnosisRect({ this.right = 0, this.bottom = 0, this.left = 0, this.top = 0, this.width = 0, this.height = 0, }); factory AIDiagnosisRect.fromJson(Map map) { return AIDiagnosisRect( right: map['Right'], bottom: map['Bottom'], left: map['Left'], top: map['Top'], width: map['Width'], height: map['Height'], ); } Map toJson() { final map = Map(); map['Right'] = right; map['Bottom'] = bottom; map['Left'] = left; map['Top'] = top; map['Width'] = width; map['Height'] = height; return map; } } class AIDiagnosisPoint2D { int x; int y; AIDiagnosisPoint2D({ this.x = 0, this.y = 0, }); factory AIDiagnosisPoint2D.fromJson(Map map) { return AIDiagnosisPoint2D( x: map['X'], y: map['Y'], ); } Map toJson() { final map = Map(); map['X'] = x; map['Y'] = y; return map; } } enum DiagnosisDescriptionEnum { Shape, Orientation, EchoPattern, LesionBoundary, Margin, Calcification, LesionSize, ThyroidEchoPattern, ThyroidShape, ThyroidMargin, ThyroidEchogenicFoci, LiverShape, LiverBoundary, LiverEchoTexture, } class AIDiagnosisDescription { DiagnosisDescriptionEnum type; String? value; AIDiagnosisDescription({ this.type = DiagnosisDescriptionEnum.Shape, this.value, }); factory AIDiagnosisDescription.fromJson(Map map) { return AIDiagnosisDescription( type: DiagnosisDescriptionEnum.values.firstWhere((e) => e.index == map['Type']), value: map['Value'], ); } Map toJson() { final map = Map(); map['Type'] = type.index; if(value != null) map['Value'] = value; return map; } } class AIDetectedObject { int label; double confidence; AIDiagnosisRect? boundingBox; List? contours; List? descriptions; AIDetectedObject({ this.label = 0, this.confidence = 0, this.boundingBox, this.contours, this.descriptions, }); factory AIDetectedObject.fromJson(Map map) { return AIDetectedObject( label: map['Label'], confidence: double.parse(map['Confidence'].toString()), boundingBox: map['BoundingBox'] != null ? AIDiagnosisRect.fromJson(map['BoundingBox']) : null, contours: map['Contours'] != null ? (map['Contours'] as List).map((e)=>AIDiagnosisPoint2D.fromJson(e as Map)).toList() : null, descriptions: map['Descriptions'] != null ? (map['Descriptions'] as List).map((e)=>AIDiagnosisDescription.fromJson(e as Map)).toList() : null, ); } Map toJson() { final map = Map(); map['Label'] = label; map['Confidence'] = confidence; if(boundingBox != null) map['BoundingBox'] = boundingBox; if(contours != null) map['Contours'] = contours; if(descriptions != null) map['Descriptions'] = descriptions; return map; } } class AIDiagnosisResultPerOrgan { DiagnosisOrganEnum organ; AIDiagnosisRect? organBoundBox; List? organContours; List? organDescriptions; List? detectedObjects; AIDiagnosisResultPerOrgan({ this.organ = DiagnosisOrganEnum.Null, this.organBoundBox, this.organContours, this.organDescriptions, this.detectedObjects, }); factory AIDiagnosisResultPerOrgan.fromJson(Map map) { return AIDiagnosisResultPerOrgan( organ: DiagnosisOrganEnum.values.firstWhere((e) => e.index == map['Organ']), organBoundBox: map['OrganBoundBox'] != null ? AIDiagnosisRect.fromJson(map['OrganBoundBox']) : null, organContours: map['OrganContours'] != null ? (map['OrganContours'] as List).map((e)=>AIDiagnosisPoint2D.fromJson(e as Map)).toList() : null, organDescriptions: map['OrganDescriptions'] != null ? (map['OrganDescriptions'] as List).map((e)=>AIDiagnosisDescription.fromJson(e as Map)).toList() : null, detectedObjects: map['DetectedObjects'] != null ? (map['DetectedObjects'] as List).map((e)=>AIDetectedObject.fromJson(e as Map)).toList() : null, ); } Map toJson() { final map = Map(); map['Organ'] = organ.index; if(organBoundBox != null) map['OrganBoundBox'] = organBoundBox; if(organContours != null) map['OrganContours'] = organContours; if(organDescriptions != null) map['OrganDescriptions'] = organDescriptions; if(detectedObjects != null) map['DetectedObjects'] = detectedObjects; return map; } } class AIDiagnosisPerImageDTO { int index; double priorityScore; List? diagResultsForEachOrgan; AIDiagnosisPerImageDTO({ this.index = 0, this.priorityScore = 0, this.diagResultsForEachOrgan, }); factory AIDiagnosisPerImageDTO.fromJson(Map map) { return AIDiagnosisPerImageDTO( index: map['Index'], priorityScore: double.parse(map['PriorityScore'].toString()), diagResultsForEachOrgan: map['DiagResultsForEachOrgan'] != null ? (map['DiagResultsForEachOrgan'] as List).map((e)=>AIDiagnosisResultPerOrgan.fromJson(e as Map)).toList() : null, ); } Map toJson() { final map = Map(); map['Index'] = index; map['PriorityScore'] = priorityScore; if(diagResultsForEachOrgan != null) map['DiagResultsForEachOrgan'] = diagResultsForEachOrgan; return map; } } class DiagnosisImageResult { DiagnosisConclusionEnum diagnosisConclusion; List? diagnosisResult; List? diagnosisOrgans; CarotidResultDTO? carotidResult; DiagnosisImageResult({ this.diagnosisConclusion = DiagnosisConclusionEnum.NotRequired, this.diagnosisResult, this.diagnosisOrgans, this.carotidResult, }); factory DiagnosisImageResult.fromJson(Map map) { return DiagnosisImageResult( diagnosisConclusion: DiagnosisConclusionEnum.values.firstWhere((e) => e.index == map['DiagnosisConclusion']), diagnosisResult: map['DiagnosisResult'] != null ? (map['DiagnosisResult'] as List).map((e)=>AIDiagnosisPerImageDTO.fromJson(e as Map)).toList() : null, diagnosisOrgans: map['DiagnosisOrgans'] != null ? (map['DiagnosisOrgans'] as List).map((e)=>DiagnosisOrganEnum.values.firstWhere((i) => i.index == e)).toList() : null, carotidResult: map['CarotidResult'] != null ? CarotidResultDTO.fromJson(map['CarotidResult']) : null, ); } Map toJson() { final map = Map(); map['DiagnosisConclusion'] = diagnosisConclusion.index; if(diagnosisResult != null) map['DiagnosisResult'] = diagnosisResult; if(diagnosisOrgans != null) map['DiagnosisOrgans'] = diagnosisOrgans; if(carotidResult != null) map['CarotidResult'] = carotidResult; return map; } } class DiagnosisImageRequest extends TokenRequest{ String? fileToken; String? diskPath; String? relationCode; DiagnosisImageRequest({ this.fileToken, this.diskPath, this.relationCode, String? token, }) : super( token: token, ); factory DiagnosisImageRequest.fromJson(Map map) { return DiagnosisImageRequest( fileToken: map['FileToken'], diskPath: map['DiskPath'], relationCode: map['RelationCode'], token: map['Token'], ); } Map toJson() { final map = super.toJson(); if(fileToken != null) map['FileToken'] = fileToken; if(diskPath != null) map['DiskPath'] = diskPath; if(relationCode != null) map['RelationCode'] = relationCode; return map; } } class DiagnosisPerImageDTO extends AIDiagnosisPerImageDTO{ String? remedicalCode; RemedicalFileDataTypeEnum dataType; double pixel; String? remedicalFileToken; String? aIFileToken; DiagnosisPerImageDTO({ this.remedicalCode, this.dataType = RemedicalFileDataTypeEnum.VinnoVidSingle, this.pixel = 0, this.remedicalFileToken, this.aIFileToken, int index = 0, double priorityScore = 0, List? diagResultsForEachOrgan, }) : super( index: index, priorityScore: priorityScore, diagResultsForEachOrgan: diagResultsForEachOrgan, ); factory DiagnosisPerImageDTO.fromJson(Map map) { return DiagnosisPerImageDTO( remedicalCode: map['RemedicalCode'], dataType: RemedicalFileDataTypeEnum.values.firstWhere((e) => e.index == map['DataType']), pixel: double.parse(map['Pixel'].toString()), remedicalFileToken: map['RemedicalFileToken'], aIFileToken: map['AIFileToken'], index: map['Index'], priorityScore: double.parse(map['PriorityScore'].toString()), diagResultsForEachOrgan: map['DiagResultsForEachOrgan'] != null ? (map['DiagResultsForEachOrgan'] as List).map((e)=>AIDiagnosisResultPerOrgan.fromJson(e as Map)).toList() : null, ); } Map toJson() { final map = super.toJson(); if(remedicalCode != null) map['RemedicalCode'] = remedicalCode; map['DataType'] = dataType.index; map['Pixel'] = pixel; if(remedicalFileToken != null) map['RemedicalFileToken'] = remedicalFileToken; if(aIFileToken != null) map['AIFileToken'] = aIFileToken; return map; } } class DiagnosisRemicalDTO { String? remedicalCode; RemedicalFileDataTypeEnum dataType; String? fileToken; List? diagnosisResult; CarotidResultDTO? carotidResult; DiagnosisRemicalDTO({ this.remedicalCode, this.dataType = RemedicalFileDataTypeEnum.VinnoVidSingle, this.fileToken, this.diagnosisResult, this.carotidResult, }); factory DiagnosisRemicalDTO.fromJson(Map map) { return DiagnosisRemicalDTO( remedicalCode: map['RemedicalCode'], dataType: RemedicalFileDataTypeEnum.values.firstWhere((e) => e.index == map['DataType']), fileToken: map['FileToken'], diagnosisResult: map['DiagnosisResult'] != null ? (map['DiagnosisResult'] as List).map((e)=>AIDiagnosisPerImageDTO.fromJson(e as Map)).toList() : null, carotidResult: map['CarotidResult'] != null ? CarotidResultDTO.fromJson(map['CarotidResult']) : null, ); } Map toJson() { final map = Map(); if(remedicalCode != null) map['RemedicalCode'] = remedicalCode; map['DataType'] = dataType.index; if(fileToken != null) map['FileToken'] = fileToken; if(diagnosisResult != null) map['DiagnosisResult'] = diagnosisResult; if(carotidResult != null) map['CarotidResult'] = carotidResult; return map; } } class DiagnosisReportResult { DiagnosisConclusionEnum diagnosisConclusion; List? diagnosisResult; List? carotidResult; DiagnosisReportResult({ this.diagnosisConclusion = DiagnosisConclusionEnum.NotRequired, this.diagnosisResult, this.carotidResult, }); factory DiagnosisReportResult.fromJson(Map map) { return DiagnosisReportResult( diagnosisConclusion: DiagnosisConclusionEnum.values.firstWhere((e) => e.index == map['DiagnosisConclusion']), diagnosisResult: map['DiagnosisResult'] != null ? (map['DiagnosisResult'] as List).map((e)=>DiagnosisPerImageDTO.fromJson(e as Map)).toList() : null, carotidResult: map['CarotidResult'] != null ? (map['CarotidResult'] as List).map((e)=>DiagnosisRemicalDTO.fromJson(e as Map)).toList() : null, ); } Map toJson() { final map = Map(); map['DiagnosisConclusion'] = diagnosisConclusion.index; if(diagnosisResult != null) map['DiagnosisResult'] = diagnosisResult; if(carotidResult != null) map['CarotidResult'] = carotidResult; return map; } } class DiagnosisReportRequest extends TokenRequest{ DiagnosisOrganEnum organ; List? remedicalList; DiagnosisReportRequest({ this.organ = DiagnosisOrganEnum.Null, this.remedicalList, String? token, }) : super( token: token, ); factory DiagnosisReportRequest.fromJson(Map map) { return DiagnosisReportRequest( organ: DiagnosisOrganEnum.values.firstWhere((e) => e.index == map['Organ']), remedicalList: map['RemedicalList'] != null ? (map['RemedicalList'] as List).map((e)=>DiagnosisRemicalDTO.fromJson(e as Map)).toList() : null, token: map['Token'], ); } Map toJson() { final map = super.toJson(); map['Organ'] = organ.index; if(remedicalList != null) map['RemedicalList'] = remedicalList; return map; } }