Slicer 5.4
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
39class VTK_SLICER_TERMINOLOGIES_LOGIC_EXPORT vtkSlicerTerminologiesModuleLogic :
41{
42public:
45 void PrintSelf(ostream& os, vtkIndent indent) override;
46
49 {
50 public:
52 { };
53 CodeIdentifier(std::string codingSchemeDesignator, std::string codeValue, std::string codeMeaning)
54 : CodingSchemeDesignator(codingSchemeDesignator)
55 , CodeValue(codeValue)
56 , CodeMeaning(codeMeaning)
57 { };
59 std::string CodeValue;
60 std::string CodeMeaning; // Human readable name (not required for ID)
61 };
62
64 static const char* GetNameAutoGeneratedAttributeName() { return "Terminologies.AutoUpdateNodeName"; };
66 static const char* GetColorAutoGeneratedAttributeName() { return "Terminologies.AutoUpdateNodeColor"; };
67
73 bool LoadContextFromFile(std::string filePath);
77 std::string LoadTerminologyFromFile(std::string filePath);
81 std::string LoadAnatomicContextFromFile(std::string filePath);
86 bool LoadTerminologyFromSegmentDescriptorFile(std::string contextName, std::string filePath);
89 bool LoadAnatomicContextFromSegmentDescriptorFile(std::string contextName, std::string filePath);
90
92 void GetLoadedTerminologyNames(std::vector<std::string> &terminologyNames);
94 void GetLoadedTerminologyNames(vtkStringArray* terminologyNames);
96 void GetLoadedAnatomicContextNames(std::vector<std::string> &anatomicContextNames);
98 void GetLoadedAnatomicContextNames(vtkStringArray* anatomicContextNames);
99
104 bool GetCategoriesInTerminology(std::string terminologyName, std::vector<CodeIdentifier>& categories);
109 bool FindCategoriesInTerminology(std::string terminologyName, std::vector<CodeIdentifier>& categories, std::string search);
113 bool GetCategoryInTerminology(std::string terminologyName, CodeIdentifier categoryId, vtkSlicerTerminologyCategory* categoryObject);
115 int GetNumberOfCategoriesInTerminology(std::string terminologyName);
120 bool GetNthCategoryInTerminology(std::string terminologyName, int categoryIndex, vtkSlicerTerminologyCategory* category);
121
126 bool GetTypesInTerminologyCategory(std::string terminologyName, CodeIdentifier categoryId, std::vector<CodeIdentifier>& types);
131 bool FindTypesInTerminologyCategory(std::string terminologyName, CodeIdentifier categoryId, std::vector<CodeIdentifier>& types, std::string search);
135 bool GetTypeInTerminologyCategory(std::string terminologyName, CodeIdentifier categoryId, CodeIdentifier typeId, vtkSlicerTerminologyType* typeObject);
137 int GetNumberOfTypesInTerminologyCategory(std::string terminologyName, vtkSlicerTerminologyCategory* category);
144 bool GetNthTypeInTerminologyCategory(std::string terminologyName, vtkSlicerTerminologyCategory* category, int typeIndex, vtkSlicerTerminologyType* type);
145
150 bool GetTypeModifiersInTerminologyType(std::string terminologyName, CodeIdentifier categoryId, CodeIdentifier typeId, std::vector<CodeIdentifier>& typeModifiers);
154 bool GetTypeModifierInTerminologyType(std::string terminologyName,
155 CodeIdentifier categoryId, CodeIdentifier typeId, CodeIdentifier modifierId, vtkSlicerTerminologyType* typeModifier);
165 bool GetNthTypeModifierInTerminologyType(std::string terminologyName, vtkSlicerTerminologyCategory* category, vtkSlicerTerminologyType* type, int typeModifierIndex, vtkSlicerTerminologyType* typeModifier);
166
171 bool GetRegionsInAnatomicContext(std::string anatomicContextName, std::vector<CodeIdentifier>& regions);
174 bool FindRegionsInAnatomicContext(std::string anatomicContextName, std::vector<CodeIdentifier>& regions, std::string search);
178 bool GetRegionInAnatomicContext(std::string anatomicContextName, CodeIdentifier regionId, vtkSlicerTerminologyType* regionObject);
179
184 bool GetRegionModifiersInAnatomicRegion(std::string anatomicContextName, CodeIdentifier regionId, std::vector<CodeIdentifier>& regionModifiers);
188 bool GetRegionModifierInAnatomicRegion(std::string anatomicContextName,
189 CodeIdentifier regionId, CodeIdentifier modifierId, vtkSlicerTerminologyType* regionModifier);
190
196 bool FindTypeInTerminologyBy3dSlicerLabel(std::string terminologyName, std::string slicerLabel, vtkSlicerTerminologyEntry* entry);
197
202
207
211 static std::string SerializeTerminologyEntry(
212 std::string terminologyContextName,
213 std::string categoryValue, std::string categorySchemeDesignator, std::string categoryMeaning,
214 std::string typeValue, std::string typeSchemeDesignator, std::string typeMeaning,
215 std::string modifierValue, std::string modifierSchemeDesignator, std::string modifierMeaning,
216 std::string anatomicContextName,
217 std::string regionValue, std::string regionSchemeDesignator, std::string regionMeaning,
218 std::string regionModifierValue, std::string regionModifierSchemeDesignator, std::string regionModifierMeaning );
219
224 bool DeserializeTerminologyEntry(std::string serializedEntry, vtkSlicerTerminologyEntry* entry);
225
228
229public:
230 vtkGetStringMacro(UserContextsPath);
231 vtkSetStringMacro(UserContextsPath);
232
233protected:
236
237 void SetMRMLSceneInternal(vtkMRMLScene* newScene) override;
238
245
246protected:
248 char* UserContextsPath{nullptr};
249
250private:
252 void operator=(const vtkSlicerTerminologiesModuleLogic&) = delete;
253
254 class vtkInternal;
255 vtkInternal* Internal;
256 friend class vtkInternal;
257};
258
259#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.