//;    DFN = PATIENT IEN
//;    IEN = IF NOT NULL THEN EDIT
//;  DATES = START^END^EDD
//;    TYP = C(urrent),H(istorical)
//;    FOF = IEN, U(nspecified), S(pouse)
//;    OBP = OB (VARIABLE POINTER)
//;          NVA.IEN (NON-VA) (19641.1)
//;           VA.IEN (VA) (200)
//;    FAP = FACILITY (VARIABLE POINTER)
//;          NVA.IEN (NON-VA) (19641.1)
//;           VA.IEN (VA) (4)
//;    BAB = NUMBER
//;            IF 1,2,3 THEN THREE BABIES WILL BE ADDED
//;            IF 1,2@,3 THEN BABY 2 WILL BE DELETED
//;   POST = ADDITIONAL DETAILS (CARET DELIMITED STRING)
//;            1: GESTATIONAL AGE AT DELIVERY (NUMBER 0 - 99)
//;            2: LENGTH OF LABOR (NUMBER (IN HOURS))
//;            3: TYPE OF DELIVERY (TEXT 1-20 CHARACTERS)
//;            4: EPIDERAL/SPINAL (0 (NO), 1 (YES))
//;            5: PRETERM LABOR (0 (NO), 1 (YES))
//;    COM = COMMENTS (ARRAY OF TEXT)


//Input: IEN,DFN,DATES,TYP,FOF,OBP,FAP,BAB,POST,COM,HRD
//; CREATE, UPDATE, or DELETE a PREGNANCY HISTORY record
//;
//;    DFN = PATIENT IEN
//;    IEN = If not null then edit unless ###@ then delete
//;  DATES = EDC^END^EDD
//;    TYP = C(urrent),H(istorical)
//;    FOF = IEN, U(nspecified), S(pouse)
//;    OBP = OB (VARIABLE POINTER)
//;          NVA.IEN (NON-VA) (19641.1)
//;           VA.IEN (VA) (200)
//;    FAP = FACILITY (VARIABLE POINTER)
//;          NVA.IEN (NON-VA) (19641.1)
//;           VA.IEN (VA) (4)
//;    BAB = NUMBER
//;            IF 1,2,3 THEN THREE BABIES WILL BE ADDED
//;            IF 1,2@,3 THEN BABY 2 WILL BE DELETED
//;            *** + is the next number.
//;   POST = ADDITIONAL DETAILS (CARET DELIMITED STRING)
//;            1: GESTATIONAL AGE AT DELIVERY (NUMBER 0 - 99)
//;            2: LENGTH OF LABOR (NUMBER (IN HOURS))
//;            3: TYPE OF DELIVERY (TEXT 1-20 CHARACTERS)
//;            4: EPIDURAL/SPINAL (0:NO,1:YES)
//;            5: PRETERM LABOR (0:NO,1:YES)
//;            6: COMPLICATION (E:ECTOPICS,AI:AB. INDUCED,AS:AB. SPONTANEOUS)
//;            7: HIGH RISK FLAG (0:FALSE,1:TRUE)
//;    COM = COMMENTS (ARRAY of Text)
//;    HRD = HIGH RISK DESCRIPTION (ARRAY of Text)

