aIDiagnosis.m.dart 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924
  1. import 'liveConsultation.m.dart';
  2. class AIDiagnosisRect {
  3. int right;
  4. int bottom;
  5. int left;
  6. int top;
  7. int width;
  8. int height;
  9. AIDiagnosisRect({
  10. this.right = 0,
  11. this.bottom = 0,
  12. this.left = 0,
  13. this.top = 0,
  14. this.width = 0,
  15. this.height = 0,
  16. });
  17. factory AIDiagnosisRect.fromJson(Map<String, dynamic> map) {
  18. return AIDiagnosisRect(
  19. right: map['Right'],
  20. bottom: map['Bottom'],
  21. left: map['Left'],
  22. top: map['Top'],
  23. width: map['Width'],
  24. height: map['Height'],
  25. );
  26. }
  27. Map<String, dynamic> toJson() {
  28. final map = Map<String, dynamic>();
  29. map['Right'] = right;
  30. map['Bottom'] = bottom;
  31. map['Left'] = left;
  32. map['Top'] = top;
  33. map['Width'] = width;
  34. map['Height'] = height;
  35. return map;
  36. }
  37. }
  38. class AIDiagnosisPoint2D {
  39. int x;
  40. int y;
  41. AIDiagnosisPoint2D({
  42. this.x = 0,
  43. this.y = 0,
  44. });
  45. factory AIDiagnosisPoint2D.fromJson(Map<String, dynamic> map) {
  46. return AIDiagnosisPoint2D(
  47. x: map['X'],
  48. y: map['Y'],
  49. );
  50. }
  51. Map<String, dynamic> toJson() {
  52. final map = Map<String, dynamic>();
  53. map['X'] = x;
  54. map['Y'] = y;
  55. return map;
  56. }
  57. }
  58. enum DiagnosisDescriptionEnum {
  59. Shape,
  60. Orientation,
  61. EchoPattern,
  62. LesionBoundary,
  63. Margin,
  64. Calcification,
  65. LesionSize,
  66. ThyroidEchoPattern,
  67. ThyroidShape,
  68. ThyroidMargin,
  69. ThyroidEchogenicFoci,
  70. LiverShape,
  71. LiverBoundary,
  72. LiverEchoTexture,
  73. }
  74. class AIDiagnosisDescription {
  75. DiagnosisDescriptionEnum type;
  76. String? value;
  77. AIDiagnosisDescription({
  78. this.type = DiagnosisDescriptionEnum.Shape,
  79. this.value,
  80. });
  81. factory AIDiagnosisDescription.fromJson(Map<String, dynamic> map) {
  82. return AIDiagnosisDescription(
  83. type: DiagnosisDescriptionEnum.values.firstWhere((e) => e.index == map['Type']),
  84. value: map['Value'],
  85. );
  86. }
  87. Map<String, dynamic> toJson() {
  88. final map = Map<String, dynamic>();
  89. map['Type'] = type.index;
  90. if(value != null)
  91. map['Value'] = value;
  92. return map;
  93. }
  94. }
  95. class AIDetectedObject {
  96. int label;
  97. double confidence;
  98. AIDiagnosisRect? boundingBox;
  99. List<AIDiagnosisPoint2D >? contours;
  100. List<AIDiagnosisDescription >? descriptions;
  101. AIDetectedObject({
  102. this.label = 0,
  103. this.confidence = 0,
  104. this.boundingBox,
  105. this.contours,
  106. this.descriptions,
  107. });
  108. factory AIDetectedObject.fromJson(Map<String, dynamic> map) {
  109. return AIDetectedObject(
  110. label: map['Label'],
  111. confidence: double.parse(map['Confidence'].toString()),
  112. boundingBox: map['BoundingBox'] != null ? AIDiagnosisRect.fromJson(map['BoundingBox']) : null,
  113. contours: map['Contours'] != null ? (map['Contours'] as List).map((e)=>AIDiagnosisPoint2D.fromJson(e as Map<String,dynamic>)).toList() : null,
  114. descriptions: map['Descriptions'] != null ? (map['Descriptions'] as List).map((e)=>AIDiagnosisDescription.fromJson(e as Map<String,dynamic>)).toList() : null,
  115. );
  116. }
  117. Map<String, dynamic> toJson() {
  118. final map = Map<String, dynamic>();
  119. map['Label'] = label;
  120. map['Confidence'] = confidence;
  121. if(boundingBox != null)
  122. map['BoundingBox'] = boundingBox;
  123. if(contours != null)
  124. map['Contours'] = contours;
  125. if(descriptions != null)
  126. map['Descriptions'] = descriptions;
  127. return map;
  128. }
  129. }
  130. class AIDiagnosisResultPerOrgan {
  131. DiagnosisOrganEnum organ;
  132. AIDiagnosisRect? organBoundBox;
  133. List<AIDiagnosisPoint2D >? organContours;
  134. List<AIDiagnosisDescription >? organDescriptions;
  135. List<AIDetectedObject >? detectedObjects;
  136. AIDiagnosisResultPerOrgan({
  137. this.organ = DiagnosisOrganEnum.Null,
  138. this.organBoundBox,
  139. this.organContours,
  140. this.organDescriptions,
  141. this.detectedObjects,
  142. });
  143. factory AIDiagnosisResultPerOrgan.fromJson(Map<String, dynamic> map) {
  144. return AIDiagnosisResultPerOrgan(
  145. organ: DiagnosisOrganEnum.values.firstWhere((e) => e.index == map['Organ']),
  146. organBoundBox: map['OrganBoundBox'] != null ? AIDiagnosisRect.fromJson(map['OrganBoundBox']) : null,
  147. organContours: map['OrganContours'] != null ? (map['OrganContours'] as List).map((e)=>AIDiagnosisPoint2D.fromJson(e as Map<String,dynamic>)).toList() : null,
  148. organDescriptions: map['OrganDescriptions'] != null ? (map['OrganDescriptions'] as List).map((e)=>AIDiagnosisDescription.fromJson(e as Map<String,dynamic>)).toList() : null,
  149. detectedObjects: map['DetectedObjects'] != null ? (map['DetectedObjects'] as List).map((e)=>AIDetectedObject.fromJson(e as Map<String,dynamic>)).toList() : null,
  150. );
  151. }
  152. Map<String, dynamic> toJson() {
  153. final map = Map<String, dynamic>();
  154. map['Organ'] = organ.index;
  155. if(organBoundBox != null)
  156. map['OrganBoundBox'] = organBoundBox;
  157. if(organContours != null)
  158. map['OrganContours'] = organContours;
  159. if(organDescriptions != null)
  160. map['OrganDescriptions'] = organDescriptions;
  161. if(detectedObjects != null)
  162. map['DetectedObjects'] = detectedObjects;
  163. return map;
  164. }
  165. }
  166. class AIDiagnosisPerImageDTO {
  167. int index;
  168. double priorityScore;
  169. List<AIDiagnosisResultPerOrgan >? diagResultsForEachOrgan;
  170. AIDiagnosisPerImageDTO({
  171. this.index = 0,
  172. this.priorityScore = 0,
  173. this.diagResultsForEachOrgan,
  174. });
  175. factory AIDiagnosisPerImageDTO.fromJson(Map<String, dynamic> map) {
  176. return AIDiagnosisPerImageDTO(
  177. index: map['Index'],
  178. priorityScore: double.parse(map['PriorityScore'].toString()),
  179. diagResultsForEachOrgan: map['DiagResultsForEachOrgan'] != null ? (map['DiagResultsForEachOrgan'] as List).map((e)=>AIDiagnosisResultPerOrgan.fromJson(e as Map<String,dynamic>)).toList() : null,
  180. );
  181. }
  182. Map<String, dynamic> toJson() {
  183. final map = Map<String, dynamic>();
  184. map['Index'] = index;
  185. map['PriorityScore'] = priorityScore;
  186. if(diagResultsForEachOrgan != null)
  187. map['DiagResultsForEachOrgan'] = diagResultsForEachOrgan;
  188. return map;
  189. }
  190. }
  191. class DiagnosisImageResult {
  192. DiagnosisConclusionEnum diagnosisConclusion;
  193. List<AIDiagnosisPerImageDTO >? diagnosisResult;
  194. List<DiagnosisOrganEnum >? diagnosisOrgans;
  195. CarotidResultDTO? carotidResult;
  196. DiagnosisImageResult({
  197. this.diagnosisConclusion = DiagnosisConclusionEnum.NotRequired,
  198. this.diagnosisResult,
  199. this.diagnosisOrgans,
  200. this.carotidResult,
  201. });
  202. factory DiagnosisImageResult.fromJson(Map<String, dynamic> map) {
  203. return DiagnosisImageResult(
  204. diagnosisConclusion: DiagnosisConclusionEnum.values.firstWhere((e) => e.index == map['DiagnosisConclusion']),
  205. diagnosisResult: map['DiagnosisResult'] != null ? (map['DiagnosisResult'] as List).map((e)=>AIDiagnosisPerImageDTO.fromJson(e as Map<String,dynamic>)).toList() : null,
  206. diagnosisOrgans: map['DiagnosisOrgans'] != null ? (map['DiagnosisOrgans'] as List).map((e)=>DiagnosisOrganEnum.values.firstWhere((i) => i.index == e)).toList() : null,
  207. carotidResult: map['CarotidResult'] != null ? CarotidResultDTO.fromJson(map['CarotidResult']) : null,
  208. );
  209. }
  210. Map<String, dynamic> toJson() {
  211. final map = Map<String, dynamic>();
  212. map['DiagnosisConclusion'] = diagnosisConclusion.index;
  213. if(diagnosisResult != null)
  214. map['DiagnosisResult'] = diagnosisResult;
  215. if(diagnosisOrgans != null)
  216. map['DiagnosisOrgans'] = diagnosisOrgans;
  217. if(carotidResult != null)
  218. map['CarotidResult'] = carotidResult;
  219. return map;
  220. }
  221. }
  222. class DiagnosisImageRequest extends TokenRequest{
  223. String? fileToken;
  224. String? diskPath;
  225. String? relationCode;
  226. DiagnosisImageRequest({
  227. this.fileToken,
  228. this.diskPath,
  229. this.relationCode,
  230. String? token,
  231. }) : super(
  232. token: token,
  233. );
  234. factory DiagnosisImageRequest.fromJson(Map<String, dynamic> map) {
  235. return DiagnosisImageRequest(
  236. fileToken: map['FileToken'],
  237. diskPath: map['DiskPath'],
  238. relationCode: map['RelationCode'],
  239. token: map['Token'],
  240. );
  241. }
  242. Map<String, dynamic> toJson() {
  243. final map = super.toJson();
  244. if(fileToken != null)
  245. map['FileToken'] = fileToken;
  246. if(diskPath != null)
  247. map['DiskPath'] = diskPath;
  248. if(relationCode != null)
  249. map['RelationCode'] = relationCode;
  250. return map;
  251. }
  252. }
  253. class DiagnosisPerImageDTO extends AIDiagnosisPerImageDTO{
  254. String? remedicalCode;
  255. RemedicalFileDataTypeEnum dataType;
  256. double pixel;
  257. String? remedicalFileToken;
  258. String? aIFileToken;
  259. String? aIPreviewFileToken;
  260. String? perImageJson;
  261. DiagnosisConclusionEnum diagnosisConclusion;
  262. List<DiagnosisOrganEnum >? diagnosisOrgans;
  263. DiagnosisPerImageDTO({
  264. this.remedicalCode,
  265. this.dataType = RemedicalFileDataTypeEnum.VinnoVidSingle,
  266. this.pixel = 0,
  267. this.remedicalFileToken,
  268. this.aIFileToken,
  269. this.aIPreviewFileToken,
  270. this.perImageJson,
  271. this.diagnosisConclusion = DiagnosisConclusionEnum.NotRequired,
  272. this.diagnosisOrgans,
  273. int index = 0,
  274. double priorityScore = 0,
  275. List<AIDiagnosisResultPerOrgan >? diagResultsForEachOrgan,
  276. }) : super(
  277. index: index,
  278. priorityScore: priorityScore,
  279. diagResultsForEachOrgan: diagResultsForEachOrgan,
  280. );
  281. factory DiagnosisPerImageDTO.fromJson(Map<String, dynamic> map) {
  282. return DiagnosisPerImageDTO(
  283. remedicalCode: map['RemedicalCode'],
  284. dataType: RemedicalFileDataTypeEnum.values.firstWhere((e) => e.index == map['DataType']),
  285. pixel: double.parse(map['Pixel'].toString()),
  286. remedicalFileToken: map['RemedicalFileToken'],
  287. aIFileToken: map['AIFileToken'],
  288. aIPreviewFileToken: map['AIPreviewFileToken'],
  289. perImageJson: map['PerImageJson'],
  290. diagnosisConclusion: DiagnosisConclusionEnum.values.firstWhere((e) => e.index == map['DiagnosisConclusion']),
  291. diagnosisOrgans: map['DiagnosisOrgans'] != null ? (map['DiagnosisOrgans'] as List).map((e)=>DiagnosisOrganEnum.values.firstWhere((i) => i.index == e)).toList() : null,
  292. index: map['Index'],
  293. priorityScore: double.parse(map['PriorityScore'].toString()),
  294. diagResultsForEachOrgan: map['DiagResultsForEachOrgan'] != null ? (map['DiagResultsForEachOrgan'] as List).map((e)=>AIDiagnosisResultPerOrgan.fromJson(e as Map<String,dynamic>)).toList() : null,
  295. );
  296. }
  297. Map<String, dynamic> toJson() {
  298. final map = super.toJson();
  299. if(remedicalCode != null)
  300. map['RemedicalCode'] = remedicalCode;
  301. map['DataType'] = dataType.index;
  302. map['Pixel'] = pixel;
  303. if(remedicalFileToken != null)
  304. map['RemedicalFileToken'] = remedicalFileToken;
  305. if(aIFileToken != null)
  306. map['AIFileToken'] = aIFileToken;
  307. if(aIPreviewFileToken != null)
  308. map['AIPreviewFileToken'] = aIPreviewFileToken;
  309. if(perImageJson != null)
  310. map['PerImageJson'] = perImageJson;
  311. map['DiagnosisConclusion'] = diagnosisConclusion.index;
  312. if(diagnosisOrgans != null)
  313. map['DiagnosisOrgans'] = diagnosisOrgans;
  314. return map;
  315. }
  316. }
  317. class DiagnosisRemicalDTO {
  318. String? remedicalCode;
  319. RemedicalFileDataTypeEnum dataType;
  320. String? fileToken;
  321. List<AIDiagnosisPerImageDTO >? diagnosisResult;
  322. CarotidResultDTO? carotidResult;
  323. DiagnosisRemicalDTO({
  324. this.remedicalCode,
  325. this.dataType = RemedicalFileDataTypeEnum.VinnoVidSingle,
  326. this.fileToken,
  327. this.diagnosisResult,
  328. this.carotidResult,
  329. });
  330. factory DiagnosisRemicalDTO.fromJson(Map<String, dynamic> map) {
  331. return DiagnosisRemicalDTO(
  332. remedicalCode: map['RemedicalCode'],
  333. dataType: RemedicalFileDataTypeEnum.values.firstWhere((e) => e.index == map['DataType']),
  334. fileToken: map['FileToken'],
  335. diagnosisResult: map['DiagnosisResult'] != null ? (map['DiagnosisResult'] as List).map((e)=>AIDiagnosisPerImageDTO.fromJson(e as Map<String,dynamic>)).toList() : null,
  336. carotidResult: map['CarotidResult'] != null ? CarotidResultDTO.fromJson(map['CarotidResult']) : null,
  337. );
  338. }
  339. Map<String, dynamic> toJson() {
  340. final map = Map<String, dynamic>();
  341. if(remedicalCode != null)
  342. map['RemedicalCode'] = remedicalCode;
  343. map['DataType'] = dataType.index;
  344. if(fileToken != null)
  345. map['FileToken'] = fileToken;
  346. if(diagnosisResult != null)
  347. map['DiagnosisResult'] = diagnosisResult;
  348. if(carotidResult != null)
  349. map['CarotidResult'] = carotidResult;
  350. return map;
  351. }
  352. }
  353. class DiagnosisReportResult {
  354. DiagnosisConclusionEnum diagnosisConclusion;
  355. List<DiagnosisPerImageDTO >? diagnosisResult;
  356. List<DiagnosisRemicalDTO >? carotidResult;
  357. DiagnosisReportResult({
  358. this.diagnosisConclusion = DiagnosisConclusionEnum.NotRequired,
  359. this.diagnosisResult,
  360. this.carotidResult,
  361. });
  362. factory DiagnosisReportResult.fromJson(Map<String, dynamic> map) {
  363. return DiagnosisReportResult(
  364. diagnosisConclusion: DiagnosisConclusionEnum.values.firstWhere((e) => e.index == map['DiagnosisConclusion']),
  365. diagnosisResult: map['DiagnosisResult'] != null ? (map['DiagnosisResult'] as List).map((e)=>DiagnosisPerImageDTO.fromJson(e as Map<String,dynamic>)).toList() : null,
  366. carotidResult: map['CarotidResult'] != null ? (map['CarotidResult'] as List).map((e)=>DiagnosisRemicalDTO.fromJson(e as Map<String,dynamic>)).toList() : null,
  367. );
  368. }
  369. Map<String, dynamic> toJson() {
  370. final map = Map<String, dynamic>();
  371. map['DiagnosisConclusion'] = diagnosisConclusion.index;
  372. if(diagnosisResult != null)
  373. map['DiagnosisResult'] = diagnosisResult;
  374. if(carotidResult != null)
  375. map['CarotidResult'] = carotidResult;
  376. return map;
  377. }
  378. }
  379. class DiagnosisReportRequest extends TokenRequest{
  380. DiagnosisOrganEnum organ;
  381. List<DiagnosisRemicalDTO >? remedicalList;
  382. DiagnosisReportRequest({
  383. this.organ = DiagnosisOrganEnum.Null,
  384. this.remedicalList,
  385. String? token,
  386. }) : super(
  387. token: token,
  388. );
  389. factory DiagnosisReportRequest.fromJson(Map<String, dynamic> map) {
  390. return DiagnosisReportRequest(
  391. organ: DiagnosisOrganEnum.values.firstWhere((e) => e.index == map['Organ']),
  392. remedicalList: map['RemedicalList'] != null ? (map['RemedicalList'] as List).map((e)=>DiagnosisRemicalDTO.fromJson(e as Map<String,dynamic>)).toList() : null,
  393. token: map['Token'],
  394. );
  395. }
  396. Map<String, dynamic> toJson() {
  397. final map = super.toJson();
  398. map['Organ'] = organ.index;
  399. if(remedicalList != null)
  400. map['RemedicalList'] = remedicalList;
  401. return map;
  402. }
  403. }
  404. class GetDiagnosisConclusionResult {
  405. DiagnosisConclusionEnum diagnosisConclusion;
  406. List<DiagnosisOrganEnum >? diagnosisOrgans;
  407. GetDiagnosisConclusionResult({
  408. this.diagnosisConclusion = DiagnosisConclusionEnum.NotRequired,
  409. this.diagnosisOrgans,
  410. });
  411. factory GetDiagnosisConclusionResult.fromJson(Map<String, dynamic> map) {
  412. return GetDiagnosisConclusionResult(
  413. diagnosisConclusion: DiagnosisConclusionEnum.values.firstWhere((e) => e.index == map['DiagnosisConclusion']),
  414. diagnosisOrgans: map['DiagnosisOrgans'] != null ? (map['DiagnosisOrgans'] as List).map((e)=>DiagnosisOrganEnum.values.firstWhere((i) => i.index == e)).toList() : null,
  415. );
  416. }
  417. Map<String, dynamic> toJson() {
  418. final map = Map<String, dynamic>();
  419. map['DiagnosisConclusion'] = diagnosisConclusion.index;
  420. if(diagnosisOrgans != null)
  421. map['DiagnosisOrgans'] = diagnosisOrgans;
  422. return map;
  423. }
  424. }
  425. class GetDiagnosisConclusionRequest extends TokenRequest{
  426. String? perImageJson;
  427. GetDiagnosisConclusionRequest({
  428. this.perImageJson,
  429. String? token,
  430. }) : super(
  431. token: token,
  432. );
  433. factory GetDiagnosisConclusionRequest.fromJson(Map<String, dynamic> map) {
  434. return GetDiagnosisConclusionRequest(
  435. perImageJson: map['PerImageJson'],
  436. token: map['Token'],
  437. );
  438. }
  439. Map<String, dynamic> toJson() {
  440. final map = super.toJson();
  441. if(perImageJson != null)
  442. map['PerImageJson'] = perImageJson;
  443. return map;
  444. }
  445. }
  446. class EnumFieldDTO {
  447. int id;
  448. String? value;
  449. EnumFieldDTO({
  450. this.id = 0,
  451. this.value,
  452. });
  453. factory EnumFieldDTO.fromJson(Map<String, dynamic> map) {
  454. return EnumFieldDTO(
  455. id: map['Id'],
  456. value: map['Value'],
  457. );
  458. }
  459. Map<String, dynamic> toJson() {
  460. final map = Map<String, dynamic>();
  461. map['Id'] = id;
  462. if(value != null)
  463. map['Value'] = value;
  464. return map;
  465. }
  466. }
  467. class EnumItemDTO {
  468. String? code;
  469. List<EnumFieldDTO >? children;
  470. EnumItemDTO({
  471. this.code,
  472. this.children,
  473. });
  474. factory EnumItemDTO.fromJson(Map<String, dynamic> map) {
  475. return EnumItemDTO(
  476. code: map['Code'],
  477. children: map['Children'] != null ? (map['Children'] as List).map((e)=>EnumFieldDTO.fromJson(e as Map<String,dynamic>)).toList() : null,
  478. );
  479. }
  480. Map<String, dynamic> toJson() {
  481. final map = Map<String, dynamic>();
  482. if(code != null)
  483. map['Code'] = code;
  484. if(children != null)
  485. map['Children'] = children;
  486. return map;
  487. }
  488. }
  489. class GetDiagnosisEnumItemsResult {
  490. List<EnumItemDTO >? source;
  491. GetDiagnosisEnumItemsResult({
  492. this.source,
  493. });
  494. factory GetDiagnosisEnumItemsResult.fromJson(Map<String, dynamic> map) {
  495. return GetDiagnosisEnumItemsResult(
  496. source: map['Source'] != null ? (map['Source'] as List).map((e)=>EnumItemDTO.fromJson(e as Map<String,dynamic>)).toList() : null,
  497. );
  498. }
  499. Map<String, dynamic> toJson() {
  500. final map = Map<String, dynamic>();
  501. if(source != null)
  502. map['Source'] = source;
  503. return map;
  504. }
  505. }
  506. class GetDiagnosisEnumItemsRequest extends TokenRequest{
  507. GetDiagnosisEnumItemsRequest({
  508. String? token,
  509. }) : super(
  510. token: token,
  511. );
  512. factory GetDiagnosisEnumItemsRequest.fromJson(Map<String, dynamic> map) {
  513. return GetDiagnosisEnumItemsRequest(
  514. token: map['Token'],
  515. );
  516. }
  517. Map<String, dynamic> toJson() {
  518. final map = super.toJson();
  519. return map;
  520. }
  521. }
  522. enum DiagnosisKeyPointType {
  523. Null,
  524. OtherKeyPoints,
  525. HorizontalPointLeft,
  526. HorizontalPointRight,
  527. VerticalPointUp,
  528. VerticalPointDown,
  529. }
  530. class DiagnosisKeyPointDTO {
  531. DiagnosisKeyPointType type;
  532. AIDiagnosisPoint2D? point;
  533. int indexInContour;
  534. DiagnosisKeyPointDTO({
  535. this.type = DiagnosisKeyPointType.Null,
  536. this.point,
  537. this.indexInContour = 0,
  538. });
  539. factory DiagnosisKeyPointDTO.fromJson(Map<String, dynamic> map) {
  540. return DiagnosisKeyPointDTO(
  541. type: DiagnosisKeyPointType.values.firstWhere((e) => e.index == map['Type']),
  542. point: map['Point'] != null ? AIDiagnosisPoint2D.fromJson(map['Point']) : null,
  543. indexInContour: map['IndexInContour'],
  544. );
  545. }
  546. Map<String, dynamic> toJson() {
  547. final map = Map<String, dynamic>();
  548. map['Type'] = type.index;
  549. if(point != null)
  550. map['Point'] = point;
  551. map['IndexInContour'] = indexInContour;
  552. return map;
  553. }
  554. }
  555. class AIDiagnosisLesionSize {
  556. AIDiagnosisPoint2D? horizontalPoint1;
  557. AIDiagnosisPoint2D? horizontalPoint2;
  558. AIDiagnosisPoint2D? verticalPoint1;
  559. AIDiagnosisPoint2D? verticalPoint2;
  560. int horizontalLengthInPixel;
  561. int verticalLengthInPixel;
  562. AIDiagnosisLesionSize({
  563. this.horizontalPoint1,
  564. this.horizontalPoint2,
  565. this.verticalPoint1,
  566. this.verticalPoint2,
  567. this.horizontalLengthInPixel = 0,
  568. this.verticalLengthInPixel = 0,
  569. });
  570. factory AIDiagnosisLesionSize.fromJson(Map<String, dynamic> map) {
  571. return AIDiagnosisLesionSize(
  572. horizontalPoint1: map['HorizontalPoint1'] != null ? AIDiagnosisPoint2D.fromJson(map['HorizontalPoint1']) : null,
  573. horizontalPoint2: map['HorizontalPoint2'] != null ? AIDiagnosisPoint2D.fromJson(map['HorizontalPoint2']) : null,
  574. verticalPoint1: map['VerticalPoint1'] != null ? AIDiagnosisPoint2D.fromJson(map['VerticalPoint1']) : null,
  575. verticalPoint2: map['VerticalPoint2'] != null ? AIDiagnosisPoint2D.fromJson(map['VerticalPoint2']) : null,
  576. horizontalLengthInPixel: map['HorizontalLengthInPixel'],
  577. verticalLengthInPixel: map['VerticalLengthInPixel'],
  578. );
  579. }
  580. Map<String, dynamic> toJson() {
  581. final map = Map<String, dynamic>();
  582. if(horizontalPoint1 != null)
  583. map['HorizontalPoint1'] = horizontalPoint1;
  584. if(horizontalPoint2 != null)
  585. map['HorizontalPoint2'] = horizontalPoint2;
  586. if(verticalPoint1 != null)
  587. map['VerticalPoint1'] = verticalPoint1;
  588. if(verticalPoint2 != null)
  589. map['VerticalPoint2'] = verticalPoint2;
  590. map['HorizontalLengthInPixel'] = horizontalLengthInPixel;
  591. map['VerticalLengthInPixel'] = verticalLengthInPixel;
  592. return map;
  593. }
  594. }
  595. class GetKeyPointsOfContourRequest extends TokenRequest{
  596. List<AIDiagnosisPoint2D >? contours;
  597. AIDiagnosisLesionSize? lesionSize;
  598. GetKeyPointsOfContourRequest({
  599. this.contours,
  600. this.lesionSize,
  601. String? token,
  602. }) : super(
  603. token: token,
  604. );
  605. factory GetKeyPointsOfContourRequest.fromJson(Map<String, dynamic> map) {
  606. return GetKeyPointsOfContourRequest(
  607. contours: map['Contours'] != null ? (map['Contours'] as List).map((e)=>AIDiagnosisPoint2D.fromJson(e as Map<String,dynamic>)).toList() : null,
  608. lesionSize: map['LesionSize'] != null ? AIDiagnosisLesionSize.fromJson(map['LesionSize']) : null,
  609. token: map['Token'],
  610. );
  611. }
  612. Map<String, dynamic> toJson() {
  613. final map = super.toJson();
  614. if(contours != null)
  615. map['Contours'] = contours;
  616. if(lesionSize != null)
  617. map['LesionSize'] = lesionSize;
  618. return map;
  619. }
  620. }
  621. class AffectedKeyPointsByDragActionRequest extends TokenRequest{
  622. List<DiagnosisKeyPointDTO >? keyPoints;
  623. AIDiagnosisPoint2D? mousePoint;
  624. AffectedKeyPointsByDragActionRequest({
  625. this.keyPoints,
  626. this.mousePoint,
  627. String? token,
  628. }) : super(
  629. token: token,
  630. );
  631. factory AffectedKeyPointsByDragActionRequest.fromJson(Map<String, dynamic> map) {
  632. return AffectedKeyPointsByDragActionRequest(
  633. keyPoints: map['KeyPoints'] != null ? (map['KeyPoints'] as List).map((e)=>DiagnosisKeyPointDTO.fromJson(e as Map<String,dynamic>)).toList() : null,
  634. mousePoint: map['MousePoint'] != null ? AIDiagnosisPoint2D.fromJson(map['MousePoint']) : null,
  635. token: map['Token'],
  636. );
  637. }
  638. Map<String, dynamic> toJson() {
  639. final map = super.toJson();
  640. if(keyPoints != null)
  641. map['KeyPoints'] = keyPoints;
  642. if(mousePoint != null)
  643. map['MousePoint'] = mousePoint;
  644. return map;
  645. }
  646. }
  647. class ContourAndKeyPointsAfterDragResult {
  648. List<AIDiagnosisPoint2D >? dstContours;
  649. List<DiagnosisKeyPointDTO >? dstKeyPoints;
  650. List<int >? affectedKeyPointIndexes;
  651. ContourAndKeyPointsAfterDragResult({
  652. this.dstContours,
  653. this.dstKeyPoints,
  654. this.affectedKeyPointIndexes,
  655. });
  656. factory ContourAndKeyPointsAfterDragResult.fromJson(Map<String, dynamic> map) {
  657. return ContourAndKeyPointsAfterDragResult(
  658. dstContours: map['DstContours'] != null ? (map['DstContours'] as List).map((e)=>AIDiagnosisPoint2D.fromJson(e as Map<String,dynamic>)).toList() : null,
  659. dstKeyPoints: map['DstKeyPoints'] != null ? (map['DstKeyPoints'] as List).map((e)=>DiagnosisKeyPointDTO.fromJson(e as Map<String,dynamic>)).toList() : null,
  660. affectedKeyPointIndexes: map['AffectedKeyPointIndexes'] != null ? map['AffectedKeyPointIndexes'].cast<int>().toList() : null,
  661. );
  662. }
  663. Map<String, dynamic> toJson() {
  664. final map = Map<String, dynamic>();
  665. if(dstContours != null)
  666. map['DstContours'] = dstContours;
  667. if(dstKeyPoints != null)
  668. map['DstKeyPoints'] = dstKeyPoints;
  669. if(affectedKeyPointIndexes != null)
  670. map['AffectedKeyPointIndexes'] = affectedKeyPointIndexes;
  671. return map;
  672. }
  673. }
  674. class ContourAndKeyPointsAfterDragRequest extends TokenRequest{
  675. List<AIDiagnosisPoint2D >? contours;
  676. List<DiagnosisKeyPointDTO >? keyPoints;
  677. AIDiagnosisPoint2D? startPoint;
  678. AIDiagnosisPoint2D? endPoint;
  679. ContourAndKeyPointsAfterDragRequest({
  680. this.contours,
  681. this.keyPoints,
  682. this.startPoint,
  683. this.endPoint,
  684. String? token,
  685. }) : super(
  686. token: token,
  687. );
  688. factory ContourAndKeyPointsAfterDragRequest.fromJson(Map<String, dynamic> map) {
  689. return ContourAndKeyPointsAfterDragRequest(
  690. contours: map['Contours'] != null ? (map['Contours'] as List).map((e)=>AIDiagnosisPoint2D.fromJson(e as Map<String,dynamic>)).toList() : null,
  691. keyPoints: map['KeyPoints'] != null ? (map['KeyPoints'] as List).map((e)=>DiagnosisKeyPointDTO.fromJson(e as Map<String,dynamic>)).toList() : null,
  692. startPoint: map['StartPoint'] != null ? AIDiagnosisPoint2D.fromJson(map['StartPoint']) : null,
  693. endPoint: map['EndPoint'] != null ? AIDiagnosisPoint2D.fromJson(map['EndPoint']) : null,
  694. token: map['Token'],
  695. );
  696. }
  697. Map<String, dynamic> toJson() {
  698. final map = super.toJson();
  699. if(contours != null)
  700. map['Contours'] = contours;
  701. if(keyPoints != null)
  702. map['KeyPoints'] = keyPoints;
  703. if(startPoint != null)
  704. map['StartPoint'] = startPoint;
  705. if(endPoint != null)
  706. map['EndPoint'] = endPoint;
  707. return map;
  708. }
  709. }
  710. class MinimumDistanceToContourPointsResult {
  711. double distanceCaught;
  712. int closestPointIndex;
  713. MinimumDistanceToContourPointsResult({
  714. this.distanceCaught = 0,
  715. this.closestPointIndex = 0,
  716. });
  717. factory MinimumDistanceToContourPointsResult.fromJson(Map<String, dynamic> map) {
  718. return MinimumDistanceToContourPointsResult(
  719. distanceCaught: double.parse(map['DistanceCaught'].toString()),
  720. closestPointIndex: map['ClosestPointIndex'],
  721. );
  722. }
  723. Map<String, dynamic> toJson() {
  724. final map = Map<String, dynamic>();
  725. map['DistanceCaught'] = distanceCaught;
  726. map['ClosestPointIndex'] = closestPointIndex;
  727. return map;
  728. }
  729. }
  730. class MinimumDistanceToContourPointsRequest extends TokenRequest{
  731. List<AIDiagnosisPoint2D >? contourPoints;
  732. AIDiagnosisPoint2D? mousePoint;
  733. MinimumDistanceToContourPointsRequest({
  734. this.contourPoints,
  735. this.mousePoint,
  736. String? token,
  737. }) : super(
  738. token: token,
  739. );
  740. factory MinimumDistanceToContourPointsRequest.fromJson(Map<String, dynamic> map) {
  741. return MinimumDistanceToContourPointsRequest(
  742. contourPoints: map['ContourPoints'] != null ? (map['ContourPoints'] as List).map((e)=>AIDiagnosisPoint2D.fromJson(e as Map<String,dynamic>)).toList() : null,
  743. mousePoint: map['MousePoint'] != null ? AIDiagnosisPoint2D.fromJson(map['MousePoint']) : null,
  744. token: map['Token'],
  745. );
  746. }
  747. Map<String, dynamic> toJson() {
  748. final map = super.toJson();
  749. if(contourPoints != null)
  750. map['ContourPoints'] = contourPoints;
  751. if(mousePoint != null)
  752. map['MousePoint'] = mousePoint;
  753. return map;
  754. }
  755. }
  756. class ContourMergeResult {
  757. List<AIDiagnosisPoint2D >? dstContours;
  758. AIDiagnosisLesionSize? dstLesionSize;
  759. ContourMergeResult({
  760. this.dstContours,
  761. this.dstLesionSize,
  762. });
  763. factory ContourMergeResult.fromJson(Map<String, dynamic> map) {
  764. return ContourMergeResult(
  765. dstContours: map['DstContours'] != null ? (map['DstContours'] as List).map((e)=>AIDiagnosisPoint2D.fromJson(e as Map<String,dynamic>)).toList() : null,
  766. dstLesionSize: map['DstLesionSize'] != null ? AIDiagnosisLesionSize.fromJson(map['DstLesionSize']) : null,
  767. );
  768. }
  769. Map<String, dynamic> toJson() {
  770. final map = Map<String, dynamic>();
  771. if(dstContours != null)
  772. map['DstContours'] = dstContours;
  773. if(dstLesionSize != null)
  774. map['DstLesionSize'] = dstLesionSize;
  775. return map;
  776. }
  777. }
  778. class ContourMergeRequest extends TokenRequest{
  779. List<AIDiagnosisPoint2D >? contourPoints;
  780. AIDiagnosisLesionSize? lesionSize;
  781. List<AIDiagnosisPoint2D >? drawingNewContourPoints;
  782. ContourMergeRequest({
  783. this.contourPoints,
  784. this.lesionSize,
  785. this.drawingNewContourPoints,
  786. String? token,
  787. }) : super(
  788. token: token,
  789. );
  790. factory ContourMergeRequest.fromJson(Map<String, dynamic> map) {
  791. return ContourMergeRequest(
  792. contourPoints: map['ContourPoints'] != null ? (map['ContourPoints'] as List).map((e)=>AIDiagnosisPoint2D.fromJson(e as Map<String,dynamic>)).toList() : null,
  793. lesionSize: map['LesionSize'] != null ? AIDiagnosisLesionSize.fromJson(map['LesionSize']) : null,
  794. drawingNewContourPoints: map['DrawingNewContourPoints'] != null ? (map['DrawingNewContourPoints'] as List).map((e)=>AIDiagnosisPoint2D.fromJson(e as Map<String,dynamic>)).toList() : null,
  795. token: map['Token'],
  796. );
  797. }
  798. Map<String, dynamic> toJson() {
  799. final map = super.toJson();
  800. if(contourPoints != null)
  801. map['ContourPoints'] = contourPoints;
  802. if(lesionSize != null)
  803. map['LesionSize'] = lesionSize;
  804. if(drawingNewContourPoints != null)
  805. map['DrawingNewContourPoints'] = drawingNewContourPoints;
  806. return map;
  807. }
  808. }