Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: GMVDCSAV

GMVDCSAV.m

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