// New Version 2/17/16..
//        PREG(RET,IEN,DFN,DATES,TYP,FOF,OBP,FAP,BAB,POST,COM,HRD,AB) ; RPC: DSIO SAVE PREG DETAILS
//;
//; CREATE, UPDATE, or DELETE a PREGNANCY HISTORY record
//;
//;    IEN = If not null then edit unless ###@ then delete
//;    DFN = PATIENT IEN
//;  DATES = EDC^END^EDD
//;    TYP = C(urrent),H(istorical)
//;    FOF = IEN, U(nspecified), S(pouse)
//;    OBP = OB (VARIABLE POINTER)
//;          NVA.IEN (NON-VA) (19641.1)
//;           VA.IEN (VA) (200)
//;    FAP = FACILITY (VARIABLE POINTER)
//;          NVA.IEN (NON-VA) (19641.1)
//;           VA.IEN (VA) (4)
//;    BAB = NUMBER
//;            IF 1,2,3 THEN THREE BABIES WILL BE ADDED
//;            IF 1,2@,3 THEN BABY 2 WILL BE DELETED
//;            *** + is the next number.
//;   POST = ADDITIONAL DETAILS (CARET DELIMITED STRING)
//;            1: GESTATIONAL AGE (#W#D)
//;            2: LENGTH OF LABOR (NUMBER (IN HOURS))
//;            3: TYPE OF DELIVERY (TEXT 1-20 CHARACTERS)
//;            4: ANESTHESIA
//;            5: PRETERM DELIVERY (0:NO,1:YES)
//;            6: OUTCOME (E:ECTOPICS,AI:TERMINATION,AS:SPONTANEOUS ABORTION,
//;                        S:STILLBIRTH,F:FULL TERM,U:UNKNOWN,P:PRETERM)
//;            7: HIGH RISK FLAG (0:FALSE,1:TRUE)
//;    COM = COMMENTS (ARRAY of Text)
//;    HRD = HIGH RISK DESCRIPTION (ARRAY of Text)


        /// <summary>
        /// Add command arguments to the RPC call.
        /// Call prior to calling "Execute"
        /// </summary>
        /// <param name="pregnancy"></param>
        public void AddCommandArguments(DsioPregnancy pregnancy, bool addBaby)
        {
            string dates = string.Format("{0}^{1}^{2}", pregnancy.StartDate, pregnancy.EndDate, pregnancy.EDD);

            // *** Create baby parameter ***
            string babyParam = (addBaby) ? "+" : "";

            string ob  = (string.IsNullOrWhiteSpace(pregnancy.ObstetricianIen)) ? "" : string.Format("NVA.{0}", pregnancy.ObstetricianIen);
            string fac = (string.IsNullOrWhiteSpace(pregnancy.LDFacilityIen)) ? "" : string.Format("NVA.{0}", pregnancy.LDFacilityIen);

            string post = string.Format("{0}^{1}^{2}^{3}^{4}^{5}^{6}",
                                        pregnancy.GestationalAgeAtDelivery,
                                        pregnancy.LengthOfLabor,
                                        pregnancy.TypeOfDelivery,
                                        pregnancy.Anesthesia,
                                        pregnancy.PretermDelivery,
                                        pregnancy.Outcome,
                                        pregnancy.HighRisk);

            string[] comments = Util.MakeVistAStringArray(pregnancy.Comment);

            string[] highRiskDetails = Util.MakeVistAStringArray(pregnancy.HighRiskDetails);

            this.CommandArgs = new object[] {
                pregnancy.Ien,
                pregnancy.PatientDfn,
                dates,
                pregnancy.RecordType,
                pregnancy.FatherOfFetusIen,
                ob,
                fac,
                babyParam,
                post,
                comments,
                highRiskDetails
            };
        }
Exemple #2
0
        /// <summary>
        /// Add command arguments to the RPC call.
        /// Call prior to calling "Execute"
        /// </summary>
        /// <param name="pregnancy"></param>
        public void AddCommandArguments(DsioPregnancy pregnancy, string patientDfn, bool isPatientPregnant)
        {
            //Example of RPC call in CPRS
            //(1) = PATIENT = 3
            //(2) = ABLE TO CONCEIVE = Yes
            //(3) = PREGNANCY STATUS = Yes
            //(4) = LAST MENSTRUAL PERIOD DATE = 3171101
            //(5) = EXPECTED DUE DATE = 3180808

            var patient             = "PATIENT=";
            var ableToConceive      = "ABLE TO CONCEIVE=";
            var pregnant            = "PREGNANCY STATUS=";
            var ableToConceiveValue = "Yes";
            var pregnancyValue      = isPatientPregnant ? "Yes" : "No";

            List <string> termsList = new List <string>();

            patient        = patient + patientDfn;
            ableToConceive = ableToConceive + ableToConceiveValue;
            pregnant       = pregnant + pregnancyValue;
            termsList.Add(patient);
            termsList.Add(ableToConceive);
            termsList.Add(pregnant);
            if (isPatientPregnant)
            {
                string LMPvalue = pregnancy.Lmp;
                var    LMP      = "LAST MENSTRUAL PERIOD DATE=" + VistaDates.CenturyDateFormat(LMPvalue);
                termsList.Add(LMP);

                string EDDvalue = pregnancy.EDD;
                var    EDD      = "EXPECTED DUE DATE=" + VistaDates.CenturyDateFormat(EDDvalue);
                termsList.Add(EDD);
            }

            string[] arguments = termsList.ToArray();
            this.CommandArgs = new object[] { arguments };
        }
