go to post Ashok Kumar · May 18 Thanks @Luis Angel Pérez Ramos Does Java 11 is mandatory or Can I use latest version. I tired with latest version. anyway got the same error.
go to post Ashok Kumar · May 13 Thanks @Robert It's working after enabled the %JavaServer in external language.
go to post Ashok Kumar · May 13 Thank you @Enrico Parisi I enabled the %JavaServer in external language server and it's working now. Documentation
go to post Ashok Kumar · May 1 I don't have any granular level samples right now. Generally speaking, it depends on our code implementation how we get the payload data from the system/upstream stream. There are certain validation based on the requirements. So, I hope there is no general mapping to convert our information into SDA. Thanks!
go to post Ashok Kumar · Apr 29 Thanks @Alexander Koblov I just quick checked the documentation. It's fixed!
go to post Ashok Kumar · Apr 25 Hello @isabella Barnes I'd create some custom container. Check, modify and validate all the fields in payload by using some additional DTL's and Code from the and mapped into the custom container. Then I created a DTL mapping and map the custom container with the InterSystems intermediary format HS.SAD3.Container Finally use the container object to generate the FHIR resource. /// custom conatiner class Class Test.project.CustomContainer Extends (Ens.Request, %JSON.Adaptor) { /// (Custom Persistent class with HS.SDA3.Medication) Property Medication As Medication; Property Procedure As Procedure; /// (Custom Persistent class with HS.SDA3.Procedure) Property Referral As Referral; /// (Custom Persistent class with HS.SDA3.Referral) Property Appointment As Appointment; /// (Custom Persistent class with HS.SDA3.Appointment) Property Immunization As Immunization; /// (Custom Persistent class with HS.SDA3.Vaccination) Property Diagnosis As Diagnosis; /// (Custom Persistent class with HS.SDA3.Diagnosis) } /// additional support class Class Test.project.Medication Extends (Ens.Request, %JSON.Adaptor) { /// Add your fields /// Property Context As %String(MAXLEN = 250); /// Relevant to Medication Requests, this represents whether a request is a proposal, /// plan, or an original order. /// VIEWERLIB: Not stored Property RequestIntent As HS.SDA3.CodeTableDetail.MedicationRequestIntent; /// Indicates if this record was captured as a secondary 'reported' record rather than /// as an original primary source-of-truth record. /// VIEWERLIB: Not stored Property IsReported As HS.SDA3.Boolean; /// etc........ } Class Test.project.Procedure Extends (Ens.Request, %JSON.Adaptor) { /// Add your fields /// Property EnteredOn As HS.SDA3.TimeStamp; /// HL7: PR1-19.1 : ProcedureIdentifier.EntityIdentifier<br> /// VIEWERLIB: User.HS.MRProcedures(PROCExternalId) Property ExternalId As %String(MAXLEN = 220); /// etc........ } DTL Mapping Class Test.project.DTL.CustomToFHIRMapping Extends Ens.DataTransformDTL [ DependsOn = (Test.project.CustomContainer, HS.SDA3.Container) ] { Parameter IGNOREMISSINGSOURCE = 1; Parameter REPORTERRORS = 1; Parameter TREATEMPTYREPEATINGFIELDASNULL = 0; XData DTL [ XMLNamespace = "http://www.intersystems.com/dtl" ] { <transform sourceClass='Test.project.CustomContainer' targetClass='HS.SDA3.Container' create='new' language='objectscript' > <assign value='source.Medication' property='target.Medications.(1)' action='set' /> <assign value='source.Procedure' property='target.Procedures.(1)' action='set' /> <assign value='source.Referral' property='target.Referrals.(1)' action='set' /> <assign value='source.Appointment' property='target.Appointments.(1)' action='set' /> <assign value='source.Diagnosis' property='target.Diagnoses.(1)' action='set' /> </transform> } } screenshot of DTL This is how I approach the conversion. Thanks!
go to post Ashok Kumar · Apr 13 Hello @Parameshwaran Muthaiyan The current approach you have implemented is the exact approach. because, You have to execute the query every time if we are modify the conditional values. Otherwise the results will remine the same.
go to post Ashok Kumar · Feb 6 Hello @Sylvain Guilbaud Yeah, You are right. I haven't tried for TOP clause but it's works for WHERE . Thanks for pointing this.
go to post Ashok Kumar · Feb 6 Usually you will get a serialization JSON (string) in result. You can do deserialization by using %DynamicObject.
go to post Ashok Kumar · Feb 4 Hi @Pierre LaFay Define a Method instead of ClassMethod and Instantiate the object for that class and call the required method. It will work Class Bna.Utils.Sql Extends %RegisteredObject { ClassMethod RemoveIrisTestUsers() As %Status { set obj = ..%New() New $NameSpace Set $NameSpace="%SYS" // Get test users by login begining Set query = "select * from Security.Users "_ "where "_ "ID like LOWER('ARS%') or"_ "ID like LOWER('CHERCHEUR%') or"_ "ID like LOWER('CS%') or"_ "ID like LOWER('DGOS%') or"_ "ID like LOWER('CENTRE%')" Set sc =obj.SelectFirstColsInArray(query, .userIds) if 'sc Return sc zw userIds Return $$$OK } Method SelectFirstColsInArray(query, test) { zwrite query,test return $$$OK } }
go to post Ashok Kumar · Jan 26 The FHIR logs are stored in the global ^FSLOG . Enable this logging by declaring the ^FSLogChannel
go to post Ashok Kumar · Jan 26 Useful SQL JSON functions. I would like to include one more Aggregate function SQL JSON_ARRAYAGG into this list. Create JSON object and push into JSON array based on condition or entire rows select JSON_ARRAYAGG(JSON_OBJECT('Id':Id,'Name':Name,'phoneNumber':Phone,'State':state)) As JSON from Sample.Person
go to post Ashok Kumar · Jan 24 Thanks @Julius Kavay , Ok. Yes, both global and private global storage at the first time of initialization. Why does it consumes minimum 8 byte(seems default and Is this Default byte size) regardless of single character(1 byte) in $storage. It consumes same or more than same byte when store in to global. Is this actual physical storage size(bytes) for the global. LEARNING>Set ^TEST="a" LEARNING>d ^%GSIZE Global ^TEST directory: c:\intersystems\irishealth\mgr\learning\ Page: 1 GLOBAL SIZE 24 Jan 2024 11:26 AM Global Blocks Bytes Used Packing Contig. -------- -------- --------------- ------- ------- TEST 1 12 0 % 0 TOTAL Blocks Bytes Used Packing Contig. -------- -------- --------------- ------- ------- 1 12 0 % 0 <RETURN> to continue or '^' to STOP:
go to post Ashok Kumar · Jan 21 Hello @Andy Stobirski Have you created a web application? If not, You have to create a web application. Configure the necessary details such as namespace, url add your PCRest.disp in dispatch class and assign roles. Save the application and call your RESTFul api from postman. /// Says Hello ClassMethod Hello() As %Stream.Object { return {"status":"ok","message":"working"} }
go to post Ashok Kumar · Jan 21 Hello @Andy Stobirski The property "swagger" is an mandatory field and the value should be string value "2.0" not even integer 2 or anything other than "2.0". If you defined the mandatory fields then it should work.