Slicer 5.6
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
Loading...
Searching...
No Matches
vtkSlicerTerminologiesModuleLogic.h
Go to the documentation of this file.
1/*==============================================================================
2
3 Program: 3D Slicer
4
5 Copyright (c) Laboratory for Percutaneous Surgery (PerkLab)
6 Queen's University, Kingston, ON, Canada. All Rights Reserved.
7
8 See COPYRIGHT.txt
9 or http://www.slicer.org/copyright/copyright.txt for details.
10
11 Unless required by applicable law or agreed to in writing, software
12 distributed under the License is distributed on an "AS IS" BASIS,
13 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 See the License for the specific language governing permissions and
15 limitations under the License.
16
17 This file was originally developed by Csaba Pinter, PerkLab, Queen's University
18 and was supported through the Applied Cancer Research Unit program of Cancer Care
19 Ontario with funds provided by the Ontario Ministry of Health and Long-Term Care
20
21==============================================================================*/
22
23#ifndef __vtkSlicerTerminologiesModuleLogic_h
24#define __vtkSlicerTerminologiesModuleLogic_h
25
26// Slicer includes
28
29#include "vtkSlicerTerminologiesModuleLogicExport.h"
30
31#include <vtkVector.h>
32
33class vtkStringArray;
37
38class VTK_SLICER_TERMINOLOGIES_LOGIC_EXPORT vtkSlicerTerminologiesModuleLogic :
40{
41public:
44 void PrintSelf(ostream& os, vtkIndent indent) override;
45
48 {
49 public:
51 { };
52 CodeIdentifier(std::string codingSchemeDesignator, std::string codeValue, std::string codeMeaning)
53 : CodingSchemeDesignator(codingSchemeDesignator)
54 , CodeValue(codeValue)
55 , CodeMeaning(codeMeaning)
56 { };
58 std::string CodeValue;
59 std::string CodeMeaning; // Human readable name (not required for ID)
60 };
61
63 static const char* GetNameAutoGeneratedAttributeName() { return "Terminologies.AutoUpdateNodeName"; };
65 static const char* GetColorAutoGeneratedAttributeName() { return "Terminologies.AutoUpdateNodeColor"; };
66
72 bool LoadContextFromFile(std::string filePath);
76 std::string LoadTerminologyFromFile(std::string filePath);
80 std::string LoadAnatomicContextFromFile(std::string filePath);
85 bool LoadTerminologyFromSegmentDescriptorFile(std::string contextName, std::string filePath);
88 bool LoadAnatomicContextFromSegmentDescriptorFile(std::string contextName, std::string filePath);
89
91 void GetLoadedTerminologyNames(std::vector<std::string> &terminologyNames);
93 void GetLoadedTerminologyNames(vtkStringArray* terminologyNames);
95 void GetLoadedAnatomicContextNames(std::vector<std::string> &anatomicContextNames);
97 void GetLoadedAnatomicContextNames(vtkStringArray* anatomicContextNames);
98
103 bool GetCategoriesInTerminology(std::string terminologyName, std::vector<CodeIdentifier>& categories);
108 bool FindCategoriesInTerminology(std::string terminologyName, std::vector<CodeIdentifier>& categories, std::string search);
112 bool GetCategoryInTerminology(std::string terminologyName, CodeIdentifier categoryId, vtkSlicerTerminologyCategory* categoryObject);
114 int GetNumberOfCategoriesInTerminology(std::string terminologyName);
119 bool GetNthCategoryInTerminology(std::string terminologyName, int categoryIndex, vtkSlicerTerminologyCategory* category);
120
125 bool GetTypesInTerminologyCategory(std::string terminologyName, CodeIdentifier categoryId, std::vector<CodeIdentifier>& types);
130 bool FindTypesInTerminologyCategory(std::string terminologyName, CodeIdentifier categoryId, std::vector<CodeIdentifier>& types, std::string search);
134 bool GetTypeInTerminologyCategory(std::string terminologyName, CodeIdentifier categoryId, CodeIdentifier typeId, vtkSlicerTerminologyType* typeObject);
136 int GetNumberOfTypesInTerminologyCategory(std::string terminologyName, vtkSlicerTerminologyCategory* category);
143 bool GetNthTypeInTerminologyCategory(std::string terminologyName, vtkSlicerTerminologyCategory* category, int typeIndex, vtkSlicerTerminologyType* type);
144
149 bool GetTypeModifiersInTerminologyType(std::string terminologyName, CodeIdentifier categoryId, CodeIdentifier typeId, std::vector<CodeIdentifier>& typeModifiers);
153 bool GetTypeModifierInTerminologyType(std::string terminologyName,
154 CodeIdentifier categoryId, CodeIdentifier typeId, CodeIdentifier modifierId, vtkSlicerTerminologyType* typeModifier);
164 bool GetNthTypeModifierInTerminologyType(std::string terminologyName, vtkSlicerTerminologyCategory* category, vtkSlicerTerminologyType* type, int typeModifierIndex, vtkSlicerTerminologyType* typeModifier);
165
170 bool GetRegionsInAnatomicContext(std::string anatomicContextName, std::vector<CodeIdentifier>& regions);
173 bool FindRegionsInAnatomicContext(std::string anatomicContextName, std::vector<CodeIdentifier>& regions, std::string search);
177 bool GetRegionInAnatomicContext(std::string anatomicContextName, CodeIdentifier regionId, vtkSlicerTerminologyType* regionObject);
178
183 bool GetRegionModifiersInAnatomicRegion(std::string anatomicContextName, CodeIdentifier regionId, std::vector<CodeIdentifier>& regionModifiers);
187 bool GetRegionModifierInAnatomicRegion(std::string anatomicContextName,
188 CodeIdentifier regionId, CodeIdentifier modifierId, vtkSlicerTerminologyType* regionModifier);
189
195 bool FindTypeInTerminologyBy3dSlicerLabel(std::string terminologyName, std::string slicerLabel, vtkSlicerTerminologyEntry* entry);
196
201
206
210 static std::string SerializeTerminologyEntry(
211 std::string terminologyContextName,
212 std::string categoryValue, std::string categorySchemeDesignator, std::string categoryMeaning,
213 std::string typeValue, std::string typeSchemeDesignator, std::string typeMeaning,
214 std::string modifierValue, std::string modifierSchemeDesignator, std::string modifierMeaning,
215 std::string anatomicContextName,
216 std::string regionValue, std::string regionSchemeDesignator, std::string regionMeaning,
217 std::string regionModifierValue, std::string regionModifierSchemeDesignator, std::string regionModifierMeaning );
218
223 bool DeserializeTerminologyEntry(std::string serializedEntry, vtkSlicerTerminologyEntry* entry);
224
227
228public:
229 vtkGetStringMacro(UserContextsPath);
230 vtkSetStringMacro(UserContextsPath);
231
232protected:
235
236 void SetMRMLSceneInternal(vtkMRMLScene* newScene) override;
237
244
245protected:
247 char* UserContextsPath{nullptr};
248
249private:
251 void operator=(const vtkSlicerTerminologiesModuleLogic&) = delete;
252
253 class vtkInternal;
254 vtkInternal* Internal;
255 friend class vtkInternal;
256};
257
258#endif
A set of MRML Nodes that supports serialization and undo/redo.
Information needed to uniquely identify a terminology code.
CodeIdentifier(std::string codingSchemeDesignator, std::string codeValue, std::string codeMeaning)
static CodeIdentifier CodeIdentifierFromTerminologyType(vtkSlicerTerminologyType *type)
Convert terminology type object to code identifier.
void GetLoadedAnatomicContextNames(std::vector< std::string > &anatomicContextNames)
Get context names of loaded anatomic contexts.
bool GetTypeModifiersInTerminologyType(std::string terminologyName, CodeIdentifier categoryId, CodeIdentifier typeId, std::vector< CodeIdentifier > &typeModifiers)
bool GetCategoryInTerminology(std::string terminologyName, CodeIdentifier categoryId, vtkSlicerTerminologyCategory *categoryObject)
void GetLoadedTerminologyNames(vtkStringArray *terminologyNames)
Python accessor variant of.
static std::string SerializeTerminologyEntry(vtkSlicerTerminologyEntry *entry)
bool LoadAnatomicContextFromSegmentDescriptorFile(std::string contextName, std::string filePath)
void PrintSelf(ostream &os, vtkIndent indent) override
bool GetRegionInAnatomicContext(std::string anatomicContextName, CodeIdentifier regionId, vtkSlicerTerminologyType *regionObject)
static vtkSlicerTerminologiesModuleLogic * New()
int GetNumberOfTypeModifiersInTerminologyType(std::string terminologyName, vtkSlicerTerminologyCategory *category, vtkSlicerTerminologyType *type)
Get number of type modifiers for the chosen category and type in a terminology.
bool FindRegionsInAnatomicContext(std::string anatomicContextName, std::vector< CodeIdentifier > &regions, std::string search)
bool GetNthTypeInTerminologyCategory(std::string terminologyName, vtkSlicerTerminologyCategory *category, int typeIndex, vtkSlicerTerminologyType *type)
static const char * GetColorAutoGeneratedAttributeName()
Node attribute name for color auto generated.
bool GetCategoriesInTerminology(std::string terminologyName, std::vector< CodeIdentifier > &categories)
bool GetRegionModifiersInAnatomicRegion(std::string anatomicContextName, CodeIdentifier regionId, std::vector< CodeIdentifier > &regionModifiers)
int GetNumberOfCategoriesInTerminology(std::string terminologyName)
Get number of categories in a terminology.
bool FindTypesInTerminologyCategory(std::string terminologyName, CodeIdentifier categoryId, std::vector< CodeIdentifier > &types, std::string search)
bool GetTypesInTerminologyCategory(std::string terminologyName, CodeIdentifier categoryId, std::vector< CodeIdentifier > &types)
int GetNumberOfTypesInTerminologyCategory(std::string terminologyName, vtkSlicerTerminologyCategory *category)
Get number of types in the chosen category in a terminology.
static CodeIdentifier CodeIdentifierFromTerminologyCategory(vtkSlicerTerminologyCategory *category)
Convert terminology category object to code identifier.
bool FindCategoriesInTerminology(std::string terminologyName, std::vector< CodeIdentifier > &categories, std::string search)
void LoadUserContexts()
Load terminologies and anatomic contexts from the user settings directory.
std::string LoadTerminologyFromFile(std::string filePath)
void LoadDefaultAnatomicContexts()
Load default anatomic context dictionaries from JSON into.
bool FindTypeInTerminologyBy3dSlicerLabel(std::string terminologyName, std::string slicerLabel, vtkSlicerTerminologyEntry *entry)
void GetLoadedAnatomicContextNames(vtkStringArray *anatomicContextNames)
Python accessor variant of.
bool DeserializeTerminologyEntry(std::string serializedEntry, vtkSlicerTerminologyEntry *entry)
void GetLoadedTerminologyNames(std::vector< std::string > &terminologyNames)
Get context names of loaded terminologies.
bool GetNthCategoryInTerminology(std::string terminologyName, int categoryIndex, vtkSlicerTerminologyCategory *category)
static std::string GetInfoStringFromTerminologyEntry(vtkSlicerTerminologyEntry *entry)
Assemble human readable info string from a terminology entry, for example for tooltips.
bool GetTypeModifierInTerminologyType(std::string terminologyName, CodeIdentifier categoryId, CodeIdentifier typeId, CodeIdentifier modifierId, vtkSlicerTerminologyType *typeModifier)
bool GetNthTypeModifierInTerminologyType(std::string terminologyName, vtkSlicerTerminologyCategory *category, vtkSlicerTerminologyType *type, int typeModifierIndex, vtkSlicerTerminologyType *typeModifier)
void SetMRMLSceneInternal(vtkMRMLScene *newScene) override
static const char * GetNameAutoGeneratedAttributeName()
Node attribute name for name auto generated.
std::string LoadAnatomicContextFromFile(std::string filePath)
bool GetTypeInTerminologyCategory(std::string terminologyName, CodeIdentifier categoryId, CodeIdentifier typeId, vtkSlicerTerminologyType *typeObject)
bool LoadContextFromFile(std::string filePath)
static std::string SerializeTerminologyEntry(std::string terminologyContextName, std::string categoryValue, std::string categorySchemeDesignator, std::string categoryMeaning, std::string typeValue, std::string typeSchemeDesignator, std::string typeMeaning, std::string modifierValue, std::string modifierSchemeDesignator, std::string modifierMeaning, std::string anatomicContextName, std::string regionValue, std::string regionSchemeDesignator, std::string regionMeaning, std::string regionModifierValue, std::string regionModifierSchemeDesignator, std::string regionModifierMeaning)
bool GetRegionsInAnatomicContext(std::string anatomicContextName, std::vector< CodeIdentifier > &regions)
bool LoadTerminologyFromSegmentDescriptorFile(std::string contextName, std::string filePath)
bool GetRegionModifierInAnatomicRegion(std::string anatomicContextName, CodeIdentifier regionId, CodeIdentifier modifierId, vtkSlicerTerminologyType *regionModifier)
void LoadDefaultTerminologies()
Load default terminology dictionaries from JSON into.
Terminology property category object.
Terminology property type object.