Exemple #3
0
        protected override void ProcessLine(string line)
        {
            // *** Create a pregnancy detail object ***

            DsioPregnancy preg = new DsioPregnancy();

            // *** Commented out pieces not needed at this time ***

            // TODO: Implement additional data...

            //;  L^IEN^DATE RECORDED^EDC^DFN|PATIENT^STATUS^FOF|(IEN OR IDENTIFIER)^
            //;    EDD^PREGNANCY END^OB IEN|OB^FACILITY IEN|FACILITY^
            //;    UPDATED BY IEN|UPDATED BY^GESTATIONAL AGE AT DELIVERY^LENGTH OF DELIVERY^
            //;    EPIDERAL/SPINAL^PRETERM LABOR^BIRTH TYPE^IEN;BABY |IEN;BABY
            //;  C^IEN^COMMENT

            // L^26^05/22/2015@11:23:57^^126|Azdhshts,Jxaalshula^CURRENT^Unspecified|u^^^|^|^10000000052|Cprsnurse,One^^^^^^NONE^

            //10/12/2015
            //Input: IEN,DFN,SORT

            //; If IEN = "C" get only the CURRENT pregnancy
            //;
            //; RETURN:
            //;  L^IEN^DATE RECORDED^EDC^DFN|PATIENT^STATUS^FOF|(IEN OR IDENTIFIER)^
            //;    EDD^PREGNANCY END^OB IEN|OB^FACILITY IEN|FACILITY^
            //;    UPDATED BY IEN|UPDATED BY^GESTATIONAL AGE AT DELIVERY^LENGTH OF DELIVERY^
            //;    TYPE OF DELIVERY^EPIDERAL/SPINAL^PRETERM LABOR^BIRTH TYPE^
            //;    IEN;BABY#|IEN;BABY#^COMPLICATION(E,AI,AS)^HIGH RISK FLAG(0,1)
            //;  C^IEN^COMMENT
            //;  H^IEN^COMMENT

            // L^111^10/12/2015@10:49:29^^711|Cprspatient,Eight F^HISTORICAL^Unspecified|u^^05/05/2010^|^|^10000000052|Cprsnurse,One^^^^^^NONE^

            //L^114^10/14/2015@06:07:53^^126|Azdhshts,Jxaalshula^HISTORICAL^Unspecified|u^^^|^|^10000000052|Cprsnurse,One^^^^^^NONE^^^1
            //C^114^

            //1 2  3                    5               6          7              9              12                            13    15      18     21
            //L^18^02/17/2016@10:46:57^^531|Jxyht,Aaaaa^HISTORICAL^Unspecified|u^^02/17/2015^|^|^10000000032|Cprsphysician,One^0W0D^^OTHER^^^NONE^^^0

            string piece1 = Util.Piece(line, Caret, 1);
            string ien    = "";

            switch (piece1)
            {
            case "L":
                preg.Ien     = Util.Piece(line, Caret, 2);
                preg.Created = Util.Piece(line, Caret, 3);

                preg.StartDate = Util.Piece(line, Caret, 4);

                string pat = Util.Piece(line, Caret, 5);
                preg.PatientDfn = Util.Piece(pat, "|", 1);

                preg.RecordType = Util.Piece(line, Caret, 6);

                string fof = Util.Piece(line, Caret, 7);
                preg.FatherOfFetus    = Util.Piece(fof, "|", 1);
                preg.FatherOfFetusIen = Util.Piece(fof, "|", 2);

                preg.EDD     = Util.Piece(line, Caret, 8);
                preg.EndDate = Util.Piece(line, Caret, 9);

                string ob = Util.Piece(line, Caret, 10);
                preg.Obstetrician    = Util.Piece(ob, "|", 2);
                preg.ObstetricianIen = Util.Piece(ob, "|", 1);

                string fac = Util.Piece(line, Caret, 11);
                preg.LDFacility    = Util.Piece(fac, "|", 2);
                preg.LDFacilityIen = Util.Piece(fac, "|", 1);

                preg.GestationalAgeAtDelivery = Util.Piece(line, Caret, 13);
                preg.LengthOfLabor            = Util.Piece(line, Caret, 14);
                preg.TypeOfDelivery           = Util.Piece(line, Caret, 15);
                preg.Anesthesia      = Util.Piece(line, Caret, 16);
                preg.PretermDelivery = Util.Piece(line, Caret, 17);

                string babies = Util.Piece(line, Caret, 19);
                if (!string.IsNullOrWhiteSpace(babies))
                {
                    if (!babies.Equals("NONE", StringComparison.CurrentCultureIgnoreCase))
                    {
                        string[] babyArray = babies.Split("|".ToCharArray());
                        if (babyArray != null)
                        {
                            foreach (string baby in babyArray)
                            {
                                DsioBaby tempBaby = new DsioBaby();
                                tempBaby.Ien    = Util.Piece(baby, ";", 1);
                                tempBaby.Number = Util.Piece(baby, ";", 2);

                                if (!string.IsNullOrWhiteSpace(tempBaby.Ien) && !string.IsNullOrWhiteSpace(tempBaby.Number))
                                {
                                    preg.Babies.Add(tempBaby);
                                }
                            }
                        }
                    }
                }

                preg.Outcome = Util.Piece(line, Caret, 20);

                //preg.User = Util.Piece(line, Caret,14);
                //preg.UserIen = Util.Piece(line, Caret, 15);

                preg.HighRisk = Util.Piece(line, Caret, 21);

                if (this.pregList == null)
                {
                    this.pregList = new Dictionary <string, DsioPregnancy>();
                }

                this.pregList.Add(preg.Ien, preg);
                break;

            case "C":
                ien = Util.Piece(line, Caret, 2);
                string comment = Util.Piece(line, Caret, 3);

                if (!string.IsNullOrWhiteSpace(comment))
                {
                    if (this.pregList.ContainsKey(ien))
                    {
                        this.pregList[ien].Comment += comment;
                    }
                }

                break;

            case "H":
                ien = Util.Piece(line, Caret, 2);
                string highRiskDetails = Util.Piece(line, Caret, 3);

                if (!string.IsNullOrWhiteSpace(highRiskDetails))
                {
                    if (this.pregList.ContainsKey(ien))
                    {
                        this.pregList[ien].HighRiskDetails += highRiskDetails;
                    }
                }

                break;
            }
        }