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 FhirCarePlan struct {
models . ResourceBase
// Detail type of activity
// https://hl7.org/fhir/r4/search.html#token
ActivityCode datatypes . JSON ` gorm:"column:activityCode;type:text;serializer:json" json:"activityCode,omitempty" `
// Specified date occurs within period specified by CarePlan.activity.detail.scheduled[x]
// https://hl7.org/fhir/r4/search.html#date
2023-08-01 21:29:35 -06:00
ActivityDate * time . Time ` gorm:"column:activityDate;type:datetime" json:"activityDate,omitempty" `
2023-07-08 08:43:30 -06:00
// Activity details defined in specific resource
// https://hl7.org/fhir/r4/search.html#reference
ActivityReference datatypes . JSON ` gorm:"column:activityReference;type:text;serializer:json" json:"activityReference,omitempty" `
// Fulfills CarePlan
// https://hl7.org/fhir/r4/search.html#reference
BasedOn datatypes . JSON ` gorm:"column:basedOn;type:text;serializer:json" json:"basedOn,omitempty" `
// Who's involved in plan?
// https://hl7.org/fhir/r4/search.html#reference
CareTeam datatypes . JSON ` gorm:"column:careTeam;type:text;serializer:json" json:"careTeam,omitempty" `
// Type of plan
// https://hl7.org/fhir/r4/search.html#token
Category datatypes . JSON ` gorm:"column:category;type:text;serializer:json" json:"category,omitempty" `
// Health issues this plan addresses
// https://hl7.org/fhir/r4/search.html#reference
Condition datatypes . JSON ` gorm:"column:condition;type:text;serializer:json" json:"condition,omitempty" `
/ *
Multiple Resources :
* [ AllergyIntolerance ] ( allergyintolerance . html ) : Date first version of the resource instance was recorded
* [ CarePlan ] ( careplan . html ) : Time period plan covers
* [ CareTeam ] ( careteam . html ) : Time period team covers
* [ ClinicalImpression ] ( clinicalimpression . html ) : When the assessment was documented
* [ Composition ] ( composition . html ) : Composition editing time
* [ Consent ] ( consent . html ) : When this Consent was created or indexed
* [ DiagnosticReport ] ( diagnosticreport . html ) : The clinically relevant time of the report
* [ Encounter ] ( encounter . html ) : A date within the period the Encounter lasted
* [ EpisodeOfCare ] ( episodeofcare . html ) : The provided date search value falls within the episode of care ' s period
* [ FamilyMemberHistory ] ( familymemberhistory . html ) : When history was recorded or last updated
* [ Flag ] ( flag . html ) : Time period when flag is active
* [ Immunization ] ( immunization . html ) : Vaccination ( non ) - Administration Date
* [ List ] ( list . html ) : When the list was prepared
* [ Observation ] ( observation . html ) : Obtained date / time . If the obtained element is a period , a date that falls in the period
* [ Procedure ] ( procedure . html ) : When the procedure was performed
* [ RiskAssessment ] ( riskassessment . html ) : When was assessment made ?
* [ SupplyRequest ] ( supplyrequest . html ) : When the request was made
* /
// https://hl7.org/fhir/r4/search.html#date
2023-08-01 21:29:35 -06:00
Date * time . Time ` gorm:"column:date;type:datetime" json:"date,omitempty" `
2023-07-08 08:43:30 -06:00
// Encounter created as part of
// https://hl7.org/fhir/r4/search.html#reference
Encounter datatypes . JSON ` gorm:"column:encounter;type:text;serializer:json" json:"encounter,omitempty" `
// Desired outcome of plan
// https://hl7.org/fhir/r4/search.html#reference
Goal datatypes . JSON ` gorm:"column:goal;type:text;serializer:json" json:"goal,omitempty" `
/ *
Multiple Resources :
* [ AllergyIntolerance ] ( allergyintolerance . html ) : External ids for this item
* [ CarePlan ] ( careplan . html ) : External Ids for this plan
* [ CareTeam ] ( careteam . html ) : External Ids for this team
* [ Composition ] ( composition . html ) : Version - independent identifier for the Composition
* [ Condition ] ( condition . html ) : A unique identifier of the condition record
* [ Consent ] ( consent . html ) : Identifier for this record ( external references )
* [ DetectedIssue ] ( detectedissue . html ) : Unique id for the detected issue
* [ DeviceRequest ] ( devicerequest . html ) : Business identifier for request / order
* [ DiagnosticReport ] ( diagnosticreport . html ) : An identifier for the report
* [ DocumentManifest ] ( documentmanifest . html ) : Unique Identifier for the set of documents
* [ DocumentReference ] ( documentreference . html ) : Master Version Specific Identifier
* [ Encounter ] ( encounter . html ) : Identifier ( s ) by which this encounter is known
* [ EpisodeOfCare ] ( episodeofcare . html ) : Business Identifier ( s ) relevant for this EpisodeOfCare
* [ FamilyMemberHistory ] ( familymemberhistory . html ) : A search by a record identifier
* [ Goal ] ( goal . html ) : External Ids for this goal
* [ ImagingStudy ] ( imagingstudy . html ) : Identifiers for the Study , such as DICOM Study Instance UID and Accession number
* [ Immunization ] ( immunization . html ) : Business identifier
* [ List ] ( list . html ) : Business identifier
* [ MedicationAdministration ] ( medicationadministration . html ) : Return administrations with this external identifier
* [ MedicationDispense ] ( medicationdispense . html ) : Returns dispenses with this external identifier
* [ MedicationRequest ] ( medicationrequest . html ) : Return prescriptions with this external identifier
* [ MedicationStatement ] ( medicationstatement . html ) : Return statements with this external identifier
* [ NutritionOrder ] ( nutritionorder . html ) : Return nutrition orders with this external identifier
* [ Observation ] ( observation . html ) : The unique id for a particular observation
* [ Procedure ] ( procedure . html ) : A unique identifier for a procedure
* [ RiskAssessment ] ( riskassessment . html ) : Unique identifier for the assessment
* [ ServiceRequest ] ( servicerequest . html ) : Identifiers assigned to this order
* [ SupplyDelivery ] ( supplydelivery . html ) : External identifier
* [ SupplyRequest ] ( supplyrequest . html ) : Business Identifier for SupplyRequest
* [ VisionPrescription ] ( visionprescription . html ) : Return prescriptions with this external identifier
* /
// https://hl7.org/fhir/r4/search.html#token
Identifier datatypes . JSON ` gorm:"column:identifier;type:text;serializer:json" json:"identifier,omitempty" `
// Instantiates FHIR protocol or definition
// https://hl7.org/fhir/r4/search.html#reference
InstantiatesCanonical datatypes . JSON ` gorm:"column:instantiatesCanonical;type:text;serializer:json" json:"instantiatesCanonical,omitempty" `
// Instantiates external protocol or definition
// https://hl7.org/fhir/r4/search.html#uri
InstantiatesUri string ` gorm:"column:instantiatesUri;type:text" json:"instantiatesUri,omitempty" `
// proposal | plan | order | option
// https://hl7.org/fhir/r4/search.html#token
Intent datatypes . JSON ` gorm:"column:intent;type:text;serializer:json" json:"intent,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
// Part of referenced CarePlan
// https://hl7.org/fhir/r4/search.html#reference
PartOf datatypes . JSON ` gorm:"column:partOf;type:text;serializer:json" json:"partOf,omitempty" `
// Matches if the practitioner is listed as a performer in any of the "simple" activities. (For performers of the detailed activities, chain through the activitydetail search parameter.)
// https://hl7.org/fhir/r4/search.html#reference
Performer datatypes . JSON ` gorm:"column:performer;type:text;serializer:json" json:"performer,omitempty" `
// 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" `
// CarePlan replaced by this CarePlan
// https://hl7.org/fhir/r4/search.html#reference
Replaces datatypes . JSON ` gorm:"column:replaces;type:text;serializer:json" json:"replaces,omitempty" `
// draft | active | on-hold | revoked | completed | entered-in-error | unknown
// https://hl7.org/fhir/r4/search.html#token
Status datatypes . JSON ` gorm:"column:status;type:text;serializer:json" json:"status,omitempty" `
// Who the care plan is for
// https://hl7.org/fhir/r4/search.html#reference
Subject datatypes . JSON ` gorm:"column:subject;type:text;serializer:json" json:"subject,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 * FhirCarePlan ) GetSearchParameters ( ) map [ string ] string {
searchParameters := map [ string ] string {
"activityCode" : "token" ,
"activityDate" : "date" ,
"activityReference" : "reference" ,
"basedOn" : "reference" ,
"careTeam" : "reference" ,
"category" : "token" ,
"condition" : "reference" ,
"date" : "date" ,
"encounter" : "reference" ,
"goal" : "reference" ,
2023-08-23 13:24:08 -06:00
"id" : "keyword" ,
2023-07-08 08:43:30 -06:00
"identifier" : "token" ,
"instantiatesCanonical" : "reference" ,
"instantiatesUri" : "uri" ,
"intent" : "token" ,
"language" : "token" ,
"lastUpdated" : "date" ,
"partOf" : "reference" ,
"performer" : "reference" ,
"profile" : "reference" ,
"replaces" : "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" ,
2023-07-08 08:43:30 -06:00
"status" : "token" ,
"subject" : "reference" ,
"tag" : "token" ,
"text" : "string" ,
"type" : "special" ,
}
return searchParameters
}
func ( s * FhirCarePlan ) 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 ActivityCode
activityCodeResult , err := vm . RunString ( `
ActivityCodeResult = window . fhirpath . evaluate ( fhirResource , ' CarePlan . activity . detail . code ' )
ActivityCodeProcessed = ActivityCodeResult . 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 ( ActivityCodeProcessed . length == 0 ) {
"undefined"
}
else {
JSON . stringify ( ActivityCodeProcessed )
}
2023-07-08 08:43:30 -06:00
` )
if err == nil && activityCodeResult . String ( ) != "undefined" {
s . ActivityCode = [ ] byte ( activityCodeResult . String ( ) )
}
// extracting ActivityDate
activityDateResult , err := vm . RunString ( "window.fhirpath.evaluate(fhirResource, 'CarePlan.activity.detail.scheduled')[0]" )
if err == nil && activityDateResult . String ( ) != "undefined" {
t , err := time . Parse ( time . RFC3339 , activityDateResult . String ( ) )
if err == nil {
2023-08-01 21:29:35 -06:00
s . ActivityDate = & t
} else if err != nil {
d , err := time . Parse ( "2006-01-02" , activityDateResult . String ( ) )
if err == nil {
s . ActivityDate = & d
}
2023-07-08 08:43:30 -06:00
}
}
// extracting ActivityReference
2023-08-13 15:28:03 -06:00
activityReferenceResult , err := vm . RunString ( `
ActivityReferenceResult = window . fhirpath . evaluate ( fhirResource , ' CarePlan . activity . reference ' )
if ( ActivityReferenceResult . length == 0 ) {
"undefined"
}
else {
JSON . stringify ( ActivityReferenceResult )
}
` )
2023-07-08 08:43:30 -06:00
if err == nil && activityReferenceResult . String ( ) != "undefined" {
2023-08-13 15:28:03 -06:00
s . ActivityReference = [ ] byte ( activityReferenceResult . String ( ) )
2023-07-08 08:43:30 -06:00
}
// extracting BasedOn
2023-08-13 15:28:03 -06:00
basedOnResult , err := vm . RunString ( `
BasedOnResult = window . fhirpath . evaluate ( fhirResource , ' CarePlan . basedOn ' )
if ( BasedOnResult . length == 0 ) {
"undefined"
}
else {
JSON . stringify ( BasedOnResult )
}
` )
2023-07-08 08:43:30 -06:00
if err == nil && basedOnResult . String ( ) != "undefined" {
2023-08-13 15:28:03 -06:00
s . BasedOn = [ ] byte ( basedOnResult . String ( ) )
2023-07-08 08:43:30 -06:00
}
// extracting CareTeam
2023-08-13 15:28:03 -06:00
careTeamResult , err := vm . RunString ( `
CareTeamResult = window . fhirpath . evaluate ( fhirResource , ' CarePlan . careTeam ' )
if ( CareTeamResult . length == 0 ) {
"undefined"
}
else {
JSON . stringify ( CareTeamResult )
}
` )
2023-07-08 08:43:30 -06:00
if err == nil && careTeamResult . String ( ) != "undefined" {
2023-08-13 15:28:03 -06:00
s . CareTeam = [ ] byte ( careTeamResult . String ( ) )
2023-07-08 08:43:30 -06:00
}
// extracting Category
categoryResult , err := vm . RunString ( `
CategoryResult = window . fhirpath . evaluate ( fhirResource , ' CarePlan . category ' )
CategoryProcessed = CategoryResult . 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 ( CategoryProcessed . length == 0 ) {
"undefined"
}
else {
JSON . stringify ( CategoryProcessed )
}
2023-07-08 08:43:30 -06:00
` )
if err == nil && categoryResult . String ( ) != "undefined" {
s . Category = [ ] byte ( categoryResult . String ( ) )
}
// extracting Condition
2023-08-13 15:28:03 -06:00
conditionResult , err := vm . RunString ( `
ConditionResult = window . fhirpath . evaluate ( fhirResource , ' CarePlan . addresses ' )
if ( ConditionResult . length == 0 ) {
"undefined"
}
else {
JSON . stringify ( ConditionResult )
}
` )
2023-07-08 08:43:30 -06:00
if err == nil && conditionResult . String ( ) != "undefined" {
2023-08-13 15:28:03 -06:00
s . Condition = [ ] byte ( conditionResult . String ( ) )
2023-07-08 08:43:30 -06:00
}
// extracting Date
dateResult , err := vm . RunString ( "window.fhirpath.evaluate(fhirResource, 'AllergyIntolerance.recordedDate | CarePlan.period | CareTeam.period | ClinicalImpression.date | Composition.date | Consent.dateTime | DiagnosticReport.effective | Encounter.period | EpisodeOfCare.period | FamilyMemberHistory.date | Flag.period | (Immunization.occurrenceDateTime) | List.date | Observation.effective | Procedure.performed | (RiskAssessment.occurrenceDateTime) | SupplyRequest.authoredOn')[0]" )
if err == nil && dateResult . String ( ) != "undefined" {
t , err := time . Parse ( time . RFC3339 , dateResult . String ( ) )
if err == nil {
2023-08-01 21:29:35 -06:00
s . Date = & t
} else if err != nil {
d , err := time . Parse ( "2006-01-02" , dateResult . String ( ) )
if err == nil {
s . Date = & d
}
2023-07-08 08:43:30 -06:00
}
}
// extracting Encounter
2023-08-13 15:28:03 -06:00
encounterResult , err := vm . RunString ( `
EncounterResult = window . fhirpath . evaluate ( fhirResource , ' CarePlan . encounter ' )
if ( EncounterResult . length == 0 ) {
"undefined"
}
else {
JSON . stringify ( EncounterResult )
}
` )
2023-07-08 08:43:30 -06:00
if err == nil && encounterResult . String ( ) != "undefined" {
2023-08-13 15:28:03 -06:00
s . Encounter = [ ] byte ( encounterResult . String ( ) )
2023-07-08 08:43:30 -06:00
}
// extracting Goal
2023-08-13 15:28:03 -06:00
goalResult , err := vm . RunString ( `
GoalResult = window . fhirpath . evaluate ( fhirResource , ' CarePlan . goal ' )
if ( GoalResult . length == 0 ) {
"undefined"
}
else {
JSON . stringify ( GoalResult )
}
` )
2023-07-08 08:43:30 -06:00
if err == nil && goalResult . String ( ) != "undefined" {
2023-08-13 15:28:03 -06:00
s . Goal = [ ] byte ( goalResult . String ( ) )
2023-07-08 08:43:30 -06:00
}
// extracting Identifier
identifierResult , err := vm . RunString ( `
IdentifierResult = window . fhirpath . evaluate ( fhirResource , ' AllergyIntolerance . identifier | CarePlan . identifier | CareTeam . identifier | Composition . identifier | Condition . identifier | Consent . identifier | DetectedIssue . identifier | DeviceRequest . identifier | DiagnosticReport . identifier | DocumentManifest . masterIdentifier | DocumentManifest . identifier | DocumentReference . masterIdentifier | DocumentReference . identifier | Encounter . identifier | EpisodeOfCare . identifier | FamilyMemberHistory . identifier | Goal . identifier | ImagingStudy . identifier | Immunization . identifier | List . identifier | MedicationAdministration . identifier | MedicationDispense . identifier | MedicationRequest . identifier | MedicationStatement . identifier | NutritionOrder . identifier | Observation . identifier | Procedure . identifier | RiskAssessment . identifier | ServiceRequest . identifier | SupplyDelivery . identifier | SupplyRequest . identifier | VisionPrescription . 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 InstantiatesCanonical
2023-08-13 15:28:03 -06:00
instantiatesCanonicalResult , err := vm . RunString ( `
InstantiatesCanonicalResult = window . fhirpath . evaluate ( fhirResource , ' CarePlan . instantiatesCanonical ' )
if ( InstantiatesCanonicalResult . length == 0 ) {
"undefined"
}
else {
JSON . stringify ( InstantiatesCanonicalResult )
}
` )
2023-07-08 08:43:30 -06:00
if err == nil && instantiatesCanonicalResult . String ( ) != "undefined" {
2023-08-13 15:28:03 -06:00
s . InstantiatesCanonical = [ ] byte ( instantiatesCanonicalResult . String ( ) )
2023-07-08 08:43:30 -06:00
}
// extracting InstantiatesUri
instantiatesUriResult , err := vm . RunString ( "window.fhirpath.evaluate(fhirResource, 'CarePlan.instantiatesUri')[0]" )
if err == nil && instantiatesUriResult . String ( ) != "undefined" {
s . InstantiatesUri = instantiatesUriResult . String ( )
}
// extracting Intent
intentResult , err := vm . RunString ( `
IntentResult = window . fhirpath . evaluate ( fhirResource , ' CarePlan . intent ' )
IntentProcessed = IntentResult . 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 ( IntentProcessed . length == 0 ) {
"undefined"
}
else {
JSON . stringify ( IntentProcessed )
}
2023-07-08 08:43:30 -06:00
` )
if err == nil && intentResult . String ( ) != "undefined" {
s . Intent = [ ] byte ( intentResult . 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 PartOf
2023-08-13 15:28:03 -06:00
partOfResult , err := vm . RunString ( `
PartOfResult = window . fhirpath . evaluate ( fhirResource , ' CarePlan . 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 Performer
2023-08-13 15:28:03 -06:00
performerResult , err := vm . RunString ( `
PerformerResult = window . fhirpath . evaluate ( fhirResource , ' CarePlan . activity . detail . performer ' )
if ( PerformerResult . length == 0 ) {
"undefined"
}
else {
JSON . stringify ( PerformerResult )
}
` )
2023-07-08 08:43:30 -06:00
if err == nil && performerResult . String ( ) != "undefined" {
2023-08-13 15:28:03 -06:00
s . Performer = [ ] byte ( performerResult . 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 Replaces
2023-08-13 15:28:03 -06:00
replacesResult , err := vm . RunString ( `
ReplacesResult = window . fhirpath . evaluate ( fhirResource , ' CarePlan . replaces ' )
if ( ReplacesResult . length == 0 ) {
"undefined"
}
else {
JSON . stringify ( ReplacesResult )
}
` )
2023-07-08 08:43:30 -06:00
if err == nil && replacesResult . String ( ) != "undefined" {
2023-08-13 15:28:03 -06:00
s . Replaces = [ ] byte ( replacesResult . String ( ) )
2023-07-08 08:43:30 -06:00
}
// extracting Status
statusResult , err := vm . RunString ( `
StatusResult = window . fhirpath . evaluate ( fhirResource , ' CarePlan . status ' )
StatusProcessed = StatusResult . 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 ( StatusProcessed . length == 0 ) {
"undefined"
}
else {
JSON . stringify ( StatusProcessed )
}
2023-07-08 08:43:30 -06:00
` )
if err == nil && statusResult . String ( ) != "undefined" {
s . Status = [ ] byte ( statusResult . String ( ) )
}
// extracting Subject
2023-08-13 15:28:03 -06:00
subjectResult , err := vm . RunString ( `
SubjectResult = window . fhirpath . evaluate ( fhirResource , ' CarePlan . subject ' )
if ( SubjectResult . length == 0 ) {
"undefined"
}
else {
JSON . stringify ( SubjectResult )
}
` )
2023-07-08 08:43:30 -06:00
if err == nil && subjectResult . String ( ) != "undefined" {
2023-08-13 15:28:03 -06:00
s . Subject = [ ] byte ( subjectResult . 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 * FhirCarePlan ) TableName ( ) string {
return "fhir_care_plan"
}