Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: VENPCCAM

VENPCCAM.m

Go to the documentation of this file.
  1. VENPCCAM ; IHS/OIT/GIS - NEW CHECK IN MODULE ;
  1. ;;2.6;PCC+;;NOV 12, 2007
  1. ;
  1. ; ASK ABOUT CC AND MEASUREMENTS
  1. ;
  1. MSR(VIEN,DEPTIEN) ; EP-GET MEASUREMENT VALUES AND STORE THEM IN V FILES FOR USE IN THIS ENCOUNTER
  1. I '$D(^AUPNVSIT(+$G(VIEN),0)) Q
  1. N DFN,DOB,BP,HT,WT,CC,HC,TMP,PU,RS,X,MMN,DIRX,DIRA,DIRB,DIRQ,DIRL
  1. N VAL,Z,X,Y,IVAL,HCFLAG,PFLAG,CCFLAG,PULFLAG,DATA,MSR
  1. S DFN=$P($G(^AUPNVSIT(VIEN,0)),U,5) I '$D(^DPT(+DFN,0)) Q
  1. S DOB=$P(^DPT(DFN,0),U,3) I 'DOB Q
  1. S HCFLAG=0 I ((DT-DOB)\10000)<2 S HCFLAG=1 ; HEAD CIRC FLAG
  1. S PFLAG=0 I DT-DOB>90000 S PFLAG=1 ; PAIN FLAG
  1. S CCFLAG='$P($G(^VEN(7.95,+$G(DEPTIEN),4)),U) ; CHIEF COMPLAINT FLAG
  1. S PULFLAG=$P($G(^VEN(7.95,+$G(DEPTIEN),4)),U,2) ; PULMONARY DATA FLAG
  1. W !!,"Record check-in data now."
  1. W !,"'^'=Back up/edit '^^'=Stop '?'=Get help '@'=Erase an existing entry",!
  1. CC ; EP - CHIEF COMPLAINT
  1. I 'CCFLAG G HT
  1. K X,Y,Z,VAL,IVAL
  1. S DIRX="FO^1:240",DIRA="Chief complaint(s)",DIRB=$E($$CCTXT(VIEN),1,240)
  1. S DIRQ="Example: 'URI, Fever'"
  1. I $D(MSR(0)) S DIRB=MSR(0)
  1. S VAL=$$DIR(DIRX,DIRA,DIRB,DIRQ) K DIRX,DIRA,DIRB,DIRQ
  1. I VAL="" K MSR(0) G HT
  1. I VAL=U W " ??" G CC
  1. I VAL?2."^" G MFILE
  1. S MSR(0)=VAL
  1. HT ; EP - HEIGHT IN IN OR CM
  1. S DIRX="FO^1:10",DIRA="Height",DIRB=""
  1. S DIRQ="EXAMPLES: 5-11, 5 11, 67"""", 67 INCHES, 135 CM, 99C, 60I"
  1. I $D(MSR("HT")) S DIRB=MSR("HT")
  1. S (IVAL,VAL)=$$DIR(DIRX,DIRA,DIRB,DIRQ) K DIRX,DIRA,DIRB,DIRQ
  1. I VAL="" K MSR("HT") G WT
  1. I VAL=U,'CCFLAG W " ??" G HT
  1. I VAL=U G CC
  1. I VAL?2."^" G MFILE
  1. I VAL'>0 W " ??" G HT
  1. I VAL?1N1P1.2N,VAL'=+VAL S IVAL=(+VAL*12)+(+$E(VAL,3,99))
  1. E I VAL?1.3N1.E S Z="" D I Z="" W " <- Please specifiy inches or cm" G HT
  1. . S Z=$P(VAL,+VAL,2)
  1. . I Z'["""",Z'["c",Z'["C",Z'["i",Z'["I" S Z="" Q
  1. . I Z'["C",Z'["c" S Z="IN",IVAL=+VAL Q
  1. . S Z="CM",IVAL=(+VAL)/2.54
  1. . Q
  1. I IVAL["." S IVAL=(IVAL\1)_"."_(+$E($P(IVAL,".",2)))
  1. S X=IVAL D HT^AUPNVMSR
  1. I '$D(X) W " <- Invalid height. Try again..." G HT
  1. S MSR("HT")=VAL,MSR("HT",0)=IVAL
  1. WT ; EP - WEIGHT IN LBS OR KGS
  1. K X,Y,Z,VAL,IVAL
  1. S DIRX="FO^1:10",DIRA="Weight",DIRB=""
  1. S DIRQ="Lbs. assumed unless metric weight specified. EXAMPLES: 75 LBS, 2144 GM, 71 KG, 65.2K"
  1. I $D(MSR("WT")) S DIRB=MSR("WT")
  1. S (VAL,IVAL)=$$DIR(DIRX,DIRA,DIRB,DIRQ) K DIRX,DIRA,DIRB,DIRQ
  1. I VAL="" K MSR("WT") G HC
  1. I VAL=U G HT
  1. I VAL?2."^" G MFILE
  1. I +VAL<1 W " ??" G WT
  1. I VAL'=+VAL D I Z="" W " <- Unknown units or invalid entry" G WT
  1. . S Z=$P(VAL,+VAL,2)
  1. . I Z["L"!(Z["l") S IVAL=+VAL,Z="LBS" Q
  1. . I Z["K"!(Z["k") S IVAL=VAL/.45959237,Z="KG" Q
  1. . I Z["G"!(Z["g") S IVAL=VAL/459.59237,Z="GM" Q
  1. . S Z=""
  1. . Q
  1. I IVAL["." S IVAL=(IVAL\1)_"."_(+$E($P(IVAL,".",2)))
  1. S X=IVAL D WT^AUPNVMSR
  1. I '$D(X) W " <- Invalid weight. Try again..." G WT
  1. S MSR("WT")=VAL,MSR("WT",0)=IVAL
  1. HC ; EP - HEAD CIRC IN INCHES AND CM
  1. I 'HCFLAG G BP
  1. K X,Y,Z,VAL,IVAL
  1. S DIRX="FO^1:10",DIRA="Head Circumference",DIRB=""
  1. S DIRQ="You must specify units. EXAMPLES: 17"""", 17 INCHES, 48 CM, 45C, 16I"
  1. I $D(MSR("HC")) S DIRB=MSR("HC")
  1. S (VAL,IVAL)=$$DIR(DIRX,DIRA,DIRB,DIRQ) K DIRX,DIRA,DIRB,DIRQ
  1. I VAL="" K MSR("HC") G BP
  1. I VAL=U G WT
  1. I VAL?2."^" G MFILE
  1. I VAL'>0 W " ??" G HC
  1. S Z=$P(VAL,+VAL,2)
  1. I Z'["""",Z'["c",Z'["C",Z'["i",Z'["I" W " <- Please specifiy inches or cm" G HC
  1. S IVAL=+VAL
  1. I Z["C"!(Z["c") S IVAL=IVAL/2.54
  1. I IVAL["." S IVAL=(IVAL\1)_"."_(+$E($P(IVAL,".",2)))
  1. S X=IVAL D HC^AUPNVMSR
  1. I '$D(X) W " <- Invalid HEAD CIRCUMFERENCE. Try again..." G HC
  1. S MSR("HC")=VAL,MSR("HC",0)=IVAL
  1. BP ; EP - BLOOD PRESSURE
  1. K X,Y,Z,VAL,IVAL
  1. S DIRX="FO^1:7",DIRA="B/P",DIRB=""
  1. S DIRQ="Example: 120/88"
  1. I $D(MSR("BP")) S DIRB=MSR("BP")
  1. S VAL=$$DIR(DIRX,DIRA,DIRB,DIRQ) K DIRX,DIRA,DIRB,DIRQ
  1. I VAL="" K MSR("BP") G TMP
  1. I VAL=U,'HCFLAG G WT
  1. I VAL=U G HC
  1. I VAL?2."^" G MFILE
  1. S X=VAL D BP^AUPNVMSR
  1. I '$D(X) W " <- Invalid B/P. Try again..." G BP
  1. S MSR("BP")=VAL,MSR("BP",0)=VAL
  1. TMP ; EP - TEMPERATURE IN F OR C
  1. K X,Y,Z,VAL,IVAL
  1. S DIRX="FO^1:8",DIRA="Temperature",DIRB=""
  1. S DIRQ="Fahrenheit assumed unless metric temp specified. EXAMPLES: 98.6, 102.0 F, 39.5C"
  1. I $D(MSR("TMP")) S DIRB=MSR("TMP")
  1. S (IVAL,VAL)=$$DIR(DIRX,DIRA,DIRB,DIRQ) K DIRX,DIRA,DIRB,DIRQ
  1. I VAL="" K MSR("TMP") G PU
  1. I VAL=U G BP
  1. I VAL?2."^" G MFILE
  1. I +VAL<30 W " ??" G TMP
  1. I VAL'=+VAL D I Z="" W " <- Unknown units or invalid entry" G TMP
  1. . S Z=$P(VAL,+VAL,2)
  1. . I Z["F"!(Z["f") S IVAL=+VAL,Z="F" Q
  1. . I Z["C"!(Z["c") S IVAL=(+VAL)*9/5+32,Z="C" Q
  1. . S Z=""
  1. I IVAL["." S IVAL=(IVAL\1)_"."_(+$E($P(IVAL,".",2)))
  1. S X=IVAL D TMP^AUPNVMSR
  1. I '$D(X) W " <- Invalid temperature. Try again..." G TMP
  1. S MSR("TMP")=VAL,MSR("TMP",0)=IVAL
  1. PU ; EP - PULSE
  1. K X,Y,Z,VAL,IVAL
  1. S DIRX="FO^1:3",DIRA="Pulse",DIRB=""
  1. S DIRQ="Example: 64"
  1. I $D(MSR("PU")) S DIRB=MSR("PU")
  1. S VAL=$$DIR(DIRX,DIRA,DIRB,DIRQ) K DIRX,DIRA,DIRB,DIRQ
  1. I VAL="" K MSR("PU") G RS
  1. I VAL=U G TMP
  1. I VAL?2."^" G MFILE
  1. S X=VAL D PU^AUPNVMSR
  1. I '$D(X) W " <- Invalid pulse. Try again..." G PU
  1. S MSR("PU")=VAL,MSR("PU",0)=VAL
  1. RS ; EP - RESPIRATIONS
  1. K X,Y,Z,VAL,IVAL
  1. S DIRX="FO^1:3",DIRA="Respirations",DIRB=""
  1. S DIRQ="Example: 18"
  1. I $D(MSR("RS")) S DIRB=MSR("RS")
  1. S VAL=$$DIR(DIRX,DIRA,DIRB,DIRQ) K DIRX,DIRA,DIRB,DIRQ
  1. I VAL="" K MSR("RS") G PA
  1. I VAL=U G PU
  1. I VAL?2."^" G MFILE
  1. S X=VAL D RS^AUPNVMSR
  1. I '$D(X) W " <- Invalid respiration rate. Try again..." G RS
  1. S MSR("RS")=VAL,MSR("RS",0)=VAL
  1. PA ; EP - PAIN
  1. I 'PFLAG G O2
  1. K X,Y,Z,VAL,IVAL
  1. S DIRX="FO^1:2",DIRA="Pain",DIRB=""
  1. S DIRQ="Select a PAIN SCALE number between 0 and 10"
  1. I $D(MSR("PA")) S DIRB=MSR("PA")
  1. S VAL=$$DIR(DIRX,DIRA,DIRB,DIRQ) K DIRX,DIRA,DIRB,DIRQ
  1. I VAL="" K MSR("PA") G O2
  1. I VAL=U G RS
  1. I VAL?2."^" G MFILE
  1. S X=VAL D PA^AUPNVMSR
  1. I '$D(X) W " <- Invalid PAIN SCALE value. Try again..." G PA
  1. S MSR("PA")=VAL,MSR("PA",0)=VAL
  1. O2 ; EP - O2 SATURATION
  1. I 'PULFLAG G MFILE
  1. K X,Y,Z,VAL,IVAL
  1. S DIRX="FO^1:3",DIRA="O2 Saturation",DIRB=""
  1. S DIRQ="Select a value between 1 and 100"
  1. I $D(MSR("O2")) S DIRB=MSR("O2")
  1. S VAL=$$DIR(DIRX,DIRA,DIRB,DIRQ) K DIRX,DIRA,DIRB,DIRQ
  1. I VAL="" K MSR("O2") G PF
  1. I VAL=U,'PFLAG G RS
  1. I VAL=U G PA
  1. I VAL?2."^" G MFILE
  1. I (+VAL)'>0 W " ??" G O2
  1. S X=+VAL D O2^AUPNVMSR
  1. I '$D(X) W " <- Invalid O2 Sat value. Try again..." G O2
  1. S MSR("O2")=VAL,MSR("O2",0)=VAL
  1. PF ; EP - PEAK FLOW
  1. K X,Y,Z,VAL,IVAL
  1. S DIRX="FO^1:3",DIRA="Peak flow",DIRB=""
  1. S DIRQ="Select a value between 100 and 500"
  1. I $D(MSR("PF")) S DIRB=MSR("PF")
  1. S VAL=$$DIR(DIRX,DIRA,DIRB,DIRQ) K DIRX,DIRA,DIRB,DIRQ
  1. I VAL="" K MSR("PF") G MFILE
  1. I VAL=U G O2
  1. I VAL?2."^" G MFILE
  1. I +VAL'>0 W " ??" G PF
  1. S X=VAL D PF^AUPNVMSR
  1. I '$D(X) W " <- Invalid Peak flow value. Try again..." G PF
  1. S MSR("PF")=VAL,MSR("PF",0)=VAL
  1. MFILE ; EP - FILE RESULTS
  1. I $O(MSR(""))="" Q ; NOTHING HAS BEEN ENTERED
  1. S DIRX="SO^S:SUBMIT;E:EDIT;C:CANCEL"
  1. S DIRB="SUBMIT",DIRA="Your choice",DIRQ=""
  1. S VAL=$$DIR(DIRX,DIRA,DIRB,DIRQ) K DIRX,DIRA,DIRB,DIRQ
  1. I $E(VAL)?1A S VAL=$$UP^XLFSTR($E(VAL))
  1. I VAL="E" G CC ; EDIT THE RESULTS FROM THE TOP
  1. I VAL="C" W !,"Request cancelled! No data submitted..." S NCCANCEL=1 Q
  1. I VAL'="S" Q
  1. FILE ; EP - PROCESS THE CHECKIN DATA ; PATCHED BY GIS/OIT 2/1/06 ; PCC + VERSION 2.5, PATCH 4
  1. I 'VIEN Q
  1. N DIC,DIE,DA,DR,X,Y
  1. I $L($G(MSR(0))) D NFILE(VIEN,MSR(0)) ; FILE THE CHIEF COMPLAINT
  1. S MMN="A",DLAYGO=9000010.01,DIC(0)="L",DIC="^AUPNVMSR(",DIE=DIC
  1. S DR=".02////"_DFN_";.03////"_VIEN_";.04////^ S X=VAL"
  1. F S MMN=$O(MSR(MMN)) Q:MMN="" D ; LOOP THROUGH RESULTS AND FILE THEM IN V MEASUREMENTS
  1. . S VAL=$G(MSR(MMN,0)) I '$L(VAL) Q
  1. . S X=""""_MMN_""""
  1. . D ^DIC I Y=-1 Q
  1. . S DA=+Y
  1. . L +^AUPNVMSR(DA):0 I $T D ^DIE L -^AUPNVMSR(DA)
  1. . Q
  1. D ^XBFMK
  1. Q
  1. ;
  1. DIR(DIRX,DIRA,DIRB,DIRQ) ; EP-QUERY GENERATOR
  1. N X,Y,VAL,DIR
  1. I '$L($G(DIRX)) Q ""
  1. S DIR(0)=DIRX,DIR("A")=DIRA,DIR("?")=DIRQ
  1. I $L($G(DIRB)) S DIR("B")=DIRB
  1. D ^DIR
  1. S VAL=X
  1. I VAL="@" S VAL="" W " <- Deleted"
  1. D ^XBFMK K DIROUT
  1. Q VAL
  1. ;
  1. CCTXT(VIEN) ; EP - RETURN THE CC TEXT IN A SINGLE STRING
  1. ; PATCHED BY GIS/OIT 7/21/06 ; PCC + VERSION 2.5, PATCH 5
  1. N NIEN,TXT,TTIEN,DFN,A,B,DA,LINE,LAST
  1. S TTIEN=$O(^AUTTNTYP("B","CHIEF COMPLAINT",0)) I 'TTIEN Q ""
  1. S DA=0,NIEN=0
  1. F S DA=$O(^AUPNVNT("AD",+$G(VIEN),DA)) Q:'DA I +$G(^AUPNVNT(DA,0))=TTIEN S NIEN=DA
  1. I 'NIEN Q ""
  1. S TXT="",LINE=0,LAST=""
  1. F S LINE=$O(^AUPNVNT(NIEN,11,LINE)) Q:'LINE D
  1. . S (A,B)=$G(^AUPNVNT(NIEN,11,LINE,0))
  1. . I '$L(A) Q
  1. . I $L(LAST),$E(A,$L(A))'=" ",$E(LAST)'=" " S A=" "_A
  1. . S TXT=TXT_A
  1. . S LAST=B
  1. . Q
  1. Q TXT
  1. ;
  1. NFILE(VIEN,TXT) ; EP - POPULTES THE V NARRATIVE TEXT FILE WITH A CC
  1. ; PATCHED BY GIS/OIT 7/21/06 ; PCC + VERSION 2.5, PATCH 5
  1. N X,Y,Z,%,ARR,CNT,DA,DR,DIE,DIC,DLAYGO,TTIEN,CREF,LINE,A,B,NIEN,DFN
  1. I $L($G(TXT)),$D(^AUPNVSIT($G(VIEN),0))
  1. E Q
  1. S DFN=$P($G(^AUPNVSIT(VIEN,0)),U,5) I 'DFN Q
  1. S TTIEN=$O(^AUTTNTYP("B","CHIEF COMPLAINT",0)) I 'TTIEN Q
  1. S DA=0,NIEN=0
  1. F S DA=$O(^AUPNVNT("AD",+$G(VIEN),DA)) Q:'DA I +$G(^AUPNVNT(DA,0))=TTIEN S NIEN=DA
  1. I 'NIEN D I 'NIEN Q
  1. . S (DIC,DIE,DLAYGO)=9000010.34,DIC(0)="L",X="""`"_TTIEN_""""
  1. . D ^DIC I Y=-1 Q
  1. . S (NIEN,DA)=+Y
  1. . S DR=".02////"_DFN_";.03////"_VIEN
  1. . L +^AUPNVNT(DA):1 I D ^DIE L -^AUPNVNT(DA)
  1. . Q
  1. S CREF=$NA(^AUPNVNT(NIEN,11))
  1. K @CREF ; CLEAN OUT THE EXISITING ENTRY
  1. S (X,Y)=TXT,CNT=0
  1. F D I '$L(X) Q ; MAKE THE LINE ARRAY
  1. . S A=$E(X,1,75)
  1. . S %=$L(A," ")
  1. . I %=1!($L(A)<75) S CNT=CNT+1,LINE(CNT)=A,X="" Q
  1. . S B=$P(A," ",1,(%-1)),X=$P(X," ",%,999)
  1. . S CNT=CNT+1,LINE(CNT)=B
  1. . Q
  1. I 'CNT Q
  1. S @CREF@(0)="^^"_CNT_U_CNT_U_DT_U ; FILE THE DATA
  1. F X=1:1:CNT S @CREF@(X,0)=LINE(X)
  1. Q
  1. ;