1 Follower · 72 Posts

A comma-separated values (CSV) file is a delimited text file that uses a comma to separate values. Each line of the file is a data record. Each record consists of one or more fields, separated by commas. The use of the comma as a field separator is the source of the name for this file format. A CSV file typically stores tabular data (numbers and text) in plain text, in which case each line will have the same number of fields.

Question isabella Barnes · Nov 16, 2023

Can someone share some details for creating a  pipeline for converting CCDA (XML) document into Flatfile or CSV File using IRIS.

@Marc Mundt 
@David.M 
@Paul Lomayesva

Could you please help me out identifying the inbound and outbound adapters along with the DTL process for converting CCDA into CSV Files.


Thanks in  advance!!
Isabella

3
0 552
Question Thembelani Mlalazi · Oct 13, 2017

I am trying to read a csv file and transfer it to a XML file without storing the objects to a database I have this code here doing the reading and have another method transferring the object read to a file but the reading one reads fine when it comes to the converting one I run to problems nothing happens any help appreciated

ClassMethod Write(obj, directory As %String = "C:\40_Test\") As %Status
{
    set writer=##class(%XML.Writer).%New()
    set writer.Indent=1

  
    // set the file
 
     Set filename=directory_"Generatedfile"_".xml"
    set status=writer.OutputFilename(filename)
    if $$$ISERR(status) {
        do $System.Status.DisplayError(status)
        quit $$$ERROR($$$GeneralError, "Output destination not valid")
    }

    set status=writer.RootObject(obj)
    if $$$ISERR(status) {
        do $System.Status.DisplayError(status)
        quit $$$ERROR($$$GeneralError, "Error writing root object")
    }
       
    quit status
}

//reads in a csv file
ClassMethod ImportCSV(pInput As %Stream.Object)
{
   set adapter =##class(%Stream.FileCharacter).%New()
  
  set status=adapter.LinkToFile(pInput)
  
  if $$$ISERR(status)
  {
   do $System.Status.DisplayError(status)
  }
  
  set counter =1
  
  while 'adapter.AtEnd
  {
   set line=adapter.ReadLine()
   
   set rec= ##class(TestEnvironment.HRecord).%New()
   
   set rec.OrCode=$piece(line,",",1)
   set rec.Name=$piece(line,",",2)
   set rec.Type=$piece(line,",",3)
   set rec.Security=$piece(line,",",4)
   set rec.Age=$piece(line,",",5)
   set rec.Gender=$piece(line,",",6)
   set rec.TotalCount=$piece(line,",",7)
   set rec.BOccupied=$piece(line,",",8)
   set rec.DTBCount=$piece(line,",",9)
   set rec.LBCount=$piece(line,",",10)
   set rec.Available=$piece(line,",",11)
   set rec.Warn=$piece(line,",",12)
   set rec.LastU=$piece(line,",",13)
   

         Set savestatus=rec.%Save()
              
      if $$$ISERR(savestatus)
    {
     do $System.Status.DisplayError(status)
    }
   
    }
   
    //if error found during processing,show it
    if $$$ISERR(status)
    {
     do $System.Status.DisplayError(status)
    }
   
    //Check for error during convertion
     set convert=1
    Try
    {
     set convert = ##class(TestEnvironment.HRecord).Write(rec)
     }
     Catch
     {
      set convert=0
     }
    
    If (convert '=1)
    {
        Write "Convertion did not take place "
        Quit
        }
}
2
0 877
Question ED Coder · Sep 17, 2020

Is there a way to bulk load csv into a global? I have a csv with 283 lines in the following pattern

123, first text

234, second text

456, third text

I want to load them into a global ^loader(code, text). Is there a way to upload them using code?

4
0 427
Question Thomas Kotze · Nov 7, 2016

Hi,  We have a business process that receives back a character stream that has csv content from a SOAP Operation call. I was hoping to make use of the record mapper to map the content to a record map to be able to process the transactions.

I only see examples/documentation of how to use a File or ftp business operation/service to map the stream to a record map.

Is this at all possible to get the csv stream into a record map batch object.

Regards

Thomas

1
0 571
Question David Saunders · Aug 12, 2025

I am trying to use upload.csp as a template for choosing a CDV file to process. I am calling it from a zen page using this:
<button caption="Import Client Consultation Extract" 
       controlStyle="width:500px; height:100px; font-size:1.5em;"
         onclick="zenPage.importExtract();"/>

ClientMethod importExtract() [ Language = javascript ]
{
    // Open CSP popup to upload the CSV
    //alert('importExtract called.');
    zenPage.launchPopupWindow(zenLink('Upload.

8
0 205
Question Mack Altman · Feb 16, 2018

I came across How to import a tab separated text file into a SQL table programmatically?, which appears to indicate that I can pass the filename and all records will be imported. However, when I put use the Import method only a single record gets imported. However, all records are imported if I use the management console to import the file by selecting it and choosing the options.

Has anyone ran into this in the past?

3
0 792
Question Guilherme Emmerick · Sep 23, 2020

I need to get a file in a directory and when clicking on the download button, this file will be downloaded on the client side.

</head>
<csp:class super="%CSP.Page,Relatorio.GeraCSV">
<body> <input type="button" value="Gera Relatório" onClick="#server(..serve())#"> </body>

ClassMethod serve() As %Status
{
set name = "C:\Users\gpemm\Desktop\myfile.csv"
    #dim sc As %Status = $$$OK
    #dim %response As %CSP.Response
    kill %request.Data
    set %request.Data("STREAMOID",1)= ##class(%CSP.StreamServer).Encrypt(##class(%CSP.StreamServer).GetOidForFile(name))
    if ##class(%CSP.StreamServer

2
0 676
Question Confused Developer · May 4, 2017

Hi All,

I need urgent help,

I want to export the values from Global to CSV file.

Values are in global are :

^Global1(1)="1,2,3,4"
^Global1(2)="5,6,7,8"
.
.
.
^Global1(n)="n,n,n,n"

I want output in CSV File as:
1,2,3,4
5,6,7,8
.
.
.
n,n,n,n

I made a class:

ClassMethod ExportNewSchemaGlobals(pFile)
{
    Set ary("^Global1")=""
    Set pFile = "C:/Test.csv"
      
    Set ary = ##class(%Library.Global).Export(,.ary,pFile)
}

5
0 2261
Question Aaron Vail · Oct 8, 2019

I'm trying to read in a CSV file and map to MFN^M16.  The first problem I'm having is getting the Service to read the file without causing errors (see below).  I'm using EnsLib.File.PassthroughServicebecause (as I understand it) it allows for anything.

ERROR <Ens>ErrBPTerminated: Terminating BP CSVtoHL7M16 # due to error:

ERROR <Ens>ErrException: <PROPERTY DOES NOT EXIST>zOnRequest+1^EnsLib.MsgRouter.VDocRoutingEngine.1 *DocType,Ens.StreamContainer -- logged as '-' number - @'' >
ERROR <Ens>ErrException: <PROPERTY DOES NOT EXIST>zOnRequest+1^EnsLib.MsgRouter.VDocRoutingEngine.1 *DocType,Ens.

1
0 571
Question Joe Schra · Jan 18, 2021

Hello!

I have created a record map that I am going to use to parse a flat file coming into Ensemble. From there I am trying to send the parsed out data as emails to patients. I am getting this error when the Service tries to locate the file and send it through...it finds the file (as it states in the error message). So why does it say it does not exist?

15:16:09.420 ERROR #5012: File '/ens/mgr/interfacefiles/test/test22forOPBHSHAWD.txt' does not exist

Thanks for your insight!

2
0 510
Question Stuart Byrne · May 23, 2017

Dear All,

I’m having trouble creating the following business service.  It’s intention is to pick up an CSV via FTP and pass it to a Business process that transforms it to a HL7 message.

I have created a record map for the CSV file, which I am trying to call in the business service and parse it into a new message class, which can be transformed in the business process.

Please could you advise:

Business Service:

/// Collects CSV from Epic FTP, looking for ENH patient
/// antiobitic sensitivities to be passed on to ENH Infection control
/// Patch 176
Class CUH.Serv.EpicFTPFilePickup Extends (Ens.BusinessService, CUH.Recordmap.ENHSens2HL7)
{

Parameter ADAPTER = "EnsLib.FTP.InboundAdapter";

// Adds Option to state which Business process is the target of the Business service

Parameter SETTINGS As %String = "TargetConfigName";

// Declares that the TargetConfigName as a %String

Property TargetConfigName As %String(MAXLEN = 999);

// previous pInput: pInput As %RegisteredObject & Output pOutput As %RegisteredObject

Method OnProcessInput(pInput As %IO.DeviceStream, Output pOutput As %RegisteredObject) As %Status
{
                //Create Request Message
                //set trequest = ##class(CUH.Recordmap.ENHSens2HL7)
               
                do ##class(CUH.Recordmap.PutObject).%New()
                //Send Request to CUH.Proc.ICENETROUTER
               
                set tgo = ..SendRequestAsync(..TargetConfigName,trequest)

                Quit $$$ERROR($$$NotImplemented)
}

}
2
0 666
Question Aaron Vail · Oct 14, 2019

I'm trying to create a new Record Map but I keep getting a ZEN Exception error.  I actually go this to work the very first time I did it and have a record map.  But I need to do more.

I'm working on my local machine so I can grab a CSV (or txt in this case as it's pipe delimited) from the local directory.  I pick the file I want to use but when I click OK i get a popup and the following error:

ZEN EXCEPTION
1
0 441
Question Nezla · Jun 5, 2018

Hi Guys,

have a file located in \\servername\Myfiles\pull.csv but for some reason my cache routine can't file, but can when using the local drive C:\servername\Myfiles\pull.csv.

FYI I can access \\servername\Myfiles\pull.csv via Win explorer with no problems. 

anyway how I can fix this?

Thanks Guys

4
0 613
Question Thembelani Mlalazi · Oct 4, 2017

I have implemented a csv record mapper to read files into the production in ensemble but it errors every time I read a file with headers on the columns as these are not recognised as the specified data types .Is there a way to ignore the headers when reading in values from a file with headers. Please note this have been built using the pre built components.

1
0 915
Question Matthew Martinez · Dec 2, 2019

Hello,

I am reading in an X12 document into my production that needs to be processed and returned as a CSV file.  I have created a record map to support the fields I want to extract with a batch class to store headers.  I have a DTL mapping the data to the appropriate fields in the record map and am sending the record map to a EnsLib.RecordMap.Operation.BatchFileOperation.

None of my components error out and in fact report that the message was processed without any errors but I am not getting an output file in my expected output folder. 

Is this an appropriate use of this operation class?

2
0 1083
Question Galena Teneva · Jul 5, 2018

Hi,
it is possible to convert a csv file to json file?

I want to stream json files and output the data as it comes in from the files. So my files are "csv" type and I want to convert these files to "json" type.


I can read csv file as follows:

ClassMethod ReadFile()
{
    set stream = ##class(%Stream.FileCharacter).%New()
    set sc = stream.LinkToFile("*.csv")
    do stream.Rewind()
    while'stream.AtEnd {
        set line=stream.ReadLine()
        write line,!
}
What should I add to convert it to "json" and read it again?

Thank you

7
1 1900
Question Thembelani Mlalazi · Oct 9, 2017

I have this code here;I am trying to read a csv file but when I run this code I get  <LIST>%open+3^%stream.Object.1 would anyone have a look and tell me where I am going wrong .Record mapper is fine but I need a custom csv Importer

ClassMethod ImportCSV()
{
   set adapter =##class(%File).%New()
  
  set status=adapter.%Open("C:\In\in.csv")
  
  if $$$ISERR(status)
  {
   do $System.Status.DisplayError(status)
  }
  
  set counter =1
  
  while 'adapter.AtEnd
  {
   set line=adapter.ReadLine()
   
   set rec= ##class(CSVRecord).%New()
   
   set rec.ID=$piece(line,",",1)
   set rec.FName=$piece(line,",",2)
   set rec.SecName=$piece(line,",",3)
   set rec.Gender=$piece(line,",",4)
   set rec.Age=$piece(line,",",5)
   
     write rec.ID,
 
             rec.FName,
13
0 4970
Question Jude Mukkadayil · Dec 11, 2019

Hi,

     I have written a procedure with the help of object scripting to export data to a csv file. There is more data than  the csv limit.

Can anyone please tell me how to get the row count of csv file using object scripting, so that I can write an if condition and write to a second csv file.

Please find the code writing to the csv given below.

while (ind '= ""){
set row = ^CacheTemp(repid,"MAIN",ind)
use filemain write row,!
; Get next row index for MAIN report
set ind = $order(^CacheTemp(repid,"MAIN",ind))
} close filemain
}

Thanks

Jude

14
0 1266
Question ED Coder · Nov 19, 2018

Hi, I have a CSV file with a list of 5000 records in the following format

Name, Acc, division

Eric, 1234, 567

John, 1235, 987

Peter, 3214, 879

I just want to copy the Acc, division to a global so eventually the global would be like the following:

^People("Customers", "Acc.division")

Can you advice on how I can perform this from the terminal? This is a one time task. I want to read all the values from the csv file and insert them into the global

Regards,

Eric

7
0 1154
Question Thembelani Mlalazi · Oct 12, 2017

I  have a business service that brings in a xml virtual document to the production and also a csv service  that brings in a csv file and have a process that transforms both to a xml output  but I have a problem with the csv as it is giving me this error when I try to trans form it ```ERROR <Ens>ErrException: <PROPERTY DOES NOT EXIST>zOnRequest+1 ^EnsLib.MsgRouter.VDocRoutingEngine.1 *DocType``` I have read here followed the suggestion but now I do not get any errors but my message is not being routed here is the rule set that I am using

5
0 614
Question Martin Browne · Apr 7, 2020

Hi,

I've setup an operation that pulls text from an MDM message and uses it to generate a csv file. I'm having issues as our vendor is sending the file with a carriage return (as shown below) to signify the next line but Healthshare is recognising this as a new segment which causes an error.

MSH|^~\&|TIE|PATHPOINT|LNWH|PAS|20200407061001||MDM^T02|PATHPOINT2020040706100154094|P|2.

2
0 472
Question Lawrence Williams · Aug 23, 2019

I am putting together a new interface to take in a CSV file and output an HL7 message.

I have used the record mapper to create the source class and I am putting together the transform, but when trying to test it I am not seeing the data populate the HL7 as intended.

Also.... if I put a <DatofBirth> in the tester, it shows up in the HL7 as I would expect..... that's what really has me scratching my head here.

4
0 1183