go to post Ashok Kumar T · Aug 5 The %BuildIndices class method is used to rebuild all indices on the class. To run it asynchronously, use the following: Do ##class(Ens.Util.Log).%BuildIndices() Do ##class(Ens.Util.Log).%BuildIndicesAsync() To rebuild a specific index, pass the index name as a list value: Do ##class(Ens.Util.Log).%BuildIndices($LB("TimeLogged")) You can also rebuild indices using SQL from 2021 version Rebuild all indices BUILD INDEX FOR TABLE Ens_Util.Log Rebuild a specific index BUILD INDEX FOR TABLE Ens_Util.Log INDEX TimeLogged
go to post Ashok Kumar T · Aug 5 Hi @shima Avakh Ens.Queue class provides various methods for working with queues. Queue-related information is stored in the global ^Ens.Queue. To abort messages from a specific queue, you can use the following class method Do ##class(Ens.Queue).AbortQueue(pQueueName) Replace pQueueName with the name of the queue you want to abort. This method allows you to target and abort messages in a specific queue.
go to post Ashok Kumar T · Jul 24 You can use :py alias to connect the python shell in IRIS terminal as well.
go to post Ashok Kumar T · Jul 23 Thank you for the explantaion @Steven Hobbs .In the subroutine ETNMINIM, the date is retrieved solely from $H (S h=$H). Given that, why are the errors recorded under the date 01/06/1841 ($ZDH=6) in ^ERRORS instead of the actual date on which the error occurred?
go to post Ashok Kumar T · Jul 21 Grateful for the recognition. Kudos to all winners and participants👏!
go to post Ashok Kumar T · Jul 21 You can use the Log() method or do LOG^%ETN(ErrorMessage) inside the Try{} Catch ex{} block and routine to capture the error on Application Errors.
go to post Ashok Kumar T · Jul 17 Hello @PhoebeK If emailAttachmentList is a DynamicArray, then the following property declaration is correct: Attempt 2 // Property emailAttachmentList As List of Request.EmailAttachment(%JSONFIELDNAME = "emailAttachmentList"); It looks like you're trying to set the value directly like: callrequest.emailAttachmentList.attachmentClass = "application/xml" However, since emailAttachmentList is a list, you need to either:- Use %JSONImport(response) to populate the list properly (e.g., `callrequest.%JSONImport(response)`), or- Loop through the list and set the property on each individual item, like this: For i=1:1:callrequest.emailAttachmentList.Count() { Set callrequest.emailAttachmentList.GetAt(i).attachmentClass = "application/xml" }
go to post Ashok Kumar T · Jul 14 The name property is Property name As HS.FHIRModel.R4.SeqOfHumanName; and the SeqOfHumanName class have Property list As %Library.DynamicArray;This list property holds the object of HS.FHIRModel.R4.HumanName
go to post Ashok Kumar T · Jul 11 Hello @Scott Roth I hope the target is a object reference of HS.FHIRModel.R4.Patientand the "name" property in in R4.Patient is an object property(HS.FHIRModel.R4.SeqOfHumanName ) and thisSeqOfHumanName stores the %DynamicArray of HS.FHIRModel.R4.HumanName object values into property called "list" So, First we have to check the name is $IsObject(r4Patient.name)&&(r4Patient.name.%IsA("HS.FHIRModel.R4.SeqOfHumanName")) and if it's true you can iterate the list (%DynamicArray) Set iter = r4Patient.name.list.%GetIterator() You can directly copy and run this example directly and it works for me. ClassMethod ParseHumanName() { Set r4Patient = ##class(HS.FHIRModel.R4.Patient).%New() ; Set seqHuman = ##class(HS.FHIRModel.R4.SeqOfHumanName).%New() ; create human name for seqHuman Set human = ##class(HS.FHIRModel.R4.HumanName).%New() Set human.family="pil" Set human.text="Ashok,kumar" ; ;push the HumanName into SeqOfHumanName Do seqHuman.add(human) ; Set SeqOfHumanName into Patient.name Set r4Patient.name = seqHuman If $IsObject(r4Patient.name)&&(r4Patient.name.%IsA("HS.FHIRModel.R4.SeqOfHumanName")) { Set iter = r4Patient.name.list.%GetIterator() #; while iter.%GetNext(,.humanName) { zw humanName.toDao() } } quit }
go to post Ashok Kumar T · Jul 9 I have full access and permissions for the directory and %All is my role. I'm able to connect to the %SYS and USER namespaces, but I'm unable to access the namespaces mapped the HS package( c:\intersystems\irishealthcomm\mgr\hscustom\) hscustom db.
go to post Ashok Kumar T · Jul 8 The HS.FHIRModel.R4.Patient class in IRIS directly represents the FHIR R4 Patient resource as defined. When a FHIR Bundle is loaded using HS.FHIRModel.R4.Bundle.fromDao(), each resource in the bundle's entry.resource is automatically mapped to the correct HS.FHIRModel.R4.* subclass (e.g., Patient, Encounter, AllergyIntolerance) based on its resourceType. There’s no need for manual casting — the object model handles the typing internally. here is the sample code Set bundle={"resourceType":"Bundle","type":"searchset","total":3,"entry":[{"fullUrl":"https://example.org/fhir/Patient/patient-1","resource":{"resourceType":"Patient","id":"patient-1","name":[{"family":"Doe","given":["John"]}],"gender":"male","birthDate":"1985-02-15"},"search":{"mode":"match"}},{"fullUrl":"https://example.org/fhir/Encounter/encounter-1","resource":{"resourceType":"Encounter","id":"encounter-1","status":"finished","class":{"system":"http://terminology.hl7.org/CodeSystem/v3-ActCode","code":"AMB","display":"ambulatory"},"subject":{"reference":"Patient/patient-1"},"period":{"start":"2023-07-01T10:00:00Z","end":"2023-07-01T10:30:00Z"}},"search":{"mode":"include"}},{"fullUrl":"https://example.org/fhir/AllergyIntolerance/allergy-1","resource":{"resourceType":"AllergyIntolerance","id":"allergy-1","clinicalStatus":{"coding":[{"system":"http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical","code":"active"}]},"verificationStatus":{"coding":[{"system":"http://terminology.hl7.org/CodeSystem/allergyintolerance-verification","code":"confirmed"}]},"type":"allergy","category":["food"],"criticality":"high","code":{"coding":[{"system":"http://snomed.info/sct","code":"227493005","display":"Cashew nuts"}],"text":"Allergy to cashews"},"patient":{"reference":"Patient/patient-1"},"reaction":[{"manifestation":[{"coding":[{"system":"http://snomed.info/sct","code":"271807003","display":"Skin rash"}]}],"severity":"moderate"}]},"search":{"mode":"include"}}]} set fhirModelBundle = ##class(HS.FHIRModel.R4.Bundle).fromDao(bundle) ; Zwrite fhirModelBundle.entry.list.size() 3 ; Zwrite fhirModelBundle.entry.list.get(0).toDao() ; patient {"fullUrl":"https://example.org/fhir/Patient/patient-1","resource":{"resourceType":"Patient","id":"patient-1","name":[{"family":"Doe","given":["John"]}],"gender":"male","birthDate":"1985-02-15"},"search":{"mode":"match"}} ; <DYNAMIC OBJECT> ; Zwrite fhirModelBundle.entry.list.get(1).toDao() ; encounter {"fullUrl":"https://example.org/fhir/Encounter/encounter-1","resource":{"resourceType":"Encounter","id":"encounter-1","status":"finished","class":{"system":"http://terminology.hl7.org/CodeSystem/v3-ActCode","code":"AMB","display":"ambulatory"},"subject":{"reference":"Patient/patient-1"},"period":{"start":"2023-07-01T10:00:00Z","end":"2023-07-01T10:30:00Z"}},"search":{"mode":"include"}} ; <DYNAMIC OBJECT> ; Zwrite fhirModelBundle.entry.list.get(2).toDao() ; Allergy {"fullUrl":"https://example.org/fhir/AllergyIntolerance/allergy-1","resource":{"resourceType":"AllergyIntolerance","id":"allergy-1","clinicalStatus":{"coding":[{"system":"http://terminology.hl7.org/CodeSystem/allergyintolerance-clinical","code":"active"}]},"verificationStatus":{"coding":[{"system":"http://terminology.hl7.org/CodeSystem/allergyintolerance-verification","code":"confirmed"}]},"type":"allergy","category":["food"],"criticality":"high","code":{"coding":[{"system":"http://snomed.info/sct","code":"227493005","display":"Cashew nuts"}],"text":"Allergy to cashews"},"patient":{"reference":"Patient/patient-1"},"reaction":[{"manifestation":[{"coding":[{"system":"http://snomed.info/sct","code":"271807003","display":"Skin rash"}]}],"severity":"moderate"}]},"search":{"mode":"include"}} ; <DYNAMIC OBJECT>
go to post Ashok Kumar T · Jul 8 Hello @Scott Roth I directly import JSON via fromDao method and It works for me. Did you get any errors while importing? Set patient = {"resourceType":"Patient","id":"example","text":{"status":"generated","div":"<div xmlns=\"http://www.w3.org/1999/xhtml\">John Doe</div>"},"identifier":[{"use":"usual","type":{"coding":[{"system":"http://terminology.hl7.org/CodeSystem/v2-0203","code":"MR","display":"Medical Record Number"}]},"system":"http://hospital.smarthealth.org","value":"123456"}],"active":true,"name":[{"use":"official","family":"Doe","given":["John"]}],"telecom":[{"system":"phone","value":"+1 555-123-4567","use":"mobile"},{"system":"email","value":"john.doe@example.com","use":"home"}],"gender":"male","birthDate":"1980-01-01","address":[{"use":"home","line":["123 Main Street"],"city":"Anytown","state":"CA","postalCode":"90210","country":"USA"}]} Set r4Patient = ##class(HS.FHIRModel.R4.Patient).fromDao(patient) Write r4Patient.toString()
go to post Ashok Kumar T · Jul 4 Thank you, I use the same query to differentiate between system web application APIs and user-defined web applications. It's much easier if there's a distinct column for this purpose.
go to post Ashok Kumar T · Jul 3 In the above example, the list property holds a %DynamicObject value, not a string literal. Therefore, you can use DAO (Dynamic Access Object) methods to work with it. However, if you're using the latest IRIS version (2023.2 or later), you can also use the apply method to retrieve the family and given fields directly from the %DynamicObject. Version 2024.1 Write r4Patient.name.list.apply("$[*].family").%ToJSON() write r4Patient.name.list.apply("$[*].given").%ToJSON() For older versions that do not support the apply method, you can use traditional JSON access techniques: /// loop by size for i=0:1:r4Patient.name.list.size()-1 { Set humanName = r4Patient.name.list.%Get(i) Write humanName.family_" "_humanName.given } Using an iterator: /// By iterator Set iter = r4Patient.name.list.%GetIterator() While iter.%GetNext(,.humanName) { Write humanName.family_" "_humanName.given } Sample code for the human name testing ClassMethod FHIRHunmanNameTest() { Set r4Patient = ##class(HS.FHIRModel.R4.Patient).%New() ; Set seqHuman = ##class(HS.FHIRModel.R4.SeqOfHumanName).%New() Set human = ##class(HS.FHIRModel.R4.HumanName).%New() Set human.family="pil" Set human.text="Ashok,kumar" ; Set human1 = ##class(HS.FHIRModel.R4.HumanName).%New() Set human1.family="pil" Set human1.text="Ashok,kumar" ; ; seq string Set seqString = ##class(HS.FHIRModel.R4.SeqOfString).%New() Set seqString.list=["ashok","kumar"] ; Set human1.given=seqString ; Do seqHuman.add(human.toDao()) Do seqHuman.add(human1.toDao()) Set r4Patient.name = seqHuman Set iter = r4Patient.name.list.%GetIterator() While iter.%GetNext(,.humanName) { Write humanName.family_" "_humanName.given } For i=0:1:r4Patient.name.list.size()-1 { Set humanName = r4Patient.name.list.%Get(i) Write humanName.family_" "_humanName.given } Write r4Patient.name.list.apply("$[*].family").%ToJSON(),! Write r4Patient.name.list.apply("$[*].given").%ToJSON() }
go to post Ashok Kumar T · Jul 3 Hello @Corentin Blondeau Here is the code to retrieve the properties in the same order they are defined in the class. ClassMethod GetPropOnDefinedSequence(pClass As %String = "", Output pProperties) { For { Set property=$$$comMemberNext(pClass,$$$cCLASSproperty,property) If property="" Quit If property="%%OID"!(property="%Concurrency") continue Set pProperties( +$$$defMemberKeyGet(pClass,$$$cCLASSproperty,property,$$$cPROPsequencenumber), property)="" } Return $$$OK } The properties assigned to the pProperties parameter properties(1,"Name")=""properties(2,"City")=""properties(3,"IsActive")=""properties(4,"State")=""