3 using System.Collections;
4 using System.Collections.Generic;
11 public enum OperationBodyPart {
20 public string firstName {
get;
private set; }
21 public string lastName {
get;
private set; }
23 get {
return this.firstName +
" " + this.lastName; }
26 public string birthDate {
get;
private set; }
27 public DateTime birthDateDT {
get;
private set; }
28 public string operationDate {
get;
private set; }
29 public string diagnosis {
get;
private set; }
30 public string details {
get;
private set; }
31 public string sex {
get;
private set; }
32 public string path {
get;
private set; }
33 public string dicomPath {
get;
private set; }
34 public string meshPath {
get;
private set; }
35 public int age {
get;
private set; }
36 public OperationBodyPart operationBodyPart {
get;
private set; }
37 public List<string> warnings {
get;
private set; }
44 string metaFile = Path.Combine( path,
"meta.json" );
45 string raw = File.ReadAllText(metaFile);
48 data = JsonMapper.ToObject(raw);
50 throw new System.Exception(
"Cannot parse meta.json. Invalid syntax?");
52 warnings =
new List<string> ();
53 operationBodyPart = OperationBodyPart.Unknown;
55 if (data.Keys.Contains (
"meta")) {
56 JsonData metaData = data[
"meta"];
57 if (metaData.Keys.Contains (
"FirstName")) {
58 firstName = metaData [
"FirstName"].ToString ();
60 if (metaData.Keys.Contains (
"LastName")) {
61 lastName = metaData [
"LastName"].ToString ();
63 if (metaData.Keys.Contains (
"DateOfBirth")) {
64 birthDate = metaData [
"DateOfBirth"].ToString ();
67 IFormatProvider culture = System.Threading.Thread.CurrentThread.CurrentCulture;
68 DateTime dt = DateTime.Parse(birthDate, culture, System.Globalization.DateTimeStyles.AssumeLocal);
69 age = DateTime.Now.Year - dt.Year;
70 birthDate = dt.Day +
" " + dt.ToString(
"MMMM") +
" " + dt.Year;
75 if (metaData.Keys.Contains (
"Diagnosis")) {
76 diagnosis = metaData [
"Diagnosis"].ToString ();
78 if (metaData.Keys.Contains (
"Details")) {
79 details = metaData [
"Details"].ToString ();
81 if (metaData.Keys.Contains (
"DateOfOperation")) {
82 operationDate = metaData [
"DateOfOperation"].ToString ();
84 if (metaData.Keys.Contains (
"Sex")) {
85 sex = metaData [
"Sex"].ToString ();
87 if (metaData.Keys.Contains (
"BodyPart")) {
88 string ot = metaData [
"BodyPart"].ToString ();
90 operationBodyPart = (OperationBodyPart)Enum.Parse (typeof(OperationBodyPart), ot);
92 Debug.LogWarning (
"Could not interpret BodyPart.");
95 if (metaData.Keys.Contains (
"Warnings")) {
96 for (
int i = 0; i < metaData [
"Warnings"].Count; i++) {
97 warnings.Add (metaData [
"Warnings"] [i].ToString ());
102 if (data.Keys.Contains(
"mesh"))
104 JsonData metaData = data[
"mesh"];
105 if (metaData.Keys.Contains(
"path"))
107 meshPath = path +
"/" + metaData[
"path"].ToString();
111 if (data.Keys.Contains(
"dicom"))
113 JsonData metaData = data[
"dicom"];
114 if (metaData.Keys.Contains(
"path"))
116 dicomPath = path +
"/" + metaData[
"path"].ToString(); ;
124 firstName = toCopy.firstName;
125 lastName = toCopy.lastName;
126 birthDate = toCopy.birthDate;
127 birthDateDT = toCopy.birthDateDT;
128 operationDate = toCopy.operationDate;
129 diagnosis = toCopy.diagnosis;
130 details = toCopy.details;
133 dicomPath = toCopy.dicomPath;
134 meshPath = toCopy.meshPath;
136 operationBodyPart = toCopy.operationBodyPart;
137 warnings =
new List<string> (toCopy.warnings);
141 public static PatientMeta createFromFolder(
string folder )
143 string patientsDirectoryFile = Path.Combine( folder,
"meta.json" );
144 if (File.Exists(patientsDirectoryFile))
148 Debug.LogWarning (
"No meta.json found in\n\t" + folder +
"\n\tInvalid patient folder.");
153 public override string ToString()
155 return base.ToString () +
" (Name: " + name +
")";