Ejemplo n.º 1
0
 void populateData(ASTM_Record r, TreeNode n, int fromIdx=1)
 {
     for (int fi = fromIdx; fi <= r.fieldsCount(); fi++)
     {
         if (r.fieldValue(fi) != null && r.fieldValue(fi).Length > 0)
             n.Nodes.Add(r.fieldName(fi) + ":\t" + r.fieldValue(fi));
     }
     if (r.comments()!=null)
     {
         foreach (ASTM_Comment c in r.comments())
         {
             TreeNode curCommentNode = n.Nodes.Add("Comment");
             for (int fi = fromIdx; fi <= c.fieldsCount(); fi++)
             {
                 if (c.fieldValue(fi) != null && c.fieldValue(fi).Length > 0)
                     curCommentNode.Nodes.Add(c.fieldName(fi) + ":\t" + c.fieldValue(fi));
             }
         }
     }
     if (r.manufacturerInfo() != null)
     {
         foreach (ASTM_Manufacturer m in r.manufacturerInfo())
         {
             TreeNode curManNode = n.Nodes.Add("Manufacturer Info");
             for (int fi = fromIdx; fi <= m.fieldsCount(); fi++)
             {
                 if (m.fieldValue(fi) != null && m.fieldValue(fi).Length > 0)
                     curManNode.Nodes.Add(m.fieldName(fi) + ":\t" + m.fieldValue(fi));
             }
         }
     }
 }
Ejemplo n.º 2
0
        public void parse(String astmData, ref List <ASTM_Message> messages)
        {
            var          lines  = Regex.Split(astmData, "\r\n|\r|\n");
            ASTM_Message m      = null;
            ASTM_Record  curRec = null;

            foreach (var l in lines)
            {
                var entries = Regex.Split(l, "[|]");
                switch (entries.ElementAt(0))
                {
                case "H":
                    messages.Add(new ASTM_Message());
                    m      = messages.Last();
                    curRec = m;
                    curRec.parseData(l);
                    break;

                case "P":
                    if (m != null)
                    {
                        m.patientRecords.Add(new ASTM_Patient());
                        curRec = m.patientRecords.Last();
                        curRec.parseData(l);
                    }
                    else
                    {
                        //TODO Error
                    }
                    break;

                case "O":
                    if (m != null)
                    {
                        if (m.patientRecords.Count > 0 && m.patientRecords.Last() != null)
                        {
                            m.patientRecords.Last().orderRecords.Add(new ASTM_Order());
                            curRec = m.patientRecords.Last().orderRecords.Last();
                            curRec.parseData(l);
                        }
                        else
                        {
                            //TODO Error: no patient
                        }
                    }
                    else
                    {
                        //TODO Error
                    }
                    break;

                case "R":
                    if (m != null)
                    {
                        if (m.patientRecords.Count > 0 && m.patientRecords.Last() != null)
                        {
                            if (m.patientRecords.Last().orderRecords.Count > 0 && m.patientRecords.Last().orderRecords.Last() != null)
                            {
                                m.patientRecords.Last().orderRecords.Last().resultRecords.Add(new ASTM_Result());
                                curRec = m.patientRecords.Last().orderRecords.Last().resultRecords.Last();
                                curRec.parseData(l);
                            }
                        }
                        else
                        {
                            //TODO Error: no patient
                        }
                    }
                    else
                    {
                        //TODO Error
                    }
                    break;

                case "Q":
                    if (m != null)
                    {
                        m.requestRecords.Add(new ASTM_Request());
                        curRec = m.requestRecords.Last();
                        curRec.parseData(l);
                    }
                    else
                    {
                        //TODO Error
                    }
                    break;

                case "C":
                    if (curRec != null)
                    {
                        curRec.addComment(l);
                    }
                    else
                    {
                        //TODO Error
                    }
                    break;

                case "M":
                    if (curRec != null)
                    {
                        curRec.addManufacturerInfo(l);
                    }
                    else
                    {
                        //TODO Error
                    }
                    break;

                case "L":
                    if (m != null)
                    {
                        curRec = null;
                        m      = null;
                    }
                    else
                    {
                        //TODO Error
                    }
                    break;

                default:
                    //TODO Warning unknown record, store in message
                    break;
                }
            }
        }