[613] | 1 | GMVDCVAL ;HOIFO/DAD,FT-VITALS COMPONENT: VALIDATE DATA ;9/29/00 09:18
|
---|
| 2 | ;;5.0;GEN. MED. REC. - VITALS;;Oct 31, 2002
|
---|
| 3 | ;
|
---|
| 4 | ; This routine uses the following IAs:
|
---|
| 5 | ; #10035 - FILE 2 references (supported)
|
---|
| 6 | ; #10040 - FILE 44 references (supported)
|
---|
| 7 | ; #10060 - FILE 200 fields (supported)
|
---|
| 8 | ; #10104 - ^XLFSTR calls (supported)
|
---|
| 9 | ;
|
---|
| 10 | EN1(RESULT,GMVDATA) ;
|
---|
| 11 | ; *** Validates vitals data ***
|
---|
| 12 | N GMV,GMVD0,GMVID0,GMVIFIND,GMVIHOLD,GMVILAST,GMVINUM,GMVIXFRM
|
---|
| 13 | N GMVMSG,GMVOK,GMVQARRY,GMVQD0,GMVQFIND,GMVQHOLD,GMVQNUM,GMVRD0
|
---|
| 14 | N GMVRET,GMVRFIND,GMVRHOLD,GMVRNUM,GMVSYSBP,GMVVABBR,GMVVD0
|
---|
| 15 | N GMVVFIND,GMVVHOLD,GMVVLAST,GMVVMEAS,GMVVNUM
|
---|
| 16 | D EXIT
|
---|
| 17 | F GMV=1:1 S GMVSYSBP=$P($T(BPSYSQ+GMV),";;",2) Q:GMVSYSBP="" D
|
---|
| 18 | . S GMVD0=0
|
---|
| 19 | . F S GMVD0=$O(^GMRD(120.52,"B",GMVSYSBP,GMVD0)) Q:GMVD0'>0 D
|
---|
| 20 | .. I GMVSYSBP=$P($G(^GMRD(120.52,GMVD0,0)),U) S GMVSYSBP(GMVD0)=""
|
---|
| 21 | .. Q
|
---|
| 22 | . Q
|
---|
| 23 | I $O(@GMVDATA@(""))]"" D
|
---|
| 24 | . ; *** Vital measurement data validation ***
|
---|
| 25 | . I ($O(@GMVDATA@("V",0))>0)!($O(@GMVDATA@("Q",0))>0) D VITMEA
|
---|
| 26 | . ; *** Entered in Error data validation ***
|
---|
| 27 | . I ($O(@GMVDATA@("I",0))>0)!($O(@GMVDATA@("R",0))>0) D ENTERR
|
---|
| 28 | . Q
|
---|
| 29 | E D
|
---|
| 30 | . D MSG("ERROR: No data to validate/save")
|
---|
| 31 | . Q
|
---|
| 32 | I $G(RESULT(0))="OK" D MSG("OK: Data validated")
|
---|
| 33 | ;
|
---|
| 34 | EXIT ; *** Clean-up ***
|
---|
| 35 | K ^TMP($J,"GMVXREF")
|
---|
| 36 | Q
|
---|
| 37 | ;
|
---|
| 38 | VITMEA ; *** Validate vital measurement data ***
|
---|
| 39 | I $$FIND1^DIC(2,"","","`"_GMVDFN)'=GMVDFN D
|
---|
| 40 | . D MSG("ERROR: Missing or invalid Patient parameter")
|
---|
| 41 | . Q
|
---|
| 42 | K GMVRET D DT^DILF("RSTX",GMVDTDUN,.GMVRET,"-NOW")
|
---|
| 43 | I $G(GMVRET,-1)<0 D
|
---|
| 44 | . D MSG("ERROR: Missing or invalid Date/Time Vitals Taken parameter")
|
---|
| 45 | . Q
|
---|
| 46 | I $$FIND1^DIC(44,"","","`"_GMVHOSPL)'=GMVHOSPL D
|
---|
| 47 | . D MSG("ERROR: Missing or invalid Hospital Location parameter")
|
---|
| 48 | . Q
|
---|
| 49 | K GMVRET D DT^DILF("RSTX",GMVDTENT,.GMVRET,"-NOW")
|
---|
| 50 | I $G(GMVRET,-1)<0 D
|
---|
| 51 | . D MSG("ERROR: Missing or invalid Date/Time Vitals Entered parameter")
|
---|
| 52 | . Q
|
---|
| 53 | I $$FIND1^DIC(200,"","","`"_GMVENTBY)'=GMVENTBY D
|
---|
| 54 | . D MSG("ERROR: Missing or invalid Entered By parameter")
|
---|
| 55 | . Q
|
---|
| 56 | I "^C^M^"'[(U_$G(GMVMSYS)_U) D
|
---|
| 57 | . D MSG("ERROR: Missing or invalid Measurement System")
|
---|
| 58 | . Q
|
---|
| 59 | S (GMVVNUM,GMVVLAST,GMVVFIND)=0
|
---|
| 60 | F S GMVVNUM=$O(@GMVDATA@("V",GMVVNUM)) Q:GMVVNUM'>0 D
|
---|
| 61 | . S GMVVLAST=GMVVNUM
|
---|
| 62 | . S GMVSYSBP=0,GMVQARRY=U
|
---|
| 63 | . S (GMV,GMVVHOLD)=$G(@GMVDATA@("V",GMVVNUM))
|
---|
| 64 | . S GMVVD0=$$VITIEN^GMVDCUTL($P(GMV,U))
|
---|
| 65 | . S (GMVVMEAS,GMVVMEAS(1))=$P(GMV,U,2)
|
---|
| 66 | . I GMVVD0'>0 D
|
---|
| 67 | .. D MSG("ERROR: Missing or invalid Vital Type (V^"_GMVVNUM_"="_GMVVHOLD_")")
|
---|
| 68 | .. Q
|
---|
| 69 | . E D
|
---|
| 70 | .. S GMVVFIND=1
|
---|
| 71 | .. S GMVVABBR=$P($G(^GMRD(120.51,+GMVVD0,0)),U,2)
|
---|
| 72 | .. S $P(@GMVDATA@("V",GMVVNUM),U,1)=GMVVD0
|
---|
| 73 | .. D BP^GMVDCVAM,PO2^GMVDCVAM
|
---|
| 74 | .. I $$OMIT^GMVDCVAM(GMVVMEAS) D
|
---|
| 75 | ... S GMVVMEAS=$$UP^XLFSTR($E(GMVVMEAS))_$$LOW^XLFSTR($E(GMVVMEAS,2,$L(GMVVMEAS)))
|
---|
| 76 | ... I $O(@GMVDATA@("Q",GMVVNUM,0))>0 D
|
---|
| 77 | .... D MSG("ERROR: Qualifiers not allowed if vital measurement is omitted (V^"_GMVVNUM_"="_GMVVHOLD_")")
|
---|
| 78 | .... Q
|
---|
| 79 | ... Q
|
---|
| 80 | .. S GMVOK=1
|
---|
| 81 | .. I '$$VALID^GMVDCCHK($P(GMVVMEAS,";"),GMVMSYS,GMVVABBR) S GMVOK=0
|
---|
| 82 | .. I GMVOK,GMVVMEAS("PO2")]"" D
|
---|
| 83 | ... S GMVIXFRM=$$GET1^DID(120.5,1.4,"","INPUT TRANSFORM")
|
---|
| 84 | ... I GMVIXFRM]"" S X=GMVVMEAS("PO2") X GMVIXFRM I '$D(X) S GMVOK=0
|
---|
| 85 | ... Q
|
---|
| 86 | .. I 'GMVOK S GMVOK=$$OMIT^GMVDCVAM($P(GMVVMEAS,";"))
|
---|
| 87 | .. I 'GMVOK D
|
---|
| 88 | ... D MSG("ERROR: Invalid Vital Measurement (V^"_GMVVNUM_"="_GMVVHOLD_")")
|
---|
| 89 | ... Q
|
---|
| 90 | .. S GMVVMEAS=$$CNV^GMVDCCNV($P(GMVVMEAS,";"),GMVMSYS,"S",GMVVABBR)
|
---|
| 91 | .. S $P(@GMVDATA@("V",GMVVNUM),U,2)=GMVVMEAS_";"_GMVVMEAS("PO2")
|
---|
| 92 | .. S (GMVQNUM,GMVQFIND)=0
|
---|
| 93 | .. F S GMVQNUM=$O(@GMVDATA@("Q",GMVVNUM,GMVQNUM)) Q:GMVQNUM'>0 D
|
---|
| 94 | ... S (GMV,GMVQHOLD)=$G(@GMVDATA@("Q",GMVVNUM,GMVQNUM))
|
---|
| 95 | ... S GMVQD0=$$QUAIEN^GMVDCUTL(GMV)
|
---|
| 96 | ... I GMVQD0>0,$O(^GMRD(120.52,"C",GMVVD0,GMVQD0,0))'>0 S GMVQD0=-2
|
---|
| 97 | ... I GMVQD0'>0 D
|
---|
| 98 | .... I GMVQD0=-2 D MSG("ERROR: Invalid Qualifier for Vital Type (Q^"_GMVVNUM_U_GMVQNUM_"="_GMVQHOLD_")")
|
---|
| 99 | .... I GMVQD0'=-2 D MSG("ERROR: Missing or invalid Vitals Qualifier (Q^"_GMVVNUM_U_GMVQNUM_"="_GMVQHOLD_")")
|
---|
| 100 | .... Q
|
---|
| 101 | ... E D
|
---|
| 102 | .... S GMVQFIND=1
|
---|
| 103 | .... S $P(@GMVDATA@("Q",GMVVNUM,GMVQNUM),U,1)=GMVQD0
|
---|
| 104 | .... S GMVQARRY=GMVQARRY_GMVQD0_U
|
---|
| 105 | .... I GMVSYSBP,$D(GMVSYSBP(GMVQD0))#2 S GMVSYSBP=0
|
---|
| 106 | .... Q
|
---|
| 107 | ... Q
|
---|
| 108 | .. I GMVSYSBP D
|
---|
| 109 | ... D MSG("ERROR: Systolic only BPs must have a Doppler or Palpated qualifier (V^"_GMVVNUM_"="_GMVVHOLD_")")
|
---|
| 110 | ... Q
|
---|
| 111 | .. I 'GMVQFIND,$O(^GMRD(120.52,"C",GMVVD0,0))>0,'$$OMIT^GMVDCVAM(GMVVMEAS) D
|
---|
| 112 | ... D MSG("WARNING: No valid Qualifiers found (Q^"_GMVVNUM_"^##=Qualifier)")
|
---|
| 113 | ... Q
|
---|
| 114 | .. D DUPCHK^GMVDCVAM
|
---|
| 115 | .. Q
|
---|
| 116 | . Q
|
---|
| 117 | I 'GMVVFIND D
|
---|
| 118 | . D MSG("ERROR: No valid Vital Types / Measurements found (V^##=VitalType^Measurement)")
|
---|
| 119 | . Q
|
---|
| 120 | I $O(@GMVDATA@("Q",GMVVLAST)) D
|
---|
| 121 | . S GMV=$S(GMVVFIND'>0:"ERROR",1:"WARNING")
|
---|
| 122 | . D MSG(GMV_": There are more Qualifiers than there are VitalTypes / Measurements")
|
---|
| 123 | . Q
|
---|
| 124 | Q
|
---|
| 125 | ;
|
---|
| 126 | ENTERR ; *** Validate Entered in Error data ***
|
---|
| 127 | I $$FIND1^DIC(200,"","","`"_GMVERRBY)'=GMVERRBY D
|
---|
| 128 | . D MSG("ERROR: Missing or invalid Entered in Error By parameter")
|
---|
| 129 | . Q
|
---|
| 130 | S (GMVINUM,GMVILAST,GMVIFIND)=0
|
---|
| 131 | F S GMVINUM=$O(@GMVDATA@("I",GMVINUM)) Q:GMVINUM'>0 D
|
---|
| 132 | . S GMVILAST=GMVINUM
|
---|
| 133 | . S (GMVID0,GMVIHOLD)=$G(@GMVDATA@("I",GMVINUM))
|
---|
| 134 | . I $$FIND1^DIC(120.5,"","","`"_GMVID0)'=GMVID0 D
|
---|
| 135 | .. D MSG("ERROR: Entered in Error IENS not found (I^"_GMVINUM_"="_GMVIHOLD_")")
|
---|
| 136 | .. Q
|
---|
| 137 | . E D
|
---|
| 138 | .. I $P($G(^GMR(120.5,GMVID0,2)),U) D
|
---|
| 139 | ... D MSG("ERROR: Vitals record already marked Entered in Error (I^"_GMVINUM_"="_GMVIHOLD_")")
|
---|
| 140 | ... Q
|
---|
| 141 | .. S GMVIFIND=1
|
---|
| 142 | .. S (GMVRNUM,GMVRFIND)=0
|
---|
| 143 | .. F S GMVRNUM=$O(@GMVDATA@("R",GMVINUM,GMVRNUM)) Q:GMVRNUM'>0 D
|
---|
| 144 | ... S (GMV,GMVRHOLD)=$G(@GMVDATA@("R",GMVINUM,GMVRNUM))
|
---|
| 145 | ... S GMVRD0=$$REAIEN^GMVDCUTL(GMV)
|
---|
| 146 | ... I GMVRD0'>0 D
|
---|
| 147 | .... D MSG("ERROR: Missing or invalid Entered in Error Reason (R^"_GMVINUM_U_GMVRNUM_"="_GMVRHOLD_")")
|
---|
| 148 | .... Q
|
---|
| 149 | ... E D
|
---|
| 150 | .... S GMVRFIND=1
|
---|
| 151 | .... S @GMVDATA@("R",GMVINUM,GMVRNUM)=GMVRD0
|
---|
| 152 | .... Q
|
---|
| 153 | ... Q
|
---|
| 154 | .. I 'GMVRFIND D
|
---|
| 155 | ... D MSG("ERROR: No valid Entered in Error Reasons found (R^"_GMVINUM_"^##=EnteredInErrorReason)")
|
---|
| 156 | ... Q
|
---|
| 157 | .. Q
|
---|
| 158 | . Q
|
---|
| 159 | I 'GMVIFIND D
|
---|
| 160 | . D MSG("ERROR: No valid Entered in Error IENS found (I^##=EnteredInError)")
|
---|
| 161 | . Q
|
---|
| 162 | I $O(@GMVDATA@("R",GMVILAST)) D
|
---|
| 163 | . S GMV=$S(GMVIFIND'>0:"ERROR",1:"WARNING")
|
---|
| 164 | . D MSG(GMV_": There are more Entered in Error Reasons than there are Entered in Error IENS")
|
---|
| 165 | . Q
|
---|
| 166 | Q
|
---|
| 167 | ;
|
---|
| 168 | MSG(X) ; *** Add a line to the message array ***
|
---|
| 169 | S (GMVMSG,RESULT(-1))=1+$G(RESULT(-1),0)
|
---|
| 170 | S RESULT(GMVMSG)=X
|
---|
| 171 | I $P(X,":")="ERROR" S RESULT(0)="ERROR"
|
---|
| 172 | Q
|
---|
| 173 | ;
|
---|
| 174 | BPSYSQ ;;Qualifiers that must be present if only systolic BP is present
|
---|
| 175 | ;;DOPPLER
|
---|
| 176 | ;;PALPATED
|
---|
| 177 | ;;
|
---|