GMVDCSAV ;HOIFO/DAD,FT-VITALS COMPONENT: SAVE DATA ; 5/8/08
 ;;5.0;GEN. MED. REC. - VITALS;**9,3,25,23**;Oct 31, 2002;Build 25
 ;
 ; This routine uses the following IAs:
 ;  #4114 - ^PXRMINDX global     (controlled)
 ; #10103 - ^XLFDT calls         (supported)
 ;
 ; This routine supports the following IAs:
 ; #3996 - GMV ADD VM RPC called at EN1  (private)
 ; 
 ; 01/28/2005 KAM GMRV*5*9 Record midnight with 1 second added
 ;                         Stop adding second on multiple patent entry
 ;
EN1(RESULT,GMVDATA) ; GMV ADD VM [RPC entry point]
 ; Saves vitals data
 ; GMVDATA has the following data:
 ; piece1^piece2^piece3^piece4^piece5
 ; where:
 ;   piece1 = date/time in FileMan internal format
 ;   piece2 = patient number from FILE 2 (i.e., DFN)
 ;   piece3 = vital type, a semi-colon, the reading, a semi-colon, and
 ;            oxygen flow rate and percentage values [optional] (e.g.,
 ;            21;99;1 l/min 90%)
 ;   piece4 = hospital location (FILE 44) pointer value
 ;   piece5 = FILE 200 user number (i.e., DUZ), an asterisk, and the 
 ;            qualifier (File 120.52) internal entry numbers separated by
 ;            colons (e.g., 547*50:65)
 ; Example:
 ;  > S GMVDATA="3051011.1635^134^1;120/80;^67^87*2:38:50:75"
 ;  > D EN1^GMVDCSAV(.RESULT,GMVDATA)
 ;
 
GMVCNT,GMVDFN,GMVDTDUN,GMVDTENT,GMVENTBY,GMVFDA,GMVHOSPL
 
GMVLOOP,GMVMSG,GMVQUALS,GMVRES,GMVIEN,GMVVMEAS,GMVVQUAL,GMVVTYP
 
QUALTWO
 
Q
QUALTWO ; Add a new entry to FILE 120.5
 
GMVFDA
 
GMVVMEAS=$P(GMVDATA,"*",1)
 
GMVDTDUN=+$P(GMVVMEAS,"^",1) ; Date time
 ;01/28/2005 KAM GMRV*5*9 Added next Line PAL-0105-60940 
 
+$P(GMVDTDUN,".",2)'>0 GMVDTDUN=$$FMADD^XLFDT(GMVDTDUN,"","","",1)
 
+$P(GMVDTDUN,".",2)=24 GMVDTDUN=$$FMADD^XLFDT(GMVDTDUN,"","","",1)
 
GMVDFN=+$P(GMVVMEAS,"^",2) ; Patient DFN
 
GMVVTYP=$P(GMVVMEAS,"^",3) ; Vital type
 
GMVDTDUN=$$CHKDT(GMVDTDUN,$P(GMVVTYP,";",1))
 
GMVDTENT=$$NOW^XLFDT ; Current date time
 
GMVHOSPL=+$P(GMVVMEAS,"^",4) ; Hospital
 
GMVENTBY=+$P(GMVVMEAS,"^",5) ; DUZ
 
GMVFDA(120.5,"+1,",.01)=GMVDTDUN ; Date time taken
 
GMVFDA(120.5,"+1,",.02)=GMVDFN   ; Patient
 
GMVFDA(120.5,"+1,",.03)=+$P(GMVVTYP,";",1)   ; Vital Type
 
GMVFDA(120.5,"+1,",.04)=GMVDTENT  ; Date Time entered
 
GMVFDA(120.5,"+1,",.05)=GMVHOSPL  ; Hospital
 
GMVFDA(120.5,"+1,",.06)=GMVENTBY  ; Entered by (DUZ)
 
GMVFDA(120.5,"+1,",1.2)=$P(GMVVTYP,";",2) ; Rate
 
GMVFDA(120.5,"+1,",1.4)=$P(GMVVTYP,";",3) ; Sup 02
 
GMVIEN=""
 
UPDATE^DIE("","GMVFDA","GMVIEN"),FMERROR
 
GMVCNT=1
 
GMVQUALS=$P(GMVDATA,"*",2)
 
GMVLOOP=1:1:$L(GMVQUALS,":")+1 D
 
GMVVQUAL=$P(GMVQUALS,":",GMVLOOP)
 . 
Q:GMVVQUAL=""
 
GMVCNT=GMVCNT+1
 . 
ADDQUAL^GMVGETQ(.GMVRES,GMVIEN(1)_"^"_GMVVQUAL)
 . 
Q
 Q 
 
;
CHKDT(GMVDT,GMVSAV) ;Check if there is a vital entered for that date and time.
 ; If there is then add one second to the date/time until you find a
 ; date/time not used.
 
GMVFLAG
 
GMVFLAG=0
 
F  Q:GMVFLAG  D
 
.'$D(^PXRMINDX(120.5,"PI",GMVDFN,GMVSAV,GMVDT)) GMVFLAG=1 Q
 
.GMVDT=$$FMADD^XLFDT(GMVDT,"","","",1)
 .
Q
 Q 
GMVDT
 
;
MSG(X) ; *** Add a line to the message array ***
 
(GMVMSG,RESULT(-1))=1+$G(RESULT(-1),0)
 
RESULT(GMVMSG)=X
 
I $P(X,":")="ERROR" RESULT(0)="ERROR"
 
Q
 
;
FMERROR ;
 
I $O(^TMP("DIERR",$J,0))>0 D
 
GMVER1,GMVER2
 
GMVER1=0
 . 
F  S GMVER1=$O(^TMP("DIERR",$J,GMVER1)) Q:GMVER1'>0  D
 
.. GMVER2=0
 .. 
F  S GMVER2=$O(^TMP("DIERR",$J,GMVER1,"TEXT",GMVER2)) Q:GMVER2'>0  D
 
... MSG("ERROR: "_$G(^TMP("DIERR",$J,GMVER1,"TEXT",GMVER2)))
 ... 
Q
 
.. Q
 
Q
 D 
CLEAN^DILF
 
Q