go to post Stuart Byrne · Mar 16, 2023 Here you go:https://docs.intersystems.com/ens201813/csp/documatic/%25CSP.Documatic.c...
go to post Stuart Byrne · Mar 16, 2023 Hi Mike,Could you use an XLST to parse the XML and pass the value fields by reference into COS variables?I've done something similar on a smaller scale for some IHE transactions (Albeit in HealthShare), but I've used XLST in IRIS as well.I can't get to the Caché 2018.1 docs to check.
go to post Stuart Byrne · Nov 9, 2022 Hi @Kathy Ward Are you trying to transform from HL7 2.x to HL7 2.x?If that's the case you should be able to map the OBX()-5 from target to source. Regards Stuart
go to post Stuart Byrne · Sep 7, 2022 The use of sub transforms is always subjective subject.Go what feels best for you if your having many lines for a specific section / function then a sub-transform is suitable.
go to post Stuart Byrne · Sep 7, 2022 Your getting that error as your class is named %BI.Adaptor. Create a custom name and extend %BI.Adaptor
go to post Stuart Byrne · Aug 19, 2022 The key (k1) is missing from your targetObj:<subtransform class='ADT.DTL.SDAToPatientIdentifierInfo' targetObj='target.PatientIdentifierInfo.()' sourceObj='source.{Patient.Extension.PatientIdentifiers(k1)}' /> In your master transform is this housed within a foreach loop and k1 defined?
go to post Stuart Byrne · Aug 12, 2021 Thank you @Antonio Garcia Martinez for raising this, as I've just learnt something important and @Marc Mundt for pointing me at the right place!
go to post Stuart Byrne · Mar 15, 2021 Thanks for the advice @Vitaly Furman, I used square bracket syntax as I was iterating over an array. I did try my code using {} brackets and my code still isn't ending the nested IF loops upon finding the field and value that match. Regards Stuart
go to post Stuart Byrne · Mar 14, 2021 Source JSON: { "patient": [ { "age": 51, "name": { "forename": "Bill", "surname": "Brighthouse" } }, { "age": 2, "name": { "forename": "Dickie", "surname": "Bird" } } ]}
go to post Stuart Byrne · Mar 14, 2021 Hi Joey, @Arun Tiriveedhi is correct that you need to use square bracket syntax, as this returns a comma delimited list. I had a case where I had a whitelist of OBR-4.1 values for filtering result messages to a particular system. @Stephen Renshaw made a great suggestion to create a function to loop through the list and query the lookup table here: https://community.intersystems.com/post/using-lookup-or-exists-repeating-fields-ensemble-business-rule Regards Stuart
go to post Stuart Byrne · Nov 28, 2020 Thanks David, your suggestion and some advice via the WRC enabled me to connect over FTPS and collect the text reports from the 3rd party.
go to post Stuart Byrne · Nov 28, 2020 Thank you Stephen, I used your advice on square brackets and your method as a template to write my own. Thank you for your guidance. Stuart
go to post Stuart Byrne · Jun 23, 2020 I've tried testing in the console using the %Net.FTP Command. I ran the following (server name substituted): do ftpcall.Connect("sftp.ldh.nhs.uk",username,pwd,"990") I did a zwrite and found the connection was sucessful and on: I got the following for the Return message: write !, ftpcall.ReturnMessage Features: MDTM REST STREAM SIZE MLST type*;size*;modify*; MLSD AUTH SSL AUTH TLS PROT PBSZ UTF8 CLNT MFMT EPSV EPRTEnd This says it supports PROT protocol, but I am not sure from the %Net.FTP documentation how to set this feature.
go to post Stuart Byrne · Jun 6, 2020 Hi Kevin, I had gone down your route in the end. I had been using the FindSegment method from the EnsLib.HL7.Message, which uses the 2nd input variable, however I was having issues implementing the key byref. Creating my own counter using the same as you suggested with "set obxCounter=source.GetValueAt("PIDgrpgrp("_(1)_").ORCgrp("_(1)_").OBXgrp("_("*")_")") " and then using the full HL7 segment structure to retrieve the fields removed all woes. Thank you Vic for your help too, I think my use of the FindSegment method was causing my issues.
go to post Stuart Byrne · Jun 4, 2020 Thanks Vic, The incoming messages have these set already: DocTypeCategory 2.4 DocTypeSecondary ORU_R01 DocTypeName ORU_R01 pMsg is set to EnsLib.HL7.Message, which information should be populated when the method is called right? Stuart
go to post Stuart Byrne · Jun 4, 2020 Thanks Vic, I fixed the mistake, but am still having issues. I tried set obxcnt = pMSg.GetValueAt("OBX(*)"), but the counter doesn't get populated.
go to post Stuart Byrne · Mar 10, 2020 Hi Edward, I've posted an excerpt of the code as I want to save the classmethod for another post. Memory/speed shouldn't be an issue as the size of the lists should be <30 elements. Thanks Stuart
go to post Stuart Byrne · Mar 10, 2020 Excerpt of Code as Promised: set list = "ABC~DEF~GHI~JKL~MNO~[~PQR~]" set SegmentList = $LISTFROMSTRING(list,"~") Set SegmentCount = $LISTLENGTH(SegmentList) FOR i = 1:1:SegmentCount{ IF ($LISTGET(SegmentList,i,i)= "[") { set $LIST(SegmentList,i,i)="" set OptionalSegment = "Y" } ELSEIF ($LISTGET(SegmentList,i,i)= "]") { set $LIST(SegmentList,i,i)="" } ELSEIF ($LISTGET(SegmentList,i,i)= "") { QUIT } Write !, "Current Segment: "_$LISTGET(SegmentList,i,i) Set SegmentFields = $LISTFROMSTRING(object.SegmentSubStructure,"~") Set SegFieldCount = $LISTLENGTH(SegmentFields)
go to post Stuart Byrne · Feb 21, 2020 Superb, thank you both for your advice. @Anastasia Dyubaylo has already made contact. Have a good weekend. Stuart