2023-07-08 08:43:30 -06:00
// THIS FILE IS GENERATED BY https://github.com/fastenhealth/fasten-onprem/blob/main/backend/pkg/models/database/generate.go
// PLEASE DO NOT EDIT BY HAND
package database
import (
"encoding/json"
"fmt"
goja "github.com/dop251/goja"
2023-08-27 18:09:46 -06:00
models "github.com/fastenhealth/fasten-onprem/backend/pkg/models"
2023-07-08 08:43:30 -06:00
datatypes "gorm.io/datatypes"
"time"
)
type FhirOrganization struct {
models . ResourceBase
// Is the Organization record active
// https://hl7.org/fhir/r4/search.html#token
Active datatypes . JSON ` gorm:"column:active;type:text;serializer:json" json:"active,omitempty" `
// A server defined search that may match any of the string fields in the Address, including line, city, district, state, country, postalCode, and/or text
// https://hl7.org/fhir/r4/search.html#string
2023-07-30 22:40:25 -06:00
Address datatypes . JSON ` gorm:"column:address;type:text;serializer:json" json:"address,omitempty" `
2023-07-08 08:43:30 -06:00
// A city specified in an address
// https://hl7.org/fhir/r4/search.html#string
2023-07-30 22:40:25 -06:00
AddressCity datatypes . JSON ` gorm:"column:addressCity;type:text;serializer:json" json:"addressCity,omitempty" `
2023-07-08 08:43:30 -06:00
// A country specified in an address
// https://hl7.org/fhir/r4/search.html#string
2023-07-30 22:40:25 -06:00
AddressCountry datatypes . JSON ` gorm:"column:addressCountry;type:text;serializer:json" json:"addressCountry,omitempty" `
2023-07-08 08:43:30 -06:00
// A postal code specified in an address
// https://hl7.org/fhir/r4/search.html#string
2023-07-30 22:40:25 -06:00
AddressPostalcode datatypes . JSON ` gorm:"column:addressPostalcode;type:text;serializer:json" json:"addressPostalcode,omitempty" `
2023-07-08 08:43:30 -06:00
// A state specified in an address
// https://hl7.org/fhir/r4/search.html#string
2023-07-30 22:40:25 -06:00
AddressState datatypes . JSON ` gorm:"column:addressState;type:text;serializer:json" json:"addressState,omitempty" `
2023-07-08 08:43:30 -06:00
// A use code specified in an address
// https://hl7.org/fhir/r4/search.html#token
AddressUse datatypes . JSON ` gorm:"column:addressUse;type:text;serializer:json" json:"addressUse,omitempty" `
// Technical endpoints providing access to services operated for the organization
// https://hl7.org/fhir/r4/search.html#reference
Endpoint datatypes . JSON ` gorm:"column:endpoint;type:text;serializer:json" json:"endpoint,omitempty" `
// Any identifier for the organization (not the accreditation issuer's identifier)
// https://hl7.org/fhir/r4/search.html#token
Identifier datatypes . JSON ` gorm:"column:identifier;type:text;serializer:json" json:"identifier,omitempty" `
// Language of the resource content
// https://hl7.org/fhir/r4/search.html#token
Language datatypes . JSON ` gorm:"column:language;type:text;serializer:json" json:"language,omitempty" `
// When the resource version last changed
// https://hl7.org/fhir/r4/search.html#date
2023-08-01 21:29:35 -06:00
LastUpdated * time . Time ` gorm:"column:lastUpdated;type:datetime" json:"lastUpdated,omitempty" `
2023-07-08 08:43:30 -06:00
// A portion of the organization's name or alias
// https://hl7.org/fhir/r4/search.html#string
2023-07-30 22:40:25 -06:00
Name datatypes . JSON ` gorm:"column:name;type:text;serializer:json" json:"name,omitempty" `
2023-07-08 08:43:30 -06:00
// An organization of which this organization forms a part
// https://hl7.org/fhir/r4/search.html#reference
Partof datatypes . JSON ` gorm:"column:partof;type:text;serializer:json" json:"partof,omitempty" `
// A portion of the organization's name using some kind of phonetic matching algorithm
// https://hl7.org/fhir/r4/search.html#string
2023-07-30 22:40:25 -06:00
Phonetic datatypes . JSON ` gorm:"column:phonetic;type:text;serializer:json" json:"phonetic,omitempty" `
2023-07-08 08:43:30 -06:00
// Profiles this resource claims to conform to
// https://hl7.org/fhir/r4/search.html#reference
Profile datatypes . JSON ` gorm:"column:profile;type:text;serializer:json" json:"profile,omitempty" `
// Tags applied to this resource
// https://hl7.org/fhir/r4/search.html#token
Tag datatypes . JSON ` gorm:"column:tag;type:text;serializer:json" json:"tag,omitempty" `
// Text search against the narrative
// https://hl7.org/fhir/r4/search.html#string
2023-07-30 22:40:25 -06:00
Text datatypes . JSON ` gorm:"column:text;type:text;serializer:json" json:"text,omitempty" `
2023-07-08 08:43:30 -06:00
// A resource type filter
// https://hl7.org/fhir/r4/search.html#special
Type datatypes . JSON ` gorm:"column:type;type:text;serializer:json" json:"type,omitempty" `
}
func ( s * FhirOrganization ) GetSearchParameters ( ) map [ string ] string {
searchParameters := map [ string ] string {
2023-08-23 13:24:08 -06:00
"active" : "token" ,
"address" : "string" ,
"addressCity" : "string" ,
"addressCountry" : "string" ,
"addressPostalcode" : "string" ,
"addressState" : "string" ,
"addressUse" : "token" ,
"endpoint" : "reference" ,
"id" : "keyword" ,
"identifier" : "token" ,
"language" : "token" ,
"lastUpdated" : "date" ,
"name" : "string" ,
"partof" : "reference" ,
"phonetic" : "string" ,
"profile" : "reference" ,
2023-10-01 20:15:24 -06:00
"sort_date" : "date" ,
2023-08-23 13:24:08 -06:00
"source_id" : "keyword" ,
"source_resource_id" : "keyword" ,
"source_resource_type" : "keyword" ,
"source_uri" : "keyword" ,
"tag" : "token" ,
"text" : "string" ,
"type" : "special" ,
2023-07-08 08:43:30 -06:00
}
return searchParameters
}
func ( s * FhirOrganization ) PopulateAndExtractSearchParameters ( resourceRaw json . RawMessage ) error {
s . ResourceRaw = datatypes . JSON ( resourceRaw )
// unmarshal the raw resource (bytes) into a map
var resourceRawMap map [ string ] interface { }
err := json . Unmarshal ( resourceRaw , & resourceRawMap )
if err != nil {
return err
}
if len ( fhirPathJs ) == 0 {
return fmt . Errorf ( "fhirPathJs script is empty" )
}
vm := goja . New ( )
// setup the global window object
vm . Set ( "window" , vm . NewObject ( ) )
// set the global FHIR Resource object
vm . Set ( "fhirResource" , resourceRawMap )
// compile the fhirpath library
fhirPathJsProgram , err := goja . Compile ( "fhirpath.min.js" , fhirPathJs , true )
if err != nil {
return err
}
// add the fhirpath library in the goja vm
_ , err = vm . RunProgram ( fhirPathJsProgram )
if err != nil {
return err
}
// execute the fhirpath expression for each search parameter
// extracting Active
activeResult , err := vm . RunString ( `
ActiveResult = window . fhirpath . evaluate ( fhirResource , ' Organization . active ' )
ActiveProcessed = ActiveResult . reduce ( ( accumulator , currentValue ) = > {
if ( currentValue . coding ) {
//CodeableConcept
currentValue . coding . map ( ( coding ) = > {
accumulator . push ( {
"code" : coding . code ,
"system" : coding . system ,
"text" : currentValue . text
} )
} )
} else if ( currentValue . value ) {
//ContactPoint, Identifier
accumulator . push ( {
"code" : currentValue . value ,
"system" : currentValue . system ,
"text" : currentValue . type ? . text
} )
} else if ( currentValue . code ) {
//Coding
accumulator . push ( {
"code" : currentValue . code ,
"system" : currentValue . system ,
"text" : currentValue . display
} )
} else if ( ( typeof currentValue == = ' string ' ) || ( typeof currentValue == = ' boolean ' ) ) {
//string, boolean
accumulator . push ( {
"code" : currentValue ,
} )
}
return accumulator
} , [ ] )
2023-08-01 21:29:35 -06:00
if ( ActiveProcessed . length == 0 ) {
"undefined"
}
else {
JSON . stringify ( ActiveProcessed )
}
2023-07-08 08:43:30 -06:00
` )
if err == nil && activeResult . String ( ) != "undefined" {
s . Active = [ ] byte ( activeResult . String ( ) )
}
// extracting Address
2023-07-30 22:40:25 -06:00
addressResult , err := vm . RunString ( `
AddressResult = window . fhirpath . evaluate ( fhirResource , ' Organization . address ' )
AddressProcessed = AddressResult . reduce ( ( accumulator , currentValue ) = > {
if ( typeof currentValue == = ' string ' ) {
//basic string
accumulator . push ( currentValue )
} else if ( currentValue . family || currentValue . given ) {
//HumanName http://hl7.org/fhir/R4/datatypes.html#HumanName
var humanNameParts = [ ]
if ( currentValue . prefix ) {
humanNameParts = humanNameParts . concat ( currentValue . prefix )
}
if ( currentValue . given ) {
humanNameParts = humanNameParts . concat ( currentValue . given )
}
if ( currentValue . family ) {
humanNameParts . push ( currentValue . family )
}
if ( currentValue . suffix ) {
humanNameParts = humanNameParts . concat ( currentValue . suffix )
}
accumulator . push ( humanNameParts . join ( " " ) )
} else if ( currentValue . city || currentValue . state || currentValue . country || currentValue . postalCode ) {
//Address http://hl7.org/fhir/R4/datatypes.html#Address
var addressParts = [ ]
if ( currentValue . line ) {
addressParts = addressParts . concat ( currentValue . line )
}
if ( currentValue . city ) {
addressParts . push ( currentValue . city )
}
if ( currentValue . state ) {
addressParts . push ( currentValue . state )
}
if ( currentValue . postalCode ) {
addressParts . push ( currentValue . postalCode )
}
if ( currentValue . country ) {
addressParts . push ( currentValue . country )
}
accumulator . push ( addressParts . join ( " " ) )
} else {
//string, boolean
accumulator . push ( currentValue )
}
return accumulator
} , [ ] )
2023-08-01 21:29:35 -06:00
if ( AddressProcessed . length == 0 ) {
"undefined"
}
else {
JSON . stringify ( AddressProcessed )
}
2023-07-30 22:40:25 -06:00
` )
2023-07-08 08:43:30 -06:00
if err == nil && addressResult . String ( ) != "undefined" {
2023-07-30 22:40:25 -06:00
s . Address = [ ] byte ( addressResult . String ( ) )
2023-07-08 08:43:30 -06:00
}
// extracting AddressCity
2023-07-30 22:40:25 -06:00
addressCityResult , err := vm . RunString ( `
AddressCityResult = window . fhirpath . evaluate ( fhirResource , ' Organization . address . city ' )
AddressCityProcessed = AddressCityResult . reduce ( ( accumulator , currentValue ) = > {
if ( typeof currentValue == = ' string ' ) {
//basic string
accumulator . push ( currentValue )
} else if ( currentValue . family || currentValue . given ) {
//HumanName http://hl7.org/fhir/R4/datatypes.html#HumanName
var humanNameParts = [ ]
if ( currentValue . prefix ) {
humanNameParts = humanNameParts . concat ( currentValue . prefix )
}
if ( currentValue . given ) {
humanNameParts = humanNameParts . concat ( currentValue . given )
}
if ( currentValue . family ) {
humanNameParts . push ( currentValue . family )
}
if ( currentValue . suffix ) {
humanNameParts = humanNameParts . concat ( currentValue . suffix )
}
accumulator . push ( humanNameParts . join ( " " ) )
} else if ( currentValue . city || currentValue . state || currentValue . country || currentValue . postalCode ) {
//Address http://hl7.org/fhir/R4/datatypes.html#Address
var addressParts = [ ]
if ( currentValue . line ) {
addressParts = addressParts . concat ( currentValue . line )
}
if ( currentValue . city ) {
addressParts . push ( currentValue . city )
}
if ( currentValue . state ) {
addressParts . push ( currentValue . state )
}
if ( currentValue . postalCode ) {
addressParts . push ( currentValue . postalCode )
}
if ( currentValue . country ) {
addressParts . push ( currentValue . country )
}
accumulator . push ( addressParts . join ( " " ) )
} else {
//string, boolean
accumulator . push ( currentValue )
}
return accumulator
} , [ ] )
2023-08-01 21:29:35 -06:00
if ( AddressCityProcessed . length == 0 ) {
"undefined"
}
else {
JSON . stringify ( AddressCityProcessed )
}
2023-07-30 22:40:25 -06:00
` )
2023-07-08 08:43:30 -06:00
if err == nil && addressCityResult . String ( ) != "undefined" {
2023-07-30 22:40:25 -06:00
s . AddressCity = [ ] byte ( addressCityResult . String ( ) )
2023-07-08 08:43:30 -06:00
}
// extracting AddressCountry
2023-07-30 22:40:25 -06:00
addressCountryResult , err := vm . RunString ( `
AddressCountryResult = window . fhirpath . evaluate ( fhirResource , ' Organization . address . country ' )
AddressCountryProcessed = AddressCountryResult . reduce ( ( accumulator , currentValue ) = > {
if ( typeof currentValue == = ' string ' ) {
//basic string
accumulator . push ( currentValue )
} else if ( currentValue . family || currentValue . given ) {
//HumanName http://hl7.org/fhir/R4/datatypes.html#HumanName
var humanNameParts = [ ]
if ( currentValue . prefix ) {
humanNameParts = humanNameParts . concat ( currentValue . prefix )
}
if ( currentValue . given ) {
humanNameParts = humanNameParts . concat ( currentValue . given )
}
if ( currentValue . family ) {
humanNameParts . push ( currentValue . family )
}
if ( currentValue . suffix ) {
humanNameParts = humanNameParts . concat ( currentValue . suffix )
}
accumulator . push ( humanNameParts . join ( " " ) )
} else if ( currentValue . city || currentValue . state || currentValue . country || currentValue . postalCode ) {
//Address http://hl7.org/fhir/R4/datatypes.html#Address
var addressParts = [ ]
if ( currentValue . line ) {
addressParts = addressParts . concat ( currentValue . line )
}
if ( currentValue . city ) {
addressParts . push ( currentValue . city )
}
if ( currentValue . state ) {
addressParts . push ( currentValue . state )
}
if ( currentValue . postalCode ) {
addressParts . push ( currentValue . postalCode )
}
if ( currentValue . country ) {
addressParts . push ( currentValue . country )
}
accumulator . push ( addressParts . join ( " " ) )
} else {
//string, boolean
accumulator . push ( currentValue )
}
return accumulator
} , [ ] )
2023-08-01 21:29:35 -06:00
if ( AddressCountryProcessed . length == 0 ) {
"undefined"
}
else {
JSON . stringify ( AddressCountryProcessed )
}
2023-07-30 22:40:25 -06:00
` )
2023-07-08 08:43:30 -06:00
if err == nil && addressCountryResult . String ( ) != "undefined" {
2023-07-30 22:40:25 -06:00
s . AddressCountry = [ ] byte ( addressCountryResult . String ( ) )
2023-07-08 08:43:30 -06:00
}
// extracting AddressPostalcode
2023-07-30 22:40:25 -06:00
addressPostalcodeResult , err := vm . RunString ( `
AddressPostalcodeResult = window . fhirpath . evaluate ( fhirResource , ' Organization . address . postalCode ' )
AddressPostalcodeProcessed = AddressPostalcodeResult . reduce ( ( accumulator , currentValue ) = > {
if ( typeof currentValue == = ' string ' ) {
//basic string
accumulator . push ( currentValue )
} else if ( currentValue . family || currentValue . given ) {
//HumanName http://hl7.org/fhir/R4/datatypes.html#HumanName
var humanNameParts = [ ]
if ( currentValue . prefix ) {
humanNameParts = humanNameParts . concat ( currentValue . prefix )
}
if ( currentValue . given ) {
humanNameParts = humanNameParts . concat ( currentValue . given )
}
if ( currentValue . family ) {
humanNameParts . push ( currentValue . family )
}
if ( currentValue . suffix ) {
humanNameParts = humanNameParts . concat ( currentValue . suffix )
}
accumulator . push ( humanNameParts . join ( " " ) )
} else if ( currentValue . city || currentValue . state || currentValue . country || currentValue . postalCode ) {
//Address http://hl7.org/fhir/R4/datatypes.html#Address
var addressParts = [ ]
if ( currentValue . line ) {
addressParts = addressParts . concat ( currentValue . line )
}
if ( currentValue . city ) {
addressParts . push ( currentValue . city )
}
if ( currentValue . state ) {
addressParts . push ( currentValue . state )
}
if ( currentValue . postalCode ) {
addressParts . push ( currentValue . postalCode )
}
if ( currentValue . country ) {
addressParts . push ( currentValue . country )
}
accumulator . push ( addressParts . join ( " " ) )
} else {
//string, boolean
accumulator . push ( currentValue )
}
return accumulator
} , [ ] )
2023-08-01 21:29:35 -06:00
if ( AddressPostalcodeProcessed . length == 0 ) {
"undefined"
}
else {
JSON . stringify ( AddressPostalcodeProcessed )
}
2023-07-30 22:40:25 -06:00
` )
2023-07-08 08:43:30 -06:00
if err == nil && addressPostalcodeResult . String ( ) != "undefined" {
2023-07-30 22:40:25 -06:00
s . AddressPostalcode = [ ] byte ( addressPostalcodeResult . String ( ) )
2023-07-08 08:43:30 -06:00
}
// extracting AddressState
2023-07-30 22:40:25 -06:00
addressStateResult , err := vm . RunString ( `
AddressStateResult = window . fhirpath . evaluate ( fhirResource , ' Organization . address . state ' )
AddressStateProcessed = AddressStateResult . reduce ( ( accumulator , currentValue ) = > {
if ( typeof currentValue == = ' string ' ) {
//basic string
accumulator . push ( currentValue )
} else if ( currentValue . family || currentValue . given ) {
//HumanName http://hl7.org/fhir/R4/datatypes.html#HumanName
var humanNameParts = [ ]
if ( currentValue . prefix ) {
humanNameParts = humanNameParts . concat ( currentValue . prefix )
}
if ( currentValue . given ) {
humanNameParts = humanNameParts . concat ( currentValue . given )
}
if ( currentValue . family ) {
humanNameParts . push ( currentValue . family )
}
if ( currentValue . suffix ) {
humanNameParts = humanNameParts . concat ( currentValue . suffix )
}
accumulator . push ( humanNameParts . join ( " " ) )
} else if ( currentValue . city || currentValue . state || currentValue . country || currentValue . postalCode ) {
//Address http://hl7.org/fhir/R4/datatypes.html#Address
var addressParts = [ ]
if ( currentValue . line ) {
addressParts = addressParts . concat ( currentValue . line )
}
if ( currentValue . city ) {
addressParts . push ( currentValue . city )
}
if ( currentValue . state ) {
addressParts . push ( currentValue . state )
}
if ( currentValue . postalCode ) {
addressParts . push ( currentValue . postalCode )
}
if ( currentValue . country ) {
addressParts . push ( currentValue . country )
}
accumulator . push ( addressParts . join ( " " ) )
} else {
//string, boolean
accumulator . push ( currentValue )
}
return accumulator
} , [ ] )
2023-08-01 21:29:35 -06:00
if ( AddressStateProcessed . length == 0 ) {
"undefined"
}
else {
JSON . stringify ( AddressStateProcessed )
}
2023-07-30 22:40:25 -06:00
` )
2023-07-08 08:43:30 -06:00
if err == nil && addressStateResult . String ( ) != "undefined" {
2023-07-30 22:40:25 -06:00
s . AddressState = [ ] byte ( addressStateResult . String ( ) )
2023-07-08 08:43:30 -06:00
}
// extracting AddressUse
addressUseResult , err := vm . RunString ( `
AddressUseResult = window . fhirpath . evaluate ( fhirResource , ' Organization . address . use ' )
AddressUseProcessed = AddressUseResult . reduce ( ( accumulator , currentValue ) = > {
if ( currentValue . coding ) {
//CodeableConcept
currentValue . coding . map ( ( coding ) = > {
accumulator . push ( {
"code" : coding . code ,
"system" : coding . system ,
"text" : currentValue . text
} )
} )
} else if ( currentValue . value ) {
//ContactPoint, Identifier
accumulator . push ( {
"code" : currentValue . value ,
"system" : currentValue . system ,
"text" : currentValue . type ? . text
} )
} else if ( currentValue . code ) {
//Coding
accumulator . push ( {
"code" : currentValue . code ,
"system" : currentValue . system ,
"text" : currentValue . display
} )
} else if ( ( typeof currentValue == = ' string ' ) || ( typeof currentValue == = ' boolean ' ) ) {
//string, boolean
accumulator . push ( {
"code" : currentValue ,
} )
}
return accumulator
} , [ ] )
2023-08-01 21:29:35 -06:00
if ( AddressUseProcessed . length == 0 ) {
"undefined"
}
else {
JSON . stringify ( AddressUseProcessed )
}
2023-07-08 08:43:30 -06:00
` )
if err == nil && addressUseResult . String ( ) != "undefined" {
s . AddressUse = [ ] byte ( addressUseResult . String ( ) )
}
// extracting Endpoint
2023-08-13 15:28:03 -06:00
endpointResult , err := vm . RunString ( `
EndpointResult = window . fhirpath . evaluate ( fhirResource , ' Organization . endpoint ' )
if ( EndpointResult . length == 0 ) {
"undefined"
}
else {
JSON . stringify ( EndpointResult )
}
` )
2023-07-08 08:43:30 -06:00
if err == nil && endpointResult . String ( ) != "undefined" {
2023-08-13 15:28:03 -06:00
s . Endpoint = [ ] byte ( endpointResult . String ( ) )
2023-07-08 08:43:30 -06:00
}
// extracting Identifier
identifierResult , err := vm . RunString ( `
IdentifierResult = window . fhirpath . evaluate ( fhirResource , ' Organization . identifier ' )
IdentifierProcessed = IdentifierResult . reduce ( ( accumulator , currentValue ) = > {
if ( currentValue . coding ) {
//CodeableConcept
currentValue . coding . map ( ( coding ) = > {
accumulator . push ( {
"code" : coding . code ,
"system" : coding . system ,
"text" : currentValue . text
} )
} )
} else if ( currentValue . value ) {
//ContactPoint, Identifier
accumulator . push ( {
"code" : currentValue . value ,
"system" : currentValue . system ,
"text" : currentValue . type ? . text
} )
} else if ( currentValue . code ) {
//Coding
accumulator . push ( {
"code" : currentValue . code ,
"system" : currentValue . system ,
"text" : currentValue . display
} )
} else if ( ( typeof currentValue == = ' string ' ) || ( typeof currentValue == = ' boolean ' ) ) {
//string, boolean
accumulator . push ( {
"code" : currentValue ,
} )
}
return accumulator
} , [ ] )
2023-08-01 21:29:35 -06:00
if ( IdentifierProcessed . length == 0 ) {
"undefined"
}
else {
JSON . stringify ( IdentifierProcessed )
}
2023-07-08 08:43:30 -06:00
` )
if err == nil && identifierResult . String ( ) != "undefined" {
s . Identifier = [ ] byte ( identifierResult . String ( ) )
}
// extracting Language
languageResult , err := vm . RunString ( `
2023-08-13 12:30:39 -06:00
LanguageResult = window . fhirpath . evaluate ( fhirResource , ' language ' )
2023-07-08 08:43:30 -06:00
LanguageProcessed = LanguageResult . reduce ( ( accumulator , currentValue ) = > {
if ( currentValue . coding ) {
//CodeableConcept
currentValue . coding . map ( ( coding ) = > {
accumulator . push ( {
"code" : coding . code ,
"system" : coding . system ,
"text" : currentValue . text
} )
} )
} else if ( currentValue . value ) {
//ContactPoint, Identifier
accumulator . push ( {
"code" : currentValue . value ,
"system" : currentValue . system ,
"text" : currentValue . type ? . text
} )
} else if ( currentValue . code ) {
//Coding
accumulator . push ( {
"code" : currentValue . code ,
"system" : currentValue . system ,
"text" : currentValue . display
} )
} else if ( ( typeof currentValue == = ' string ' ) || ( typeof currentValue == = ' boolean ' ) ) {
//string, boolean
accumulator . push ( {
"code" : currentValue ,
} )
}
return accumulator
} , [ ] )
2023-08-01 21:29:35 -06:00
if ( LanguageProcessed . length == 0 ) {
"undefined"
}
else {
JSON . stringify ( LanguageProcessed )
}
2023-07-08 08:43:30 -06:00
` )
if err == nil && languageResult . String ( ) != "undefined" {
s . Language = [ ] byte ( languageResult . String ( ) )
}
// extracting LastUpdated
2023-08-13 12:30:39 -06:00
lastUpdatedResult , err := vm . RunString ( "window.fhirpath.evaluate(fhirResource, 'meta.lastUpdated')[0]" )
2023-07-08 08:43:30 -06:00
if err == nil && lastUpdatedResult . String ( ) != "undefined" {
t , err := time . Parse ( time . RFC3339 , lastUpdatedResult . String ( ) )
if err == nil {
2023-08-01 21:29:35 -06:00
s . LastUpdated = & t
} else if err != nil {
d , err := time . Parse ( "2006-01-02" , lastUpdatedResult . String ( ) )
if err == nil {
s . LastUpdated = & d
}
2023-07-08 08:43:30 -06:00
}
}
// extracting Name
2023-07-30 22:40:25 -06:00
nameResult , err := vm . RunString ( `
NameResult = window . fhirpath . evaluate ( fhirResource , ' Organization . name | Organization . alias ' )
NameProcessed = NameResult . reduce ( ( accumulator , currentValue ) = > {
if ( typeof currentValue == = ' string ' ) {
//basic string
accumulator . push ( currentValue )
} else if ( currentValue . family || currentValue . given ) {
//HumanName http://hl7.org/fhir/R4/datatypes.html#HumanName
var humanNameParts = [ ]
if ( currentValue . prefix ) {
humanNameParts = humanNameParts . concat ( currentValue . prefix )
}
if ( currentValue . given ) {
humanNameParts = humanNameParts . concat ( currentValue . given )
}
if ( currentValue . family ) {
humanNameParts . push ( currentValue . family )
}
if ( currentValue . suffix ) {
humanNameParts = humanNameParts . concat ( currentValue . suffix )
}
accumulator . push ( humanNameParts . join ( " " ) )
} else if ( currentValue . city || currentValue . state || currentValue . country || currentValue . postalCode ) {
//Address http://hl7.org/fhir/R4/datatypes.html#Address
var addressParts = [ ]
if ( currentValue . line ) {
addressParts = addressParts . concat ( currentValue . line )
}
if ( currentValue . city ) {
addressParts . push ( currentValue . city )
}
if ( currentValue . state ) {
addressParts . push ( currentValue . state )
}
if ( currentValue . postalCode ) {
addressParts . push ( currentValue . postalCode )
}
if ( currentValue . country ) {
addressParts . push ( currentValue . country )
}
accumulator . push ( addressParts . join ( " " ) )
} else {
//string, boolean
accumulator . push ( currentValue )
}
return accumulator
} , [ ] )
2023-08-01 21:29:35 -06:00
if ( NameProcessed . length == 0 ) {
"undefined"
}
else {
JSON . stringify ( NameProcessed )
}
2023-07-30 22:40:25 -06:00
` )
2023-07-08 08:43:30 -06:00
if err == nil && nameResult . String ( ) != "undefined" {
2023-07-30 22:40:25 -06:00
s . Name = [ ] byte ( nameResult . String ( ) )
2023-07-08 08:43:30 -06:00
}
// extracting Partof
2023-08-13 15:28:03 -06:00
partofResult , err := vm . RunString ( `
PartofResult = window . fhirpath . evaluate ( fhirResource , ' Organization . partOf ' )
if ( PartofResult . length == 0 ) {
"undefined"
}
else {
JSON . stringify ( PartofResult )
}
` )
2023-07-08 08:43:30 -06:00
if err == nil && partofResult . String ( ) != "undefined" {
2023-08-13 15:28:03 -06:00
s . Partof = [ ] byte ( partofResult . String ( ) )
2023-07-08 08:43:30 -06:00
}
// extracting Phonetic
2023-07-30 22:40:25 -06:00
phoneticResult , err := vm . RunString ( `
PhoneticResult = window . fhirpath . evaluate ( fhirResource , ' Organization . name ' )
PhoneticProcessed = PhoneticResult . reduce ( ( accumulator , currentValue ) = > {
if ( typeof currentValue == = ' string ' ) {
//basic string
accumulator . push ( currentValue )
} else if ( currentValue . family || currentValue . given ) {
//HumanName http://hl7.org/fhir/R4/datatypes.html#HumanName
var humanNameParts = [ ]
if ( currentValue . prefix ) {
humanNameParts = humanNameParts . concat ( currentValue . prefix )
}
if ( currentValue . given ) {
humanNameParts = humanNameParts . concat ( currentValue . given )
}
if ( currentValue . family ) {
humanNameParts . push ( currentValue . family )
}
if ( currentValue . suffix ) {
humanNameParts = humanNameParts . concat ( currentValue . suffix )
}
accumulator . push ( humanNameParts . join ( " " ) )
} else if ( currentValue . city || currentValue . state || currentValue . country || currentValue . postalCode ) {
//Address http://hl7.org/fhir/R4/datatypes.html#Address
var addressParts = [ ]
if ( currentValue . line ) {
addressParts = addressParts . concat ( currentValue . line )
}
if ( currentValue . city ) {
addressParts . push ( currentValue . city )
}
if ( currentValue . state ) {
addressParts . push ( currentValue . state )
}
if ( currentValue . postalCode ) {
addressParts . push ( currentValue . postalCode )
}
if ( currentValue . country ) {
addressParts . push ( currentValue . country )
}
accumulator . push ( addressParts . join ( " " ) )
} else {
//string, boolean
accumulator . push ( currentValue )
}
return accumulator
} , [ ] )
2023-08-01 21:29:35 -06:00
if ( PhoneticProcessed . length == 0 ) {
"undefined"
}
else {
JSON . stringify ( PhoneticProcessed )
}
2023-07-30 22:40:25 -06:00
` )
2023-07-08 08:43:30 -06:00
if err == nil && phoneticResult . String ( ) != "undefined" {
2023-07-30 22:40:25 -06:00
s . Phonetic = [ ] byte ( phoneticResult . String ( ) )
2023-07-08 08:43:30 -06:00
}
// extracting Profile
2023-08-13 15:28:03 -06:00
profileResult , err := vm . RunString ( `
ProfileResult = window . fhirpath . evaluate ( fhirResource , ' meta . profile ' )
if ( ProfileResult . length == 0 ) {
"undefined"
}
else {
JSON . stringify ( ProfileResult )
}
` )
2023-07-08 08:43:30 -06:00
if err == nil && profileResult . String ( ) != "undefined" {
2023-08-13 15:28:03 -06:00
s . Profile = [ ] byte ( profileResult . String ( ) )
2023-07-08 08:43:30 -06:00
}
// extracting Tag
tagResult , err := vm . RunString ( `
2023-08-13 12:30:39 -06:00
TagResult = window . fhirpath . evaluate ( fhirResource , ' meta . tag ' )
2023-07-08 08:43:30 -06:00
TagProcessed = TagResult . reduce ( ( accumulator , currentValue ) = > {
if ( currentValue . coding ) {
//CodeableConcept
currentValue . coding . map ( ( coding ) = > {
accumulator . push ( {
"code" : coding . code ,
"system" : coding . system ,
"text" : currentValue . text
} )
} )
} else if ( currentValue . value ) {
//ContactPoint, Identifier
accumulator . push ( {
"code" : currentValue . value ,
"system" : currentValue . system ,
"text" : currentValue . type ? . text
} )
} else if ( currentValue . code ) {
//Coding
accumulator . push ( {
"code" : currentValue . code ,
"system" : currentValue . system ,
"text" : currentValue . display
} )
} else if ( ( typeof currentValue == = ' string ' ) || ( typeof currentValue == = ' boolean ' ) ) {
//string, boolean
accumulator . push ( {
"code" : currentValue ,
} )
}
return accumulator
} , [ ] )
2023-08-01 21:29:35 -06:00
if ( TagProcessed . length == 0 ) {
"undefined"
}
else {
JSON . stringify ( TagProcessed )
}
2023-07-08 08:43:30 -06:00
` )
if err == nil && tagResult . String ( ) != "undefined" {
s . Tag = [ ] byte ( tagResult . String ( ) )
}
return nil
}
// TableName overrides the table name from fhir_observations (pluralized) to `fhir_observation`. https://gorm.io/docs/conventions.html#TableName
func ( s * FhirOrganization ) TableName ( ) string {
return "fhir_organization"
}