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

SCMCHLL.m

Go to the documentation of this file.
  1. SCMCHLL ;BP/DJB - PCMM HL7 Log Transmission ; 3/2/00 12:59pm
  1. ;;5.3;Scheduling;**210,272,1015**;AUG 13, 1993;Build 21
  1. ;
  1. LOG ;Record HL7 messages in PCMM HL7 TRANSMISSION LOG file.
  1. ;Parse the HL7 array and build an array in ^TMP("PCMM","LOG",$J) and
  1. ;use to record transmissions.
  1. ;
  1. NEW FS,MSGID,TDATE
  1. ;
  1. ;Initialize variables
  1. KILL ^TMP("PCMM","LOG",$J)
  1. S FS=HL("FS") ;........................Field separator
  1. S MSGID=$P(HLRESLT,"^",1) Q:'MSGID ;..Message ID
  1. S TDATE=$$NOW^XLFDT ;..................Transmission date
  1. S ^TMP("PCMM","LOG",$J,"MSGID")=MSGID
  1. S ^TMP("PCMM","LOG",$J,"DT")=TDATE
  1. ;
  1. D GETDATA ;..Get data from HL7 message array
  1. D ADD ;......Create entry in Transmission Log and stuff data
  1. ;
  1. KILL ^TMP("PCMM","LOG",$J)
  1. Q
  1. ;
  1. GETDATA ;Go thru HL7 array and build array of data in ^TMP("PCMM","LOG",$J).
  1. NEW CNT,DATA,DFN,SEG,SEQ,ZPCID
  1. S CNT=""
  1. F S CNT=$O(^TMP("HLS",$J,CNT)) Q:'CNT D ;
  1. . S DATA=$G(^(CNT)) Q:DATA=""
  1. . S SEG=$P(DATA,FS,1)
  1. . ;
  1. . ;PID segment - Get patient DFN
  1. . I SEG="PID" D Q
  1. . . S DFN=+$P(DATA,U,4)
  1. . . S ^TMP("PCMM","LOG",$J,"DFN")=DFN
  1. . ;
  1. . ;ZPC segment - Get sequence # and ZPC ID.
  1. . I SEG="ZPC" D Q
  1. . . S SEQ=$P(DATA,U,8)
  1. . . S ZPCID=$P(DATA,U,2)
  1. . . S ^TMP("PCMM","LOG",$J,"ZPC",SEQ)=ZPCID
  1. Q
  1. ;
  1. ADD ;Process data array built in GETDATA
  1. NEW TRANI
  1. S TRANI=$$CREATE(^TMP("PCMM","LOG",$J,"MSGID")) ;..Create new entry
  1. Q:+TRANI<0
  1. D STORE(TRANI) ;..Store transmission info
  1. Q
  1. ;
  1. CREATE(MSGID) ;Create new entry
  1. ; Input: Message Control ID
  1. ;Output: Pointer to entry in PCMM HL7 TRANSMISSION LOG (#404.471)
  1. ; -1^Error - Unable to create entry
  1. ;
  1. NEW SCERR,SCFDA,SCIEN
  1. S SCFDA(404.471,"+1,",.01)=MSGID
  1. D UPDATE^DIE("E","SCFDA","SCIEN","SCERR")
  1. I $D(SCERR) Q "-1^Unable to create entry in file #404.471"
  1. Q SCIEN(1)
  1. ;
  1. STORE(TRANI) ;Store data
  1. ;
  1. ; Input: TRANI - Pointer PCMM HL7 TRANSMISSION LOG file (#404.471)
  1. ;Output: None
  1. ;
  1. NEW CNT,SCERR,SCIEN,SCIENS,SCIENS1,SCFDA,SEQ,ZPCID
  1. ;
  1. ;Check input
  1. Q:'+$G(TRANI)
  1. Q:'$D(^SCPT(404.471,TRANI))
  1. ;
  1. S SCIENS=TRANI_","
  1. S SCFDA(404.471,SCIENS,.02)=$G(^TMP("PCMM","LOG",$J,"DFN")) ;Patient
  1. S SCFDA(404.471,SCIENS,.03)=$G(^TMP("PCMM","LOG",$J,"DT")) ;.Date
  1. S SCFDA(404.471,SCIENS,.04)="T" ;........................Status
  1. I $G(WORK),'SCFDA(404.471,SCIENS,.02) D
  1. .S SCFDA(404.471,SCIENS,.07)=$G(VARPTR)
  1. .I $G(VARPTR)[404.52 S SCFDA(404.471,SCIENS,.08)=$P($G(^SCTM(404.52,+VARPTR,0)),U,3)
  1. D FILE^DIE("I","SCFDA","SCERR")
  1. KILL SCFDA,SCERR
  1. ;
  1. ;Fill in ZPC multiple
  1. S (CNT,SEQ)=0
  1. F S SEQ=$O(^TMP("PCMM","LOG",$J,"ZPC",SEQ)) Q:'SEQ D ;
  1. . S ZPCID=$$CONVERT^SCMCHLRI($G(^(SEQ)))
  1. . S CNT=CNT+1
  1. . S SCIENS1="+"_CNT_","_SCIENS
  1. . S SCFDA(404.47141,SCIENS1,.01)=SEQ
  1. . S SCFDA(404.47141,SCIENS1,.02)=ZPCID
  1. . D UPDATE^DIE("","SCFDA","SCIEN","SCERR")
  1. . ;I $D(SCERR) ZW SCERR
  1. Q