- GMVPXRM ;HIOFO/FT-API to return FILE 120.5 data ;01/20/09 13:11
- ;;5.0;GEN. MED. REC. - VITALS;**6,23**;Oct 31, 2002;Build 25
- ;
- ; This routine uses the following IAs:
- ; #4113 - ^PXRMSXRM routine (controlled)
- ; #4114 - ^PXRMINDX global (controlled)
- ; #5076 - ^MDCLIO1 calls (private)
- ; #10103 - ^XLFDT calls (supported)
- ; #10040 - FILE 44 references (supported)
- ; #10141 - ^XPDUTL calls (supported)
- ;
- ; Entry point(s) available for use by other packages:
- ; EN is documented in IA #3647
- ; VITALS is documented in IA #3647
- ;
- EN(GMVDATA,GMVIEN,GMVIB) ; Returns data for a single FILE 120.5 entry.
- ; Input:
- ; GMVDATA = Array name passed by reference (required)
- ; GMVIEN = IEN for FILE 120.5 or GUID for FILE 704.117 (required)
- ; GMVIB = "I" for Internal value only
- ; "B" for Internal and External values (default = B)
- ;
- ; If GMVIB = "I", then
- ; Output = GMVDATA(n)=internal value
- ;
- ; If GMVIB = "B", then
- ; Output: GMVDATA(n)=internal value^external value
- ;
- ; where:
- ; GMVDATA(1)=.01 (DATE/TIME VITALS TAKEN)
- ; GMVDATA(2)=.02 (PATIENT)
- ; GMVDATA(3)=.03 (VITAL TYPE)
- ; GMVDATA(4)=.04 (DATE/TIME VITALS ENTERED)
- ; GMVDATA(5)=.05 (HOSPITAL LOCATION)
- ; GMVDATA(6)=.06 (ENTERED BY)
- ; GMVDATA(7)=1.2 (RATE)
- ; GMVDATA(8)=1.4 (SUPPLEMENTAL O2)
- ; GMVDATA(9)=2 (ENTERED IN ERROR)
- ; GMVDATA(10)=3 (ERROR ENTERED BY)
- ; GMVDATA(11,n)=4 (REASON ENTERED IN ERROR) <--multiple
- ; GMVDATA(12,n)=5 (QUALIFIER) <--multiple
- ;
- ; If the lookup failed then: GMVDATA(1)=-1^error text
- ;
- N GMVCNT,GMVIEN1,GMVLIST,GMVLEN,GMVLOOP,GMVTEMP,TEMP,TEMP2,TEMP5,TP,EM
- I $G(GMVIB)'="I",$G(GMVIB)'="B" S GMVIB="B"
- I $G(GMVIEN)="" S GMVDATA(1)="-1^Record Number is Null" Q
- I GMVIEN=+GMVIEN D
- .D F1205^GMVUTL(.GMVTEMP,GMVIEN,1)
- .S TEMP=$G(GMVTEMP(0))
- .S TEMP2=$G(GMVTEMP(2))
- .S TEMP5=$G(GMVTEMP(5))
- .Q
- I GMVIEN'=+GMVIEN D
- .D CLIO^GMVUTL(.GMVTEMP,GMVIEN)
- .S TEMP=$G(GMVTEMP(0))
- .S TEMP2=$G(GMVTEMP(2))
- .S TEMP5=$G(GMVTEMP(5))
- .Q
- I TEMP="" D Q
- .S GMVDATA(1)="-1^The entry does not exist"
- .Q
- ;
- S GMVDATA(1)=$P(TEMP,U,1)
- S GMVDATA(2)=$P(TEMP,U,2)
- S GMVDATA(3)=$P(TEMP,U,3)
- S GMVDATA(4)=$P(TEMP,U,4)
- S GMVDATA(5)=$P(TEMP,U,5)
- I '$D(^SC(+GMVDATA(5),0)) S GMVDATA(5)=0
- S GMVDATA(6)=$P(TEMP,U,6)
- S GMVDATA(7)=$P(TEMP,U,8)
- S GMVDATA(8)=$P(TEMP,U,10)
- S GMVDATA(9)=$P(TEMP2,U,1)
- S GMVDATA(10)=$P(TEMP2,U,2)
- S GMVCNT=0
- S GMVLIST=$P(TEMP2,U,3)
- S GMVLEN=$L(GMVLIST,"~")
- F GMVCNT=1:1:GMVLEN D
- .S GMVDATA(11,GMVCNT)=$P(GMVLIST,"~",GMVCNT)
- .Q
- I GMVCNT=0 S GMVDATA(11,1)=""
- S GMVLIST=$G(TEMP5),GMVCNT=0
- F GMVLOOP=1:1 Q:$P(GMVLIST,U,GMVLOOP)="" D
- .S GMVCNT=GMVCNT+1
- .S GMVDATA(12,GMVCNT)=$P(GMVLIST,U,GMVLOOP)
- .Q
- I GMVCNT=0 S GMVDATA(12,1)=""
- ;
- Q:GMVIB="I"
- ;
- S GMVDATA(1)=$P(GMVDATA(1),U,1)_U_$$EXTERNAL^DILFD(120.5,.01,"",$P(GMVDATA(1),U,1),.EM)
- S GMVDATA(2)=$P(GMVDATA(2),U,1)_U_$$EXTERNAL^DILFD(120.5,.02,"",$P(GMVDATA(2),U,1),.EM)
- S GMVDATA(3)=$P(GMVDATA(3),U,1)_U_$$EXTERNAL^DILFD(120.5,.03,"",$P(GMVDATA(3),U,1),.EM)
- S GMVDATA(4)=$P(GMVDATA(4),U,1)_U_$$EXTERNAL^DILFD(120.5,.04,"",$P(GMVDATA(4),U,1),.EM)
- S GMVDATA(5)=$P(GMVDATA(5),U,1)_U_$$EXTERNAL^DILFD(120.5,.05,"",$P(GMVDATA(5),U,1),.EM)
- S GMVDATA(6)=$P(GMVDATA(6),U,1)_U_$$EXTERNAL^DILFD(120.5,.06,"",$P(GMVDATA(6),U,1),.EM)
- S GMVDATA(7)=$P(GMVDATA(7),U,1)_U_$P(GMVDATA(7),U,1) ;same
- S GMVDATA(8)=$P(GMVDATA(8),U,1)_U_$P(GMVDATA(8),U,1) ;same
- S GMVDATA(9)=$P(GMVDATA(9),U,1)_U_$$EXTERNAL^DILFD(120.5,2,"",$P(GMVDATA(9),U,1),.EM)
- S GMVDATA(10)=$P(GMVDATA(10),U,1)_U_$$EXTERNAL^DILFD(120.5,3,"",$P(GMVDATA(10),U,1),.EM)
- ;
- ;loop through entered-in-error reason multiple
- S (GMVCNT,GMVIEN1)=0
- F S GMVIEN1=$O(GMVDATA(11,GMVIEN1)) Q:'GMVIEN1 D
- .S TP=+$P(GMVDATA(11,GMVIEN1),U,1)
- .Q:'TP
- .S GMVDATA(11,GMVIEN1)=TP_U_$$EXTERNAL^DILFD(120.506,.01,"",TP,.EM)
- .S GMVCNT=1
- .Q
- I GMVCNT=0 S GMVDATA(11,1)="^"
- ;loop through qualifier multiple
- S (GMVCNT,GMVIEN1)=0
- F S GMVIEN1=$O(GMVDATA(12,GMVIEN1)) Q:'GMVIEN1 D
- .S TP=+$P(GMVDATA(12,GMVIEN1),U,1)
- .Q:'TP
- .S GMVDATA(12,GMVIEN1)=TP_U_$P($G(^GMRD(120.52,+TP,0)),U,1)
- .S GMVCNT=1
- .Q
- I GMVCNT=0 S GMVDATA(12,1)="^"
- Q
- ;
- VITALS ; This entry point is for use by the Clinical Reminders package
- ; to re-index the ACR cross-reference nodes for FILE 120.5.
- ;
- ; a) This entry point kills the ACR cross-reference nodes for ^PXRMINDX(120.5).
- ; b) Re-builds the ACR cross-reference nodes.
- ; c) Calls the Clinical Reminders package to generate a mail message
- ; summarizing the rebuilding of the ACR cross-reference.
- ;
- N DAS,DATE,DFN,END,ENTRIES,ETEXT,GLOBAL,IND,NE,NE1,NE2,NERROR
- N START,TEMP,TENP,TEXT,VT,GMVCLIO,GMVTYPE,GMVLOOP,GMVIEN
- S GLOBAL=$$GET1^DID(120.5,"","","GLOBAL NAME")
- ; Don't leave any old cross-reference nodes around.
- K ^PXRMINDX(120.5)
- S ENTRIES=$P(^GMR(120.5,0),U,4)
- S TENP=ENTRIES/10
- S TENP=+$P(TENP,".",1)
- D BMES^XPDUTL("Building index for VITALS DATA.")
- ;S TEXT="There are "_ENTRIES_" entries to process."
- ;D MES^XPDUTL(TEXT)
- S START=$H
- S (DAS,IND,NE,NE1,NE2,NERROR)=0
- F S DAS=+$O(^GMR(120.5,DAS)) Q:DAS=0 D
- . S IND=IND+1
- . I IND#TENP=0 D
- .. S TEXT="Processing entry "_IND
- .. D MES^XPDUTL(TEXT)
- . I IND#10000=0 W "."
- . S TEMP=^GMR(120.5,DAS,0)
- . I $P(TEMP,U,1)'?7N1"."1.6N S NE1=NE1+1 Q
- . I $P(TEMP,U,2)'>0 S NE1=NE1+1 Q
- . I $P(TEMP,U,3)'>0 S NE1=NE1+1 Q
- . S DATE=$P(TEMP,U,1),DFN=$P(TEMP,U,2),VT=$P(TEMP,U,3)
- .;If this entry is marked as entered-in-error do not index it.
- . I $P($G(^GMR(120.5,DAS,2)),U,1) S NE2=NE2+1 Q
- . S ^PXRMINDX(120.5,"IP",VT,DFN,DATE,DAS)=""
- . S ^PXRMINDX(120.5,"PI",DFN,VT,DATE,DAS)=""
- . S NE=NE+1
- . Q
- ; Get vital type iens
- F GMVLOOP="BP","CG","CVP","HT","P","PN","PO2","R","T","WT" D
- .S GMVIEN=$O(^GMRD(120.51,"C",GMVLOOP,0))
- .Q:'GMVIEN
- .S GMVTYPE(GMVIEN)=""
- .Q
- K ^TMP($J)
- ; get records from Clinical Observations
- I $T(QRYDATE^MDCLIO1)]"" D
- .D QRYDATE^MDCLIO1("^TMP($J)",3070101,$$FMADD^XLFDT($$NOW^XLFDT(),,24))
- .S GMVLOOP=0
- .F S GMVLOOP=$O(^TMP($J,GMVLOOP)) Q:'GMVLOOP D
- ..S DAS=^TMP($J,GMVLOOP)
- ..Q:DAS=""
- ..D CLIO^GMVUTL(.GMVCLIO,DAS)
- ..S GMVCLIO(0)=$G(GMVCLIO(0))
- ..I GMVCLIO(0)="" S NE1=NE1+1 Q
- ..I $P(GMVCLIO(0),U,1)'?7N1"."1.6N S NE1=NE1+1 Q
- ..I $P(GMVCLIO(0),U,2)'>0 S NE1=NE1+1 Q
- ..I $P(GMVCLIO(0),U,3)'>0 S NE1=NE1+1 Q
- ..I '$D(GMVTYPE($P(GMVCLIO(0),U,3))) Q ;not a vitals entry
- ..S DATE=$P(GMVCLIO(0),U,1),DFN=$P(GMVCLIO(0),U,2),VT=$P(GMVCLIO(0),U,3)
- ..S ^PXRMINDX(120.5,"IP",VT,DFN,DATE,DAS)=""
- ..S ^PXRMINDX(120.5,"PI",DFN,VT,DATE,DAS)=""
- ..S NE=NE+1
- ..Q
- .Q
- S END=$H
- S TEXT=" VITAL MEASUREMENTS entries indexed: "_NE
- D BMES^XPDUTL(TEXT)
- S TEXT=" Bad entries not indexed: "_NE1
- D MES^XPDUTL(TEXT)
- S TEXT="Entered-in-Error entries not indexed: "_NE2
- D MES^XPDUTL(TEXT)
- S TEXT=" "
- D MES^XPDUTL(TEXT)
- D DETIME^PXRMSXRM(START,END)
- ;Send a MailMan message with the results.
- D COMMSG^PXRMSXRM(GLOBAL,START,END,NE,NERROR)
- S ^PXRMINDX(120.5,"GLOBAL NAME")=$$GET1^DID(120.5,"","","GLOBAL NAME")
- S ^PXRMINDX(120.5,"BUILT BY")=DUZ
- S ^PXRMINDX(120.5,"DATE BUILT")=$$NOW^XLFDT
- Q
- ;
- SVITAL(X,DA) ; Set ACR index entry
- ; X(1)=DATE/TIME, X(2)=DFN, X(3)=VITAL TYPE, X(4)=ENTERED IN ERROR
- ; Do not index entries that are marked as entered-in-error.
- I $G(X(4)) Q
- S ^PXRMINDX(120.5,"IP",X(3),X(2),X(1),DA)=""
- S ^PXRMINDX(120.5,"PI",X(2),X(3),X(1),DA)=""
- Q
- ;
- KVITAL(X,DA) ; Delete ACR index entry
- K ^PXRMINDX(120.5,"IP",X(3),X(2),X(1),DA)
- K ^PXRMINDX(120.5,"PI",X(2),X(3),X(1),DA)
- Q
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HGMVPXRM 7684 printed Jan 18, 2025@03:00:58 Page 2
- GMVPXRM ;HIOFO/FT-API to return FILE 120.5 data ;01/20/09 13:11
- +1 ;;5.0;GEN. MED. REC. - VITALS;**6,23**;Oct 31, 2002;Build 25
- +2 ;
- +3 ; This routine uses the following IAs:
- +4 ; #4113 - ^PXRMSXRM routine (controlled)
- +5 ; #4114 - ^PXRMINDX global (controlled)
- +6 ; #5076 - ^MDCLIO1 calls (private)
- +7 ; #10103 - ^XLFDT calls (supported)
- +8 ; #10040 - FILE 44 references (supported)
- +9 ; #10141 - ^XPDUTL calls (supported)
- +10 ;
- +11 ; Entry point(s) available for use by other packages:
- +12 ; EN is documented in IA #3647
- +13 ; VITALS is documented in IA #3647
- +14 ;
- EN(GMVDATA,GMVIEN,GMVIB) ; Returns data for a single FILE 120.5 entry.
- +1 ; Input:
- +2 ; GMVDATA = Array name passed by reference (required)
- +3 ; GMVIEN = IEN for FILE 120.5 or GUID for FILE 704.117 (required)
- +4 ; GMVIB = "I" for Internal value only
- +5 ; "B" for Internal and External values (default = B)
- +6 ;
- +7 ; If GMVIB = "I", then
- +8 ; Output = GMVDATA(n)=internal value
- +9 ;
- +10 ; If GMVIB = "B", then
- +11 ; Output: GMVDATA(n)=internal value^external value
- +12 ;
- +13 ; where:
- +14 ; GMVDATA(1)=.01 (DATE/TIME VITALS TAKEN)
- +15 ; GMVDATA(2)=.02 (PATIENT)
- +16 ; GMVDATA(3)=.03 (VITAL TYPE)
- +17 ; GMVDATA(4)=.04 (DATE/TIME VITALS ENTERED)
- +18 ; GMVDATA(5)=.05 (HOSPITAL LOCATION)
- +19 ; GMVDATA(6)=.06 (ENTERED BY)
- +20 ; GMVDATA(7)=1.2 (RATE)
- +21 ; GMVDATA(8)=1.4 (SUPPLEMENTAL O2)
- +22 ; GMVDATA(9)=2 (ENTERED IN ERROR)
- +23 ; GMVDATA(10)=3 (ERROR ENTERED BY)
- +24 ; GMVDATA(11,n)=4 (REASON ENTERED IN ERROR) <--multiple
- +25 ; GMVDATA(12,n)=5 (QUALIFIER) <--multiple
- +26 ;
- +27 ; If the lookup failed then: GMVDATA(1)=-1^error text
- +28 ;
- +29 NEW GMVCNT,GMVIEN1,GMVLIST,GMVLEN,GMVLOOP,GMVTEMP,TEMP,TEMP2,TEMP5,TP,EM
- +30 IF $GET(GMVIB)'="I"
- IF $GET(GMVIB)'="B"
- SET GMVIB="B"
- +31 IF $GET(GMVIEN)=""
- SET GMVDATA(1)="-1^Record Number is Null"
- QUIT
- +32 IF GMVIEN=+GMVIEN
- Begin DoDot:1
- +33 DO F1205^GMVUTL(.GMVTEMP,GMVIEN,1)
- +34 SET TEMP=$GET(GMVTEMP(0))
- +35 SET TEMP2=$GET(GMVTEMP(2))
- +36 SET TEMP5=$GET(GMVTEMP(5))
- +37 QUIT
- End DoDot:1
- +38 IF GMVIEN'=+GMVIEN
- Begin DoDot:1
- +39 DO CLIO^GMVUTL(.GMVTEMP,GMVIEN)
- +40 SET TEMP=$GET(GMVTEMP(0))
- +41 SET TEMP2=$GET(GMVTEMP(2))
- +42 SET TEMP5=$GET(GMVTEMP(5))
- +43 QUIT
- End DoDot:1
- +44 IF TEMP=""
- Begin DoDot:1
- +45 SET GMVDATA(1)="-1^The entry does not exist"
- +46 QUIT
- End DoDot:1
- QUIT
- +47 ;
- +48 SET GMVDATA(1)=$PIECE(TEMP,U,1)
- +49 SET GMVDATA(2)=$PIECE(TEMP,U,2)
- +50 SET GMVDATA(3)=$PIECE(TEMP,U,3)
- +51 SET GMVDATA(4)=$PIECE(TEMP,U,4)
- +52 SET GMVDATA(5)=$PIECE(TEMP,U,5)
- +53 IF '$DATA(^SC(+GMVDATA(5),0))
- SET GMVDATA(5)=0
- +54 SET GMVDATA(6)=$PIECE(TEMP,U,6)
- +55 SET GMVDATA(7)=$PIECE(TEMP,U,8)
- +56 SET GMVDATA(8)=$PIECE(TEMP,U,10)
- +57 SET GMVDATA(9)=$PIECE(TEMP2,U,1)
- +58 SET GMVDATA(10)=$PIECE(TEMP2,U,2)
- +59 SET GMVCNT=0
- +60 SET GMVLIST=$PIECE(TEMP2,U,3)
- +61 SET GMVLEN=$LENGTH(GMVLIST,"~")
- +62 FOR GMVCNT=1:1:GMVLEN
- Begin DoDot:1
- +63 SET GMVDATA(11,GMVCNT)=$PIECE(GMVLIST,"~",GMVCNT)
- +64 QUIT
- End DoDot:1
- +65 IF GMVCNT=0
- SET GMVDATA(11,1)=""
- +66 SET GMVLIST=$GET(TEMP5)
- SET GMVCNT=0
- +67 FOR GMVLOOP=1:1
- if $PIECE(GMVLIST,U,GMVLOOP)=""
- QUIT
- Begin DoDot:1
- +68 SET GMVCNT=GMVCNT+1
- +69 SET GMVDATA(12,GMVCNT)=$PIECE(GMVLIST,U,GMVLOOP)
- +70 QUIT
- End DoDot:1
- +71 IF GMVCNT=0
- SET GMVDATA(12,1)=""
- +72 ;
- +73 if GMVIB="I"
- QUIT
- +74 ;
- +75 SET GMVDATA(1)=$PIECE(GMVDATA(1),U,1)_U_$$EXTERNAL^DILFD(120.5,.01,"",$PIECE(GMVDATA(1),U,1),.EM)
- +76 SET GMVDATA(2)=$PIECE(GMVDATA(2),U,1)_U_$$EXTERNAL^DILFD(120.5,.02,"",$PIECE(GMVDATA(2),U,1),.EM)
- +77 SET GMVDATA(3)=$PIECE(GMVDATA(3),U,1)_U_$$EXTERNAL^DILFD(120.5,.03,"",$PIECE(GMVDATA(3),U,1),.EM)
- +78 SET GMVDATA(4)=$PIECE(GMVDATA(4),U,1)_U_$$EXTERNAL^DILFD(120.5,.04,"",$PIECE(GMVDATA(4),U,1),.EM)
- +79 SET GMVDATA(5)=$PIECE(GMVDATA(5),U,1)_U_$$EXTERNAL^DILFD(120.5,.05,"",$PIECE(GMVDATA(5),U,1),.EM)
- +80 SET GMVDATA(6)=$PIECE(GMVDATA(6),U,1)_U_$$EXTERNAL^DILFD(120.5,.06,"",$PIECE(GMVDATA(6),U,1),.EM)
- +81 ;same
- SET GMVDATA(7)=$PIECE(GMVDATA(7),U,1)_U_$PIECE(GMVDATA(7),U,1)
- +82 ;same
- SET GMVDATA(8)=$PIECE(GMVDATA(8),U,1)_U_$PIECE(GMVDATA(8),U,1)
- +83 SET GMVDATA(9)=$PIECE(GMVDATA(9),U,1)_U_$$EXTERNAL^DILFD(120.5,2,"",$PIECE(GMVDATA(9),U,1),.EM)
- +84 SET GMVDATA(10)=$PIECE(GMVDATA(10),U,1)_U_$$EXTERNAL^DILFD(120.5,3,"",$PIECE(GMVDATA(10),U,1),.EM)
- +85 ;
- +86 ;loop through entered-in-error reason multiple
- +87 SET (GMVCNT,GMVIEN1)=0
- +88 FOR
- SET GMVIEN1=$ORDER(GMVDATA(11,GMVIEN1))
- if 'GMVIEN1
- QUIT
- Begin DoDot:1
- +89 SET TP=+$PIECE(GMVDATA(11,GMVIEN1),U,1)
- +90 if 'TP
- QUIT
- +91 SET GMVDATA(11,GMVIEN1)=TP_U_$$EXTERNAL^DILFD(120.506,.01,"",TP,.EM)
- +92 SET GMVCNT=1
- +93 QUIT
- End DoDot:1
- +94 IF GMVCNT=0
- SET GMVDATA(11,1)="^"
- +95 ;loop through qualifier multiple
- +96 SET (GMVCNT,GMVIEN1)=0
- +97 FOR
- SET GMVIEN1=$ORDER(GMVDATA(12,GMVIEN1))
- if 'GMVIEN1
- QUIT
- Begin DoDot:1
- +98 SET TP=+$PIECE(GMVDATA(12,GMVIEN1),U,1)
- +99 if 'TP
- QUIT
- +100 SET GMVDATA(12,GMVIEN1)=TP_U_$PIECE($GET(^GMRD(120.52,+TP,0)),U,1)
- +101 SET GMVCNT=1
- +102 QUIT
- End DoDot:1
- +103 IF GMVCNT=0
- SET GMVDATA(12,1)="^"
- +104 QUIT
- +105 ;
- VITALS ; This entry point is for use by the Clinical Reminders package
- +1 ; to re-index the ACR cross-reference nodes for FILE 120.5.
- +2 ;
- +3 ; a) This entry point kills the ACR cross-reference nodes for ^PXRMINDX(120.5).
- +4 ; b) Re-builds the ACR cross-reference nodes.
- +5 ; c) Calls the Clinical Reminders package to generate a mail message
- +6 ; summarizing the rebuilding of the ACR cross-reference.
- +7 ;
- +8 NEW DAS,DATE,DFN,END,ENTRIES,ETEXT,GLOBAL,IND,NE,NE1,NE2,NERROR
- +9 NEW START,TEMP,TENP,TEXT,VT,GMVCLIO,GMVTYPE,GMVLOOP,GMVIEN
- +10 SET GLOBAL=$$GET1^DID(120.5,"","","GLOBAL NAME")
- +11 ; Don't leave any old cross-reference nodes around.
- +12 KILL ^PXRMINDX(120.5)
- +13 SET ENTRIES=$PIECE(^GMR(120.5,0),U,4)
- +14 SET TENP=ENTRIES/10
- +15 SET TENP=+$PIECE(TENP,".",1)
- +16 DO BMES^XPDUTL("Building index for VITALS DATA.")
- +17 ;S TEXT="There are "_ENTRIES_" entries to process."
- +18 ;D MES^XPDUTL(TEXT)
- +19 SET START=$HOROLOG
- +20 SET (DAS,IND,NE,NE1,NE2,NERROR)=0
- +21 FOR
- SET DAS=+$ORDER(^GMR(120.5,DAS))
- if DAS=0
- QUIT
- Begin DoDot:1
- +22 SET IND=IND+1
- +23 IF IND#TENP=0
- Begin DoDot:2
- +24 SET TEXT="Processing entry "_IND
- +25 DO MES^XPDUTL(TEXT)
- End DoDot:2
- +26 IF IND#10000=0
- WRITE "."
- +27 SET TEMP=^GMR(120.5,DAS,0)
- +28 IF $PIECE(TEMP,U,1)'?7N1"."1.6N
- SET NE1=NE1+1
- QUIT
- +29 IF $PIECE(TEMP,U,2)'>0
- SET NE1=NE1+1
- QUIT
- +30 IF $PIECE(TEMP,U,3)'>0
- SET NE1=NE1+1
- QUIT
- +31 SET DATE=$PIECE(TEMP,U,1)
- SET DFN=$PIECE(TEMP,U,2)
- SET VT=$PIECE(TEMP,U,3)
- +32 ;If this entry is marked as entered-in-error do not index it.
- +33 IF $PIECE($GET(^GMR(120.5,DAS,2)),U,1)
- SET NE2=NE2+1
- QUIT
- +34 SET ^PXRMINDX(120.5,"IP",VT,DFN,DATE,DAS)=""
- +35 SET ^PXRMINDX(120.5,"PI",DFN,VT,DATE,DAS)=""
- +36 SET NE=NE+1
- +37 QUIT
- End DoDot:1
- +38 ; Get vital type iens
- +39 FOR GMVLOOP="BP","CG","CVP","HT","P","PN","PO2","R","T","WT"
- Begin DoDot:1
- +40 SET GMVIEN=$ORDER(^GMRD(120.51,"C",GMVLOOP,0))
- +41 if 'GMVIEN
- QUIT
- +42 SET GMVTYPE(GMVIEN)=""
- +43 QUIT
- End DoDot:1
- +44 KILL ^TMP($JOB)
- +45 ; get records from Clinical Observations
- +46 IF $TEXT(QRYDATE^MDCLIO1)]""
- Begin DoDot:1
- +47 DO QRYDATE^MDCLIO1("^TMP($J)",3070101,$$FMADD^XLFDT($$NOW^XLFDT(),,24))
- +48 SET GMVLOOP=0
- +49 FOR
- SET GMVLOOP=$ORDER(^TMP($JOB,GMVLOOP))
- if 'GMVLOOP
- QUIT
- Begin DoDot:2
- +50 SET DAS=^TMP($JOB,GMVLOOP)
- +51 if DAS=""
- QUIT
- +52 DO CLIO^GMVUTL(.GMVCLIO,DAS)
- +53 SET GMVCLIO(0)=$GET(GMVCLIO(0))
- +54 IF GMVCLIO(0)=""
- SET NE1=NE1+1
- QUIT
- +55 IF $PIECE(GMVCLIO(0),U,1)'?7N1"."1.6N
- SET NE1=NE1+1
- QUIT
- +56 IF $PIECE(GMVCLIO(0),U,2)'>0
- SET NE1=NE1+1
- QUIT
- +57 IF $PIECE(GMVCLIO(0),U,3)'>0
- SET NE1=NE1+1
- QUIT
- +58 ;not a vitals entry
- IF '$DATA(GMVTYPE($PIECE(GMVCLIO(0),U,3)))
- QUIT
- +59 SET DATE=$PIECE(GMVCLIO(0),U,1)
- SET DFN=$PIECE(GMVCLIO(0),U,2)
- SET VT=$PIECE(GMVCLIO(0),U,3)
- +60 SET ^PXRMINDX(120.5,"IP",VT,DFN,DATE,DAS)=""
- +61 SET ^PXRMINDX(120.5,"PI",DFN,VT,DATE,DAS)=""
- +62 SET NE=NE+1
- +63 QUIT
- End DoDot:2
- +64 QUIT
- End DoDot:1
- +65 SET END=$HOROLOG
- +66 SET TEXT=" VITAL MEASUREMENTS entries indexed: "_NE
- +67 DO BMES^XPDUTL(TEXT)
- +68 SET TEXT=" Bad entries not indexed: "_NE1
- +69 DO MES^XPDUTL(TEXT)
- +70 SET TEXT="Entered-in-Error entries not indexed: "_NE2
- +71 DO MES^XPDUTL(TEXT)
- +72 SET TEXT=" "
- +73 DO MES^XPDUTL(TEXT)
- +74 DO DETIME^PXRMSXRM(START,END)
- +75 ;Send a MailMan message with the results.
- +76 DO COMMSG^PXRMSXRM(GLOBAL,START,END,NE,NERROR)
- +77 SET ^PXRMINDX(120.5,"GLOBAL NAME")=$$GET1^DID(120.5,"","","GLOBAL NAME")
- +78 SET ^PXRMINDX(120.5,"BUILT BY")=DUZ
- +79 SET ^PXRMINDX(120.5,"DATE BUILT")=$$NOW^XLFDT
- +80 QUIT
- +81 ;
- SVITAL(X,DA) ; Set ACR index entry
- +1 ; X(1)=DATE/TIME, X(2)=DFN, X(3)=VITAL TYPE, X(4)=ENTERED IN ERROR
- +2 ; Do not index entries that are marked as entered-in-error.
- +3 IF $GET(X(4))
- QUIT
- +4 SET ^PXRMINDX(120.5,"IP",X(3),X(2),X(1),DA)=""
- +5 SET ^PXRMINDX(120.5,"PI",X(2),X(3),X(1),DA)=""
- +6 QUIT
- +7 ;
- KVITAL(X,DA) ; Delete ACR index entry
- +1 KILL ^PXRMINDX(120.5,"IP",X(3),X(2),X(1),DA)
- +2 KILL ^PXRMINDX(120.5,"PI",X(2),X(3),X(1),DA)
- +3 QUIT