//; 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 }; }
/// <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 }; }
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; } }