API del Modelo FHIRPath
La struct FHIRPathModelData proporciona metadatos en tiempo de ejecucion requeridos por los motores de expresiones FHIRPath. Esta pagina documenta cada funcion y metodo exportado con su firma completa, descripcion y ejemplo de uso.
FHIRPathModel
Devuelve el singleton a nivel de paquete que contiene todos los metadatos de FHIRPath para esta version de FHIR.
Firma
func FHIRPathModel() *FHIRPathModelDataRetorna
Un puntero a la instancia singleton de FHIRPathModelData. Esta instancia se inicializa al momento de cargar el paquete y es segura para acceso de lectura concurrente.
Ejemplo
import "github.com/gofhir/models/r4/v2"
model := r4.FHIRPathModel()
// model esta listo para usar -- no se necesita inicializacionChoiceTypes
Devuelve los codigos de tipo FHIR permitidos para una ruta de elemento polimorfico (choice). La ruta debe ser el nombre base sin un sufijo de tipo.
Firma
func (m *FHIRPathModelData) ChoiceTypes(path string) []stringParametros
path– La ruta base del elemento usando notacion de punto, por ejemplo,"Observation.value"(no"Observation.valueQuantity").
Retorna
- Un slice de strings con codigos de tipo que representan los tipos permitidos para este elemento choice.
nilsi la ruta no es un choice type o es desconocida.
Ejemplo
model := r4.FHIRPathModel()
types := model.ChoiceTypes("Observation.value")
// ["Quantity", "CodeableConcept", "string", "boolean", "integer",
// "Range", "Ratio", "SampledData", "time", "dateTime", "Period"]
types = model.ChoiceTypes("Patient.deceased")
// ["boolean", "dateTime"]
types = model.ChoiceTypes("Patient.name")
// nil -- no es un choice typeTypeOf
Devuelve el codigo de tipo FHIR para la ruta de elemento dada. Los tipos primitivos usan minusculas ("string", "boolean", "dateTime"), los tipos complejos usan PascalCase ("HumanName", "CodeableConcept").
Firma
func (m *FHIRPathModelData) TypeOf(path string) stringParametros
path– La ruta del elemento usando notacion de punto, por ejemplo,"Patient.name","Observation.status".
Retorna
- El codigo de tipo FHIR como string.
- Un string vacio si la ruta es desconocida.
Ejemplo
model := r4.FHIRPathModel()
model.TypeOf("Patient.name") // "HumanName"
model.TypeOf("Patient.active") // "boolean"
model.TypeOf("Observation.status") // "code"
model.TypeOf("Observation.valueQuantity") // "Quantity"
model.TypeOf("Patient.contact") // "BackboneElement"
model.TypeOf("Unknown.path") // ""ReferenceTargets
Devuelve los nombres de tipos de recurso objetivo permitidos para un elemento Reference o canonical en la ruta dada.
Firma
func (m *FHIRPathModelData) ReferenceTargets(path string) []stringParametros
path– La ruta del elemento de un campo de tipo Reference, por ejemplo,"Observation.subject".
Retorna
- Un slice de nombres de tipos de recurso que son objetivos validos para esta referencia.
nilsi la ruta no es una referencia o no tiene objetivos restringidos.
Ejemplo
model := r4.FHIRPathModel()
targets := model.ReferenceTargets("Observation.subject")
// ["Device", "Group", "Location", "Patient"]
targets = model.ReferenceTargets("Observation.performer")
// ["CareTeam", "Organization", "Patient", "Practitioner", "PractitionerRole", "RelatedPerson"]
targets = model.ReferenceTargets("Patient.name")
// nil -- no es un campo ReferenceParentType
Devuelve el nombre del tipo padre inmediato en la jerarquia de tipos FHIR.
Firma
func (m *FHIRPathModelData) ParentType(typeName string) stringParametros
typeName– Un nombre de tipo FHIR, por ejemplo,"Patient","Age","DomainResource".
Retorna
- El nombre del tipo padre como string.
- Un string vacio si el tipo no tiene padre (por ejemplo, el tipo raiz
Element) o es desconocido.
Ejemplo
model := r4.FHIRPathModel()
model.ParentType("Patient") // "DomainResource"
model.ParentType("DomainResource") // "Resource"
model.ParentType("Bundle") // "Resource"
model.ParentType("Age") // "Quantity"
model.ParentType("Quantity") // "Element"
model.ParentType("Element") // ""IsSubtype
Indica si child es el mismo tipo que, o un subtipo de, parent en la jerarquia de tipos FHIR. Recorre la cadena type2Parent desde child hacia arriba hasta que encuentra parent o alcanza la raiz.
Firma
func (m *FHIRPathModelData) IsSubtype(child, parent string) boolParametros
child– El nombre del tipo a verificar.parent– El nombre del tipo ancestro potencial.
Retorna
truesichild == parento sichildes un descendiente deparenten la jerarquia de tipos.falseen caso contrario.
Ejemplo
model := r4.FHIRPathModel()
model.IsSubtype("Patient", "Patient") // true (mismo tipo)
model.IsSubtype("Patient", "DomainResource") // true
model.IsSubtype("Patient", "Resource") // true
model.IsSubtype("Age", "Quantity") // true
model.IsSubtype("Quantity", "Age") // false (padre, no hijo)
model.IsSubtype("Patient", "Observation") // false (hermanos)ResolvePath
Resuelve una ruta de elemento que puede estar definida en otro lugar. Algunas rutas de elementos FHIR estan definidas en un tipo backbone compartido y referenciadas desde multiples recursos. Este metodo mapea dichas rutas a su ubicacion de definicion canonica.
Firma
func (m *FHIRPathModelData) ResolvePath(path string) stringParametros
path– La ruta del elemento a resolver.
Retorna
- La ruta canonica si el elemento esta definido en otro lugar.
- La
pathoriginal sin cambios si no esta remapeada.
Ejemplo
model := r4.FHIRPathModel()
// La mayoria de las rutas se resuelven a si mismas
resolved := model.ResolvePath("Patient.name")
// "Patient.name"
// Algunas rutas pueden resolverse a una definicion compartida
resolved = model.ResolvePath("Bundle.entry.resource")
// Devuelve la ruta de definicion canonicaIsResource
Indica si el nombre de tipo dado es un tipo de recurso FHIR (a diferencia de un tipo de dato o backbone element).
Firma
func (m *FHIRPathModelData) IsResource(typeName string) boolParametros
typeName– El nombre del tipo FHIR a verificar.
Retorna
truesi el tipo es un recurso (por ejemplo,"Patient","Bundle","Observation").falsesi es un tipo de dato (por ejemplo,"HumanName","CodeableConcept") o desconocido.
Ejemplo
model := r4.FHIRPathModel()
model.IsResource("Patient") // true
model.IsResource("Observation") // true
model.IsResource("Bundle") // true
model.IsResource("HumanName") // false
model.IsResource("CodeableConcept") // false
model.IsResource("BackboneElement") // false