Mercurial > hg > orthanc-java
annotate Samples/FHIR/src/main/java/OrthancResource.java @ 12:31fc239e3481
added missing dependency
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Sat, 21 Oct 2023 10:08:08 +0200 |
parents | 8d876a4f541b |
children | 0dc05fe76bd5 |
rev | line source |
---|---|
11
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
1 /** |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
2 * SPDX-FileCopyrightText: 2023 Sebastien Jodogne, UCLouvain, Belgium |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
3 * SPDX-License-Identifier: GPL-3.0-or-later |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
4 */ |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
5 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
6 /** |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
7 * Java plugin for Orthanc |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
8 * Copyright (C) 2023 Sebastien Jodogne, UCLouvain, Belgium |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
9 * |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
10 * This program is free software: you can redistribute it and/or |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
11 * modify it under the terms of the GNU General Public License as |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
12 * published by the Free Software Foundation, either version 3 of the |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
13 * License, or (at your option) any later version. |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
14 * |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
15 * This program is distributed in the hope that it will be useful, but |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
16 * WITHOUT ANY WARRANTY; without even the implied warranty of |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
18 * General Public License for more details. |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
19 * |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
20 * You should have received a copy of the GNU General Public License |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
21 * along with this program. If not, see <http://www.gnu.org/licenses/>. |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
22 **/ |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
23 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
24 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
25 import be.uclouvain.orthanc.ResourceType; |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
26 import org.hl7.fhir.r5.model.*; |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
27 import org.json.JSONArray; |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
28 import org.json.JSONObject; |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
29 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
30 import java.nio.charset.StandardCharsets; |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
31 import java.util.ArrayList; |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
32 import java.util.HashMap; |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
33 import java.util.List; |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
34 import java.util.Map; |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
35 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
36 public class OrthancResource { |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
37 private ResourceType type; |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
38 private String id; |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
39 private String lastUpdate; |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
40 private Map<String, String> tags; |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
41 private List<String> children; |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
42 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
43 public OrthancResource(JSONObject info) { |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
44 String s = info.getString("Type"); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
45 if (s.equals("Patient")) { |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
46 type = ResourceType.PATIENT; |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
47 } else if (s.equals("Study")) { |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
48 type = ResourceType.STUDY; |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
49 } else if (s.equals("Series")) { |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
50 type = ResourceType.SERIES; |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
51 } else if (s.equals("Instance")) { |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
52 type = ResourceType.INSTANCE; |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
53 } else { |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
54 throw new RuntimeException("Unknown resource type"); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
55 } |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
56 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
57 id = info.getString("ID"); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
58 lastUpdate = info.optString("LastUpdate"); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
59 tags = new HashMap<>(); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
60 addToDictionary(tags, info.getJSONObject("MainDicomTags")); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
61 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
62 if (type != ResourceType.INSTANCE) { |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
63 String childKey; |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
64 switch (type) { |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
65 case PATIENT: |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
66 childKey = "Studies"; |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
67 break; |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
68 case STUDY: |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
69 childKey = "Series"; |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
70 addToDictionary(tags, info.getJSONObject("PatientMainDicomTags")); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
71 break; |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
72 case SERIES: |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
73 childKey = "Instances"; |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
74 break; |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
75 default: |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
76 throw new RuntimeException(); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
77 } |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
78 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
79 children = new ArrayList<>(); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
80 addToListOfStrings(children, info.getJSONArray(childKey)); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
81 } |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
82 } |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
83 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
84 static public void addToDictionary(Map<String, String> target, |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
85 JSONObject source) { |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
86 for (String key : source.keySet()) { |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
87 target.put(key, source.getString(key)); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
88 } |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
89 } |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
90 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
91 static public void addToListOfStrings(List<String> target, |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
92 JSONArray source) { |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
93 for (int i = 0; i < source.length(); i++) { |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
94 target.add(source.getString(i)); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
95 } |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
96 } |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
97 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
98 public ResourceType getType() { |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
99 return type; |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
100 } |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
101 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
102 public String getId() { |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
103 return id; |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
104 } |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
105 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
106 public String getLastUpdate() { |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
107 return lastUpdate; |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
108 } |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
109 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
110 public Map<String, String> getTags() { |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
111 return tags; |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
112 } |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
113 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
114 public List<String> getChildren() { |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
115 if (type == ResourceType.INSTANCE) { |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
116 throw new RuntimeException("A DICOM instance has no child"); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
117 } else { |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
118 return children; |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
119 } |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
120 } |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
121 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
122 public static List<OrthancResource> find(IOrthancConnection connection, |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
123 ResourceType type, |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
124 Map<String, String> tags, |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
125 boolean caseSensitive) { |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
126 JSONObject query = new JSONObject(); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
127 for (Map.Entry<String, String> entry : tags.entrySet()) { |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
128 query.put(entry.getKey(), entry.getValue()); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
129 } |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
130 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
131 JSONObject request = new JSONObject(); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
132 request.put("Expand", true); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
133 request.put("Query", query); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
134 request.put("Short", true); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
135 request.put("CaseSensitive", caseSensitive); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
136 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
137 switch (type) { |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
138 case PATIENT: |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
139 request.put("Level", "Patient"); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
140 break; |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
141 case STUDY: |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
142 request.put("Level", "Study"); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
143 break; |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
144 case SERIES: |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
145 request.put("Level", "Series"); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
146 break; |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
147 case INSTANCE: |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
148 request.put("Level", "Instance"); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
149 break; |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
150 default: |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
151 throw new RuntimeException(); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
152 } |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
153 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
154 byte[] response = connection.doPost("/tools/find", request.toString().getBytes(StandardCharsets.UTF_8)); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
155 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
156 JSONArray arr = new JSONArray(new String(response, StandardCharsets.UTF_8)); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
157 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
158 List<OrthancResource> result = new ArrayList<>(); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
159 for (int i = 0; i < arr.length(); i++) { |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
160 result.add(new OrthancResource(arr.getJSONObject(i))); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
161 } |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
162 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
163 return result; |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
164 } |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
165 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
166 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
167 public Patient getFhirPatient() { |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
168 if (type != ResourceType.PATIENT) { |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
169 throw new RuntimeException("Not a patient"); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
170 } |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
171 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
172 Patient patient = new Patient(); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
173 patient.setId(getTags().getOrDefault(Toolbox.TAG_PATIENT_ID, "")); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
174 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
175 String birthDate = getTags().getOrDefault(Toolbox.TAG_PATIENT_BIRTH_DATE, ""); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
176 if (birthDate != null) { |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
177 patient.setBirthDate(Toolbox.parseDicomDate(birthDate)); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
178 } |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
179 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
180 String patientName = getTags().getOrDefault(Toolbox.TAG_PATIENT_NAME, ""); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
181 if (!patientName.isEmpty()) { |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
182 patient.addName(); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
183 HumanName name = patient.getName().get(0); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
184 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
185 String[] parts = patientName.split("\\^"); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
186 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
187 // https://dicom.nema.org/medical/dicom/current/output/chtml/part19/sect_10.2.html |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
188 // https://www.hl7.org/fhir/datatypes.html#HumanName |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
189 if (parts.length > 0) { |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
190 name.setFamily(parts[0]); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
191 } |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
192 for (int i = 1; i < parts.length; i++) { |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
193 name.addGiven(parts[i]); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
194 } |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
195 } |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
196 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
197 String sex = getTags().getOrDefault(Toolbox.TAG_PATIENT_SEX, ""); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
198 if (sex.equals("M")) { |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
199 patient.setGender(Enumerations.AdministrativeGender.MALE); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
200 } else if (sex.equals("F")) { |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
201 patient.setGender(Enumerations.AdministrativeGender.FEMALE); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
202 } |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
203 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
204 return patient; |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
205 } |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
206 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
207 public ImagingStudy getFhirStudy(IOrthancConnection orthanc) { |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
208 if (type != ResourceType.STUDY) { |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
209 throw new RuntimeException("Not a study"); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
210 } |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
211 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
212 boolean hasDicomWeb = IOrthancConnection.hasPluginInstalled(orthanc, "dicom-web"); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
213 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
214 // https://build.fhir.org/imagingstudy-example.json.html |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
215 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
216 ImagingStudy study = new ImagingStudy(); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
217 study.setId(getTags().getOrDefault(Toolbox.TAG_STUDY_INSTANCE_UID, "")); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
218 study.setStatus(ImagingStudy.ImagingStudyStatus.AVAILABLE); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
219 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
220 if (hasDicomWeb) { |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
221 study.addEndpoint(Toolbox.createLocalReference("Endpoint", EndpointProvider.ID)); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
222 } |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
223 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
224 study.setSubject(Toolbox.createLocalReference("Patient", getTags().getOrDefault(Toolbox.TAG_PATIENT_ID, ""))); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
225 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
226 String studyDate = getTags().getOrDefault(Toolbox.TAG_STUDY_DATE, ""); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
227 if (!studyDate.isEmpty()) { |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
228 study.setStarted(Toolbox.parseDicomDate(studyDate)); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
229 } |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
230 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
231 study.addIdentifier(); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
232 study.getIdentifier().get(0).setSystem("urn:dicom:uid"); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
233 study.getIdentifier().get(0).setValue("urn:oid:" + study.getId()); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
234 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
235 study.setNumberOfSeries(getChildren().size()); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
236 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
237 int countInstances = 0; |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
238 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
239 Map<String, String> shortTags = new HashMap<>(); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
240 shortTags.put("short", ""); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
241 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
242 Map<String, String> expand = new HashMap<>(); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
243 expand.put("expand", ""); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
244 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
245 for (int i = 0; i < getChildren().size(); i++) { |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
246 String seriesUri = "/series/" + getChildren().get(i); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
247 OrthancResource orthancSeries = new OrthancResource(IOrthancConnection.getJSONObject(orthanc, seriesUri, shortTags)); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
248 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
249 ImagingStudy.ImagingStudySeriesComponent fhirSeries = study.addSeries(); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
250 fhirSeries.setUid(orthancSeries.getTags().getOrDefault(Toolbox.TAG_SERIES_INSTANCE_UID, "")); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
251 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
252 String modality = orthancSeries.getTags().getOrDefault(Toolbox.TAG_MODALITY, ""); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
253 if (!modality.isEmpty()) { |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
254 fhirSeries.setModality(Toolbox.createDicomCodeableConcept(modality)); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
255 } |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
256 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
257 String seriesDescription = orthancSeries.getTags().getOrDefault(Toolbox.TAG_SERIES_DESCRIPTION, ""); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
258 if (!seriesDescription.isEmpty()) { |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
259 fhirSeries.setDescription(seriesDescription); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
260 } |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
261 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
262 String seriesNumber = orthancSeries.getTags().getOrDefault(Toolbox.TAG_SERIES_NUMBER, ""); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
263 if (!seriesNumber.isEmpty()) { |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
264 fhirSeries.setNumber(Integer.parseInt(seriesNumber)); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
265 } |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
266 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
267 fhirSeries.setNumberOfInstances(orthancSeries.getChildren().size()); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
268 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
269 for (int j = 0; j < orthancSeries.getChildren().size(); j++) { |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
270 String instanceUri = "/instances/" + orthancSeries.getChildren().get(j); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
271 OrthancResource orthancInstance = new OrthancResource(IOrthancConnection.getJSONObject(orthanc, instanceUri, shortTags)); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
272 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
273 JSONObject instanceMetadata = IOrthancConnection.getJSONObject(orthanc, instanceUri + "/metadata", expand); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
274 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
275 ImagingStudy.ImagingStudySeriesInstanceComponent fhirInstance = fhirSeries.addInstance(); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
276 fhirInstance.setUid(orthancInstance.getTags().getOrDefault(Toolbox.TAG_SOP_INSTANCE_UID, "")); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
277 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
278 String instanceNumber = orthancInstance.getTags().getOrDefault(Toolbox.TAG_INSTANCE_NUMBER, ""); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
279 if (!instanceNumber.isEmpty()) { |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
280 fhirInstance.setNumber(Integer.parseInt(instanceNumber)); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
281 } |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
282 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
283 String sopClassUid = instanceMetadata.optString("SopClassUid", ""); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
284 if (!sopClassUid.isEmpty()) { |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
285 fhirInstance.setSopClass(new Coding("urn:ietf:rfc:3986", "urn:oid:" + sopClassUid, "")); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
286 } |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
287 } |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
288 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
289 countInstances += orthancSeries.getChildren().size(); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
290 } |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
291 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
292 study.setNumberOfInstances(countInstances); |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
293 |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
294 return study; |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
295 } |
8d876a4f541b
added sample FHIR server
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
296 } |