Hi all,
I am facing actually a similar issue, any hint would be highly appreciated: I developed an operation that downloads a document (from a REST Service as well) and stores it to a local folder on the server. If saving locally fails, e.g. due to insufficient file permissions, the .stream-files do remain in the stream-folder for the namespace.
Before using the Save-Method in %FileBinaryStream, the payload is copied from HttpResponse.Data (CopyFrom).
I purged the trigger-messages for the operation as well, but without an effect. Can I simply delete those .stream-files? Maybe they were created temporarily before trying to copy them into the mentioned directory, or as a backup? Is there any way how to check if they are related to any database objects?
Thanks!
Hello everyone,
not sure if it is still possible to proceed in this topic, but I am facing a similar problem: would like to embed larger payloads (greater 3M) as presentedForm in a DiagnosticReport to send it to our archive server (have to prepend as well, unfortunately I am not too familiar with FHIR at all).
My brute force method is to populate a HS.FHIR.DTL.vR4.Model.Resource.DiagnosticReport using a DTL, convert it to a DynamicObject, replace the presentedForm.data-Property with the large file stream, and write it out to a QuickStream:
ClassMethod GetQuickStreamFromDiagnosticReport(pDiagRep As HS.FHIR.DTL.vR4.Model.Resource.DiagnosticReport, pFile As %String) As %String { #dim tStreamInFile As %Stream.FileBinary #dim tTempJSON As %Stream.Object #dim tDynOb As %DynamicObject #dim tQuickStream As HS.SDA3.QuickStream Set tStreamInFile = ##class(%Stream.FileBinary).%New() Do tStreamInFile.FilenameSet(pFile) // convert: DiagnosticReport --> JSON --> DynamicObject Set tTempJSON = pDiagRep.ToJSON() Set tDynOb = ##class(%DynamicAbstractObject).%FromJSON(tTempJSON) // replace presentedForm.(1).data-property by stream Do tDynOb.%Get("presentedForm").%Get(0).%Set("data", tStreamInFile, "stream") // serialize DynamicObject Set tQuickStream = ##class(HS.SDA3.QuickStream).%New() Do tDynOb.%ToJSON(tQuickStream) Do tQuickStream.%Save() Quit tQuickStream.%Id() }
It works, although it seems like a hack. Any hints how to improve would be highly appreciated...
Thanks!