- GMVGGR1 ;HOIFO/YH,FT-VITAL SIGNS RECORD SF 511 ;10/24/07
- ;;5.0;GEN. MED. REC. - VITALS;**3,23**;Oct 31, 2002;Build 25
- ;
- ; This routine uses the following IAs:
- ; #3214 - ^GMRYAPI calls (private)
- ; #4290 - ^PXRMINDX global (controlled)
- ; #10040 - FILE 44 references (supported)
- ; #10061 - ^VADPT calls (supported)
- ; #10096 - ^%ZOSF calls (supported)
- ;
- ; This routine supports the following IAs:
- ; #4654 - GMV V/M ALLDATA RPC is called at VMDATA (private)
- ;
- VMDATA(RESULT,GMVDATA) ;GMV V/M ALLDATA [RPC entry point]
- ;ENTRY POINT FROM GMRV SF511 GUI TO EXTRACT ALL DATA
- ; GMVDATA: piece 1 = DFN
- ; 2 = start date
- ; 3 = end date
- ; 4 = 0
- ; 5 = database screen
- ; 0 = return records from Vitals & FlowSheets (default)
- ; 1 = return records from Vitals only
- ; 2 = return records from FlowSheets only
- ;
- N DFN,GQT,X,Y
- N GCHA,GMVCLIO,GMVLOOP,GSEL,%,%H,%I,%T,GMVQNAME,GMVDB
- K ^TMP($J)
- S (GMROUT,GN,GQT)=0,DFN=+$P(GMVDATA,"^"),GMRSTRT=$P(GMVDATA,"^",2),GMRFIN=$P(GMVDATA,"^",3),GMR=+$P(GMVDATA,"^",4),GMVDB=+$P(GMVDATA,U,5)
- S GMVDB=$S(GMVDB=2:2,GMVDB=1:1,1:0)
- S GSEL=0,GMR=0
- S Y=GMRSTRT X ^DD("DD") S GSTRFIN=Y S Y=GMRFIN X ^DD("DD") S GSTRFIN=GSTRFIN_" - "_Y
- S GMRHT=0
- K ^TMP($J,"GMR"),^TMP($J,"GMRK"),^TMP($J,"GDT"),^TMP($J,"GMRVG"),^TMP($J,"GTNM")
- S GSTART1=GMRSTRT-.0001,GEND1=GMRFIN
- F GTYPE="B","H","P","R","T","W","PO2","CVP","CG","PN" D SETT
- S GRPT=5 D:GMR'=1 SETIO D ^GMVGGR2
- Q1 K GMR,GSOL,GIVDT,GMRHLOC,GMRVJ,GDATA,GDT,GEN,GEND1,GI,GJ,GK,GMRVX,GSTART1,GTNM,GTYP,GTYPE,GX,I D KVAR^VADPT K VA,VAROOT
- D QIO^GMVGR5
- K GRPT,GMROUT,GMRRMBD,GAGE,GCNT,GDOB,GCNTB,GCNTD,GCNTP,GCNTR,GCNTT,GCNTT1,GCNTI,GCNTO,GDT1,GCNTPD,GCNTTD,GCNTW,GPG,GPGS,GHT,GTYPE1,GCNTB3,GDTA,XDT,XIO,XX,^TMP($J,"GMRK"),^TMP($J,"GMR"),^TMP($J,"GDT"),^TMP($J,"GMRVG")
- K GLINE,GMRQUAL,^TMP($J,"GTNM"),G,GDA,GDIP,GDOP,GINF,GMIN,GMRFIN,GMRHT,GMRSITE,GMRSTRT,GMRVARY,GMRVHLOC,GMRWARD,GN,GNDATE,GNSHFT,GRNDIP,GRNDOP,GRNGIP,GSIP,GSOP,GSTAR,GSTRFIN,GSUB
- Q
- SETT ;SET GMRT
- S GTYP(1)=$S(GTYPE="B":"BLOOD PRESSURE",GTYPE="P":"PULSE",GTYPE="R":"RESPIRATION",GTYPE="T":"TEMPERATURE",GTYPE="H":"HEIGHT",GTYPE="W":"WEIGHT",GTYPE="CG":"CIRCUMFERENCE/GIRTH",GTYPE="PO2":"PULSE OXIMETRY",1:"")
- I GTYP(1)="" S GTYP(1)=$S(GTYPE="CVP":"CENTRAL VENOUS PRESSURE",GTYPE="PN":"PAIN",1:"")
- Q:GTYP(1)=""
- S GTYP=$O(^GMRD(120.51,"B",GTYP(1),"")),GX=GSTART1
- I GTYP>0 F S GX=$O(^PXRMINDX(120.5,"PI",DFN,GTYP,GX)) Q:GX'>0!(GX>GEND1) S GEN=0 F S GEN=$O(^PXRMINDX(120.5,"PI",DFN,GTYP,GX,GEN)) Q:$L(GEN)'>0 D
- .K GMVCLIO
- .I GEN=+GEN,GMVDB=2 Q ;want clio records only
- .I GEN'=+GEN,GMVDB=1 Q ;want vitals records only
- .I GEN=+GEN D
- ..D F1205^GMVUTL(.GMVCLIO,GEN)
- .I GEN'=+GEN D
- ..D CLIO^GMVUTL(.GMVCLIO,GEN)
- .S GMVCLIO(0)=$G(GMVCLIO(0)),GMVCLIO(5)=$G(GMVCLIO(5))
- .I GMVCLIO(0)=""!($P(GMVCLIO(0),U,8)="") Q
- .S GMVLOOP=0,GG=""
- .F GMVLOOP=1:1 Q:$P(GMVCLIO(5),U,GMVLOOP)="" D
- ..S GMVQNAME=$$FIELD^GMVGETQL($P(GMVCLIO(5),U,GMVLOOP),1,"E")
- ..I GMVQNAME=""!(GMVQNAME=-1) Q
- ..S GG=GG_$S(GG'="":";",1:"")_GMVQNAME
- .D BLDARR
- .Q
- Q
- BLDARR ;
- N GMVLOC,GMVUSER
- S GDATA=GMVCLIO(0)
- Q:GDATA=""
- S GMVLOC=+$P(GDATA,U,5) ;hospital location ien
- S GMVLOC=$P($G(^SC(GMVLOC,0)),U,1)
- S GMVUSER=+$P(GDATA,U,6) ;user duz
- S GMVUSER=$$PERSON^GMVUTL1(GMVUSER)
- S GMRVX=GTYPE,GMRVX(0)=$P(GDATA,"^",8),GMRVX(1)=0 D:GMRVX(0)>0!(GMRVX(0)<0)!($E(GMRVX(0))="0") EN1^GMVSAS0
- S ^TMP($J,"GMRVG",GX,GTYPE,$P(GDATA,"^",8))=GG_"^"_$S($G(GMRVX(1))>0:1,1:"")_"^^"_$P(GDATA,"^",10)_U_GMVLOC_U_GMVUSER_U_$S(GEN=+GEN:"Vitals",1:"CLIO")
- S:$D(^TMP($J,"GMRVG",GX,"H",$P(GDATA,"^",8))) GHT=$P(GDATA,"^",8)
- ;I GTYPE="B",$P(GDATA,"^",8)'>0 S ^TMP($J,"GMRVG",9999999-GX,"B",$P(GDATA,"^",8))="^^"
- K GG
- Q
- SETIO ;
- S X="GMRYRP0" X ^%ZOSF("TEST") Q:'$T
- D IO^GMVGR5
- D SETIOAR
- Q
- SETIOAR F GTYPE1="XI"_($$INPUT^GMRYAPI()+4),"XO"_($$OUTPUT^GMRYAPI()+1) F GDT=0:0 S GDT=$O(^TMP($J,"GMR",GTYPE1,GDT)) Q:GDT'>0 F GDTA=0:0 S GDTA=$O(^TMP($J,"GMR",GTYPE1,GDT,GDTA)) Q:GDTA="" D SETIOAR1
- Q
- SETIOAR1 S:GTYPE1["XI" ^TMP($J,"GMRVG",GDT,"I",GDTA)="^" S:GTYPE1["XO" ^TMP($J,"GMRVG",GDT,"O",GDTA)="^"
- Q
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HGMVGGR1 4274 printed Feb 18, 2025@23:25:16 Page 2
- GMVGGR1 ;HOIFO/YH,FT-VITAL SIGNS RECORD SF 511 ;10/24/07
- +1 ;;5.0;GEN. MED. REC. - VITALS;**3,23**;Oct 31, 2002;Build 25
- +2 ;
- +3 ; This routine uses the following IAs:
- +4 ; #3214 - ^GMRYAPI calls (private)
- +5 ; #4290 - ^PXRMINDX global (controlled)
- +6 ; #10040 - FILE 44 references (supported)
- +7 ; #10061 - ^VADPT calls (supported)
- +8 ; #10096 - ^%ZOSF calls (supported)
- +9 ;
- +10 ; This routine supports the following IAs:
- +11 ; #4654 - GMV V/M ALLDATA RPC is called at VMDATA (private)
- +12 ;
- VMDATA(RESULT,GMVDATA) ;GMV V/M ALLDATA [RPC entry point]
- +1 ;ENTRY POINT FROM GMRV SF511 GUI TO EXTRACT ALL DATA
- +2 ; GMVDATA: piece 1 = DFN
- +3 ; 2 = start date
- +4 ; 3 = end date
- +5 ; 4 = 0
- +6 ; 5 = database screen
- +7 ; 0 = return records from Vitals & FlowSheets (default)
- +8 ; 1 = return records from Vitals only
- +9 ; 2 = return records from FlowSheets only
- +10 ;
- +11 NEW DFN,GQT,X,Y
- +12 NEW GCHA,GMVCLIO,GMVLOOP,GSEL,%,%H,%I,%T,GMVQNAME,GMVDB
- +13 KILL ^TMP($JOB)
- +14 SET (GMROUT,GN,GQT)=0
- SET DFN=+$PIECE(GMVDATA,"^")
- SET GMRSTRT=$PIECE(GMVDATA,"^",2)
- SET GMRFIN=$PIECE(GMVDATA,"^",3)
- SET GMR=+$PIECE(GMVDATA,"^",4)
- SET GMVDB=+$PIECE(GMVDATA,U,5)
- +15 SET GMVDB=$SELECT(GMVDB=2:2,GMVDB=1:1,1:0)
- +16 SET GSEL=0
- SET GMR=0
- +17 SET Y=GMRSTRT
- XECUTE ^DD("DD")
- SET GSTRFIN=Y
- SET Y=GMRFIN
- XECUTE ^DD("DD")
- SET GSTRFIN=GSTRFIN_" - "_Y
- +18 SET GMRHT=0
- +19 KILL ^TMP($JOB,"GMR"),^TMP($JOB,"GMRK"),^TMP($JOB,"GDT"),^TMP($JOB,"GMRVG"),^TMP($JOB,"GTNM")
- +20 SET GSTART1=GMRSTRT-.0001
- SET GEND1=GMRFIN
- +21 FOR GTYPE="B","H","P","R","T","W","PO2","CVP","CG","PN"
- DO SETT
- +22 SET GRPT=5
- if GMR'=1
- DO SETIO
- DO ^GMVGGR2
- Q1 KILL GMR,GSOL,GIVDT,GMRHLOC,GMRVJ,GDATA,GDT,GEN,GEND1,GI,GJ,GK,GMRVX,GSTART1,GTNM,GTYP,GTYPE,GX,I
- DO KVAR^VADPT
- KILL VA,VAROOT
- +1 DO QIO^GMVGR5
- +2 KILL GRPT,GMROUT,GMRRMBD,GAGE,GCNT,GDOB,GCNTB,GCNTD,GCNTP,GCNTR,GCNTT,GCNTT1,GCNTI,GCNTO,GDT1,GCNTPD,GCNTTD,GCNTW,GPG,GPGS,GHT,GTYPE1,GCNTB3,GDTA,XDT,XIO,XX,^TMP($JOB,"GMRK"),^TMP($JOB,"GMR"),^TMP($JOB,"GDT"),^TMP($JOB,"GMRVG")
- +3 KILL GLINE,GMRQUAL,^TMP($JOB,"GTNM"),G,GDA,GDIP,GDOP,GINF,GMIN,GMRFIN,GMRHT,GMRSITE,GMRSTRT,GMRVARY,GMRVHLOC,GMRWARD,GN,GNDATE,GNSHFT,GRNDIP,GRNDOP,GRNGIP,GSIP,GSOP,GSTAR,GSTRFIN,GSUB
- +4 QUIT
- SETT ;SET GMRT
- +1 SET GTYP(1)=$SELECT(GTYPE="B":"BLOOD PRESSURE",GTYPE="P":"PULSE",GTYPE="R":"RESPIRATION",GTYPE="T":"TEMPERATURE",GTYPE="H":"HEIGHT",GTYPE="W":"WEIGHT",GTYPE="CG":"CIRCUMFERENCE/GIRTH",GTYPE="PO2":"PULSE OXIMETRY",1:"")
- +2 IF GTYP(1)=""
- SET GTYP(1)=$SELECT(GTYPE="CVP":"CENTRAL VENOUS PRESSURE",GTYPE="PN":"PAIN",1:"")
- +3 if GTYP(1)=""
- QUIT
- +4 SET GTYP=$ORDER(^GMRD(120.51,"B",GTYP(1),""))
- SET GX=GSTART1
- +5 IF GTYP>0
- FOR
- SET GX=$ORDER(^PXRMINDX(120.5,"PI",DFN,GTYP,GX))
- if GX'>0!(GX>GEND1)
- QUIT
- SET GEN=0
- FOR
- SET GEN=$ORDER(^PXRMINDX(120.5,"PI",DFN,GTYP,GX,GEN))
- if $LENGTH(GEN)'>0
- QUIT
- Begin DoDot:1
- +6 KILL GMVCLIO
- +7 ;want clio records only
- IF GEN=+GEN
- IF GMVDB=2
- QUIT
- +8 ;want vitals records only
- IF GEN'=+GEN
- IF GMVDB=1
- QUIT
- +9 IF GEN=+GEN
- Begin DoDot:2
- +10 DO F1205^GMVUTL(.GMVCLIO,GEN)
- End DoDot:2
- +11 IF GEN'=+GEN
- Begin DoDot:2
- +12 DO CLIO^GMVUTL(.GMVCLIO,GEN)
- End DoDot:2
- +13 SET GMVCLIO(0)=$GET(GMVCLIO(0))
- SET GMVCLIO(5)=$GET(GMVCLIO(5))
- +14 IF GMVCLIO(0)=""!($PIECE(GMVCLIO(0),U,8)="")
- QUIT
- +15 SET GMVLOOP=0
- SET GG=""
- +16 FOR GMVLOOP=1:1
- if $PIECE(GMVCLIO(5),U,GMVLOOP)=""
- QUIT
- Begin DoDot:2
- +17 SET GMVQNAME=$$FIELD^GMVGETQL($PIECE(GMVCLIO(5),U,GMVLOOP),1,"E")
- +18 IF GMVQNAME=""!(GMVQNAME=-1)
- QUIT
- +19 SET GG=GG_$SELECT(GG'="":";",1:"")_GMVQNAME
- End DoDot:2
- +20 DO BLDARR
- +21 QUIT
- End DoDot:1
- +22 QUIT
- BLDARR ;
- +1 NEW GMVLOC,GMVUSER
- +2 SET GDATA=GMVCLIO(0)
- +3 if GDATA=""
- QUIT
- +4 ;hospital location ien
- SET GMVLOC=+$PIECE(GDATA,U,5)
- +5 SET GMVLOC=$PIECE($GET(^SC(GMVLOC,0)),U,1)
- +6 ;user duz
- SET GMVUSER=+$PIECE(GDATA,U,6)
- +7 SET GMVUSER=$$PERSON^GMVUTL1(GMVUSER)
- +8 SET GMRVX=GTYPE
- SET GMRVX(0)=$PIECE(GDATA,"^",8)
- SET GMRVX(1)=0
- if GMRVX(0)>0!(GMRVX(0)<0)!($EXTRACT(GMRVX(0))="0")
- DO EN1^GMVSAS0
- +9 SET ^TMP($JOB,"GMRVG",GX,GTYPE,$PIECE(GDATA,"^",8))=GG_"^"_$SELECT($GET(GMRVX(1))>0:1,1:"")_"^^"_$PIECE(GDATA,"^",10)_U_GMVLOC_U_GMVUSER_U_$SELECT(GEN=+GEN:"Vitals",1:"CLIO")
- +10 if $DATA(^TMP($JOB,"GMRVG",GX,"H",$PIECE(GDATA,"^",8)))
- SET GHT=$PIECE(GDATA,"^",8)
- +11 ;I GTYPE="B",$P(GDATA,"^",8)'>0 S ^TMP($J,"GMRVG",9999999-GX,"B",$P(GDATA,"^",8))="^^"
- +12 KILL GG
- +13 QUIT
- SETIO ;
- +1 SET X="GMRYRP0"
- XECUTE ^%ZOSF("TEST")
- if '$TEST
- QUIT
- +2 DO IO^GMVGR5
- +3 DO SETIOAR
- +4 QUIT
- SETIOAR FOR GTYPE1="XI"_($$INPUT^GMRYAPI()+4),"XO"_($$OUTPUT^GMRYAPI()+1)
- FOR GDT=0:0
- SET GDT=$ORDER(^TMP($JOB,"GMR",GTYPE1,GDT))
- if GDT'>0
- QUIT
- FOR GDTA=0:0
- SET GDTA=$ORDER(^TMP($JOB,"GMR",GTYPE1,GDT,GDTA))
- if GDTA=""
- QUIT
- DO SETIOAR1
- +1 QUIT
- SETIOAR1 if GTYPE1["XI"
- SET ^TMP($JOB,"GMRVG",GDT,"I",GDTA)="^"
- if GTYPE1["XO"
- SET ^TMP($JOB,"GMRVG",GDT,"O",GDTA)="^"
- +1 QUIT