[613] | 1 | GMRVPCE1 ;HIRMFO/RM-PCE Interface code ;8/2/96
|
---|
| 2 | ;;5.0;GEN. MED. REC. - VITALS;**14**;Oct 31, 2002
|
---|
| 3 | PCE(GMRVSTOR) ; Called from VALIDATE^GMRVPCE0 to validate vitals data, or
|
---|
| 4 | ; STORE^GMRVPCE0 to store vitals data. The variable GMRVSTOR (req.)
|
---|
| 5 | ; will determine if called from VALIDATE (0), or STORE (1).
|
---|
| 6 | ; 08/15/2005 KAM/BAY 107096 added 'Q' for error handling
|
---|
| 7 | ; 09/23/2005 KAM/BAY 113449 add check for invalid HOS/LOC type
|
---|
| 8 | ;
|
---|
| 9 | N GMRVDFN,GMRVDUZ,GMRVHLOC,GMRVPROV,GMRVX
|
---|
| 10 | S GMRVDFN=$P($G(GMRVDAT("ENCOUNTER")),"^",2)
|
---|
| 11 | I GMRVDFN'>0!'$D(^DPT(+GMRVDFN,0)) D ERROR(0,0,1,GMRVDFN) Q
|
---|
| 12 | S GMRVHLOC=$P($G(GMRVDAT("ENCOUNTER")),"^",3)
|
---|
| 13 | I GMRVHLOC'>0!'$D(^SC(+GMRVHLOC,0)) D ERROR(0,0,2,GMRVHLOC) Q
|
---|
| 14 | ; 09/26/2005 KAM/BAY 113449 added next line
|
---|
| 15 | I GMRVHLOC>0,"C,W"'[$P(^SC(+GMRVHLOC,0),"^",3) D ERROR(0,0,8,$$GET1^DIQ(44,GMRVHLOC,.01)_" = "_$$GET1^DIQ(44,GMRVHLOC,2)) Q
|
---|
| 16 | ;
|
---|
| 17 | S GMRVDUZ=$P(GMRVDAT("SOURCE"),"^",2) I 'GMRVDUZ S GMRVDUZ=$G(DUZ)
|
---|
| 18 | I GMRVDUZ'>0!'$D(^VA(200,+GMRVDUZ,0)) D ERROR(0,0,3,GMRVDUZ) Q
|
---|
| 19 | S GMRVPROV=0
|
---|
| 20 | F S GMRVPROV=$O(GMRVDAT("VITALS",GMRVPROV)) Q:GMRVPROV'>0 D
|
---|
| 21 | . S GMRVX=0
|
---|
| 22 | . F S GMRVX=$O(GMRVDAT("VITALS",GMRVPROV,GMRVX)) Q:GMRVX'>0 D
|
---|
| 23 | . . D DATA($G(GMRVDAT("VITALS",GMRVPROV,GMRVX)))
|
---|
| 24 | . . Q
|
---|
| 25 | . Q
|
---|
| 26 | Q
|
---|
| 27 | ERROR(PROVIDER,I,CODE,VALUE) ; Given Provider IEN (PROVIDER), subentry (I),
|
---|
| 28 | ; Error code (CODE) and Rejected value (VALUE), this procedure will
|
---|
| 29 | ; set the GMRVDAT("ERROR") array with error.
|
---|
| 30 | ;
|
---|
| 31 | Q:$G(GMRVSTOR)=1
|
---|
| 32 | N MSG,NODE,PIECE,X
|
---|
| 33 | S X=$T(ERRTXT+CODE),MSG=$P(X,";",3),NODE=$P(X,";",4),PIECE=$P(X,";",5)
|
---|
| 34 | S GMRVDAT("ERROR",NODE,PROVIDER,I,PIECE)=MSG_"^"_VALUE
|
---|
| 35 | Q
|
---|
| 36 | ERRTXT ; Error messages and <NODE>/<PIECE> information for code passed.
|
---|
| 37 | ;;Vitals missing/invalid Patient;VITALS;0
|
---|
| 38 | ;;Vitals missing/invalid Hospital Location;VITALS;0
|
---|
| 39 | ;;Vitals missing/invalid Source;VITALS;0
|
---|
| 40 | ;;Vitals missing Data node;VITALS;0
|
---|
| 41 | ;;Vitals missing/invalid Measurement Type;VITALS;1
|
---|
| 42 | ;;Vitals missing/invalid Measurement Date;VITALS;4
|
---|
| 43 | ;;Vitals missing/invalid Measurement;VITALS;2
|
---|
| 44 | ;;Invalid Hospital Location Type;VITALS;0
|
---|
| 45 | Q
|
---|
| 46 | DATA(VITALS) ; Process GMRVDAT("VITALS") node. Data in in variable VITALS.
|
---|
| 47 | ; Present but not passed are GMRVPROV=Provider IEN, GMRVX=subentry
|
---|
| 48 | ; for GMRVPROV and GMRVSTOR=$S(1:Store data,0:Validate Data).
|
---|
| 49 | ;
|
---|
| 50 | N GMRVMTYP,GMRVRATE,GMRVUNIT,GMRVMDT
|
---|
| 51 | I $G(VITALS)="" D ERROR(GMRVPROV,GMRVX,4,VITALS) Q
|
---|
| 52 | N GMRVTYP,GMRVRATE,GMRVUNIT,GMRVMDT
|
---|
| 53 | S GMRVMTYP=$P(VITALS,"^")
|
---|
| 54 | I '$$VMTYPES^GMRVPCE0(GMRVMTYP) D ERROR(GMRVPROV,GMRVX,5,GMRVMTYP) Q
|
---|
| 55 | S X=$P(VITALS,"^",4),%DT="TS" D ^%DT K %DT S GMRVMDT=Y
|
---|
| 56 | I GMRVMDT'>0 D I GMRVMDT'>0 D ERROR(GMRVPROV,GMRVX,6,GMRVMDT) Q
|
---|
| 57 | . S X=$P($G(GMRVDAT("ENCOUNTER")),"^"),%DT="TSR"
|
---|
| 58 | . D ^%DT K %DT S GMRVMDT=Y
|
---|
| 59 | . Q
|
---|
| 60 | S GMRVRATE=$P(VITALS,"^",2)
|
---|
| 61 | S GMRVUNIT=$P(VITALS,"^",3) I GMRVUNIT="" D
|
---|
| 62 | . I GMRVMTYP="HT" S GMRVUNIT="IN"
|
---|
| 63 | . I GMRVMTYP="WT" S GMRVUNIT="LB"
|
---|
| 64 | . I GMRVMTYP="TMP" S GMRVUNIT="F"
|
---|
| 65 | . Q
|
---|
| 66 | I $S(GMRVRATE="":1,1:'$$RATECHK^GMRVPCE0(GMRVMTYP,GMRVRATE,GMRVUNIT)) D ERROR(GMRVPROV,GMRVX,7,GMRVRATE) Q
|
---|
| 67 | S GMRVMTYP=$O(^GMRD(120.51,"APCE",GMRVMTYP,""))
|
---|
| 68 | ; 08/15/2005 KAM 107096 Added 'Q' to next line
|
---|
| 69 | I GMRVMTYP'>0 D ERROR(GMRVPROV,GMRVX,5,$P(VITALS,"^")) Q
|
---|
| 70 | D DUPCHK I GMRVSTOR D
|
---|
| 71 | . N GMRVFDA
|
---|
| 72 | . S GMRVFDA(99,120.5,"+1,",.01)=GMRVMDT
|
---|
| 73 | . S GMRVFDA(99,120.5,"+1,",.02)=GMRVDFN
|
---|
| 74 | . S GMRVFDA(99,120.5,"+1,",.03)=GMRVMTYP
|
---|
| 75 | . S GMRVFDA(99,120.5,"+1,",.04)=$$NOW^XLFDT()
|
---|
| 76 | . S GMRVFDA(99,120.5,"+1,",.05)=GMRVHLOC
|
---|
| 77 | . S GMRVFDA(99,120.5,"+1,",.06)=GMRVDUZ
|
---|
| 78 | . S GMRVFDA(99,120.5,"+1,",1.2)=GMRVRATE
|
---|
| 79 | . D UPDATE^DIE("","GMRVFDA(99)")
|
---|
| 80 | . Q
|
---|
| 81 | Q
|
---|
| 82 | DUPCHK ; This procedure checks for duplicate data. If data is being
|
---|
| 83 | ; validated, a warning message will be sent, if data is being stored,
|
---|
| 84 | ; the old record that is duplicate will be entered in error and the
|
---|
| 85 | ; new data filed.
|
---|
| 86 | ;
|
---|
| 87 | N GMRVDA S GMRVDA=0
|
---|
| 88 | F S GMRVDA=$O(^GMR(120.5,"AA",GMRVDFN,GMRVMTYP,9999999-GMRVMDT,GMRVDA)) Q:GMRVDA'>0 D:'+$G(^GMR(120.5,GMRVDA,2))
|
---|
| 89 | . S %=$G(^GMR(120.5,GMRVDA,0))
|
---|
| 90 | . I $P(%_"^","^",5,9)'=(GMRVHLOC_"^"_GMRVDUZ_"^^"_GMRVRATE_"^") D
|
---|
| 91 | . . I GMRVSTOR D
|
---|
| 92 | . . . ;S DIE="^GMR(120.5,",DA=GMRVDA,DR="2////1;3////"_GMRVDUZ D ^DIE
|
---|
| 93 | . . . N GMRVFDA
|
---|
| 94 | . . . S GMRVFDA(88,120.5,GMRVDA_",",2)=1,GMRVFDA(88,120.5,GMRVDA_",",3)=GMRVDUZ D FILE^DIE("","GMRVFDA(88)")
|
---|
| 95 | . . . S GMRVFDA(77,120.506,"?+1,"_GMRVDA_",",.01)=4 D UPDATE^DIE("","GMRVFDA(77)")
|
---|
| 96 | . . . Q
|
---|
| 97 | . . I 'GMRVSTOR S GMRVDAT("WARNING","VITALS",GMRVPROV,GMRVX,0)="Duplicate measurement data exists in database! That data was overwritten by this transaction."
|
---|
| 98 | . Q
|
---|
| 99 | Q
|
---|