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

LRVRMI3.m

Go to the documentation of this file.
  1. LRVRMI3 ;DALOI/STAFF - LAB MICRO LEDI INTERFACE ;09/07/16 08:09
  1. ;;5.2;LAB SERVICE;**350,427,453,474**;Sep 27, 1994;Build 14
  1. ;
  1. ; Part of Micro LEDI interface. It is a continuation of ^LRVRMI4 and ^LRVRMI2. Processes data in the temp global ^TMP("LRMI")
  1. ; and stores it into the appropriate sections of the Lab Data Microbiology file (#63.05).
  1. ;
  1. ;
  1. NODE(LRNODE) ; Process similar multiples - nodes 15,19-31
  1. ; Call with LRNODE = node in MI subscript to process
  1. ;
  1. N DIERR,IEN,LRCMT,LRFDA,LRFDAIEN,LRFILE,LRERR,LRIEN,LRMSG,LRPL,LRX,X
  1. ; Mycology smear/prep^^^^Preliminary bacteriology comment^Preliminary virology comment^Preliminary parasite comment^Preliminary mycology comment^Preliminary TB comment^
  1. ; Parasitology smear/prep^Bacteriology smear/prep^Bacteriology test^Parasite test^Mycology test^TB test^Virology test^Sterility test
  1. ;
  1. S LRFILE=$P("63.371^^^^63.06^63.431^63.1^63.11^63.18^63.341^63.291^63.061^63.361^63.111^63.181^63.432^63.292^","^",LRNODE-14)
  1. M LRCMT=^LR(LRDFN,"MI",LRIDT,LRNODE)
  1. ;
  1. S IEN=0
  1. F S IEN=$O(^TMP("LRMI",$J,LRDFN,"MI",LRIDT,LRNODE,IEN)) Q:IEN<1 D
  1. . S LRX=$G(^TMP("LRMI",$J,LRDFN,"MI",LRIDT,LRNODE,IEN,0)),LRX=$S(LRX'="":LRX,1:" ")
  1. . I LRX'=" ",$$DUPCHK^LRVRMI3(LRLL,LRPROF,.LRCMT,LRX) Q
  1. . S LRFDA(1,LRFILE,"+"_IEN_","_LRIDT_","_LRDFN_",",.01)=LRX
  1. . ;S LRFDAIEN(IEN)=IEN
  1. . ;
  1. . ; if result came across in NTE, PL and status info will be under ^(0) node
  1. . I $D(^TMP("LRMI",$J,LRDFN,"MI",LRIDT,LRNODE,0)) D ;
  1. . . S LRX=$G(^TMP("LRMI",$J,LRDFN,"MI",LRIDT,LRNODE,0))
  1. . . S X=$P(LRX,"^",4)
  1. . . D STAT4CMT(LRFILE,X,.LRSTATUS)
  1. . . I $P(LRX,"^") S LRPL(IEN)=$P(LRX,"^")
  1. . ;
  1. . ; if result came across in OBX, PL and status info will be under ^(IEN,0,0) node
  1. . I $D(^TMP("LRMI",$J,LRDFN,"MI",LRIDT,LRNODE,IEN,0,0)) D ;
  1. . . S LRX=$G(^TMP("LRMI",$J,LRDFN,"MI",LRIDT,LRNODE,IEN,0,0))
  1. . . S X=$P(LRX,"^",4)
  1. . . D STAT4CMT(LRFILE,X,.LRSTATUS)
  1. . . I $P(LRX,"^") S LRPL(IEN)=$P(LRX,"^")
  1. . ;
  1. ;
  1. I '$D(LRFDA) Q
  1. ;
  1. D UPDATE^DIE("","LRFDA(1)","LRFDAIEN","LRERR")
  1. S IEN=0
  1. F S IEN=$O(LRPL(IEN)) Q:'IEN D
  1. . I $G(LRFDAIEN(IEN)) D SETPL^LRRPLUA(LRDFN_",MI,"_LRIDT_","_LRNODE_","_LRFDAIEN(IEN),LRPL(IEN))
  1. ;
  1. ;
  1. ; Update d/t approved and user approving
  1. S LRX=$$RPTDT(LRDFN,LRIDT,LRNODE,LRNOW,$S($G(LRDUZ):LRDUZ,1:$G(DUZ)))
  1. ;
  1. Q
  1. ;
  1. ;
  1. SETPL(NODE) ; Setup LRPL array
  1. ; Call with NODE = node in MI subscript to retrieve the performing lab
  1. ;
  1. N LRX
  1. S LRX=^TMP("LRMI",$J,LRDFN,"MI",LRIDT,NODE,IEN,0,0)
  1. I $P(LRX,"^") S LRPL(IEN)=$P(LRX,"^")
  1. Q
  1. ;
  1. ;
  1. STOREPL(NODE) ; Set performing lab
  1. ; Call with NODE = node in MI subscript to retrieve the performing lab
  1. N IEN
  1. S IEN=0
  1. F S IEN=$O(LRPL(IEN)) Q:'IEN I $G(LRFDAIEN(IEN)) D SETPL^LRRPLUA(LRDFN_",MI,"_LRIDT_","_NODE_","_LRFDAIEN(IEN),LRPL(IEN))
  1. Q
  1. ;
  1. ;
  1. DUPCHK(LRLL,LRPROF,LRCMT,LRCOM) ; Check for duplicates - comment stripped if spaces, force to upper case unless
  1. ; flag set to store duplicates (Field #2.2 of PROFILE multiple in file #68.2)
  1. ;
  1. ; Call with LRLL = load/work list ien
  1. ; LRPROF = profile ien in load/worklist
  1. ; LRCMT = array containing current comments on file
  1. ; LRCOM = new comment to check
  1. ;
  1. ; Returns LRDUP = 0 (no duplicate), 1 (duplicate)
  1. ;
  1. N LRDUP,LRI,LRX,LRY
  1. S LRDUP=0
  1. I '$P($G(^LRO(68.2,LRLL,10,+$G(LRPROF),0)),U,4) D
  1. . S LRI=0,LRY=$TR(LRCOM," ",""),LRY=$$UP^XLFSTR(LRY)
  1. . F S LRI=$O(LRCMT(LRI)) Q:'LRI D Q:LRDUP
  1. . . S LRX=$P(LRCMT(LRI,0),U),LRX=$TR(LRX," ",""),LRX=$$UP^XLFSTR(LRX)
  1. . . I LRX=LRY S LRDUP=1
  1. Q LRDUP
  1. ;
  1. ;
  1. STAT4CMT(FILE,STAT,LRSTATUS) ; Calculate status for comment nodes (eg BACT SMEAR)
  1. ; Inputs
  1. ; FILE: The file # of the comment field in #63.
  1. ; STAT: The status (eg F)
  1. ; LRSTATUS:<byref> Input and Output
  1. ; Outputs
  1. ; LRSTATUS:
  1. N SUBF,FLD
  1. S (FLD,SUBF)=""
  1. ;
  1. I FILE=63.291 S SUBF=63.05,FLD=11.5 ; Bact Smear
  1. I FILE=63.341 S SUBF=63.05,FLD=15 ; Para Smear
  1. I FILE=63.371 S SUBF=63.05,FLD=19 ; Myco Smear
  1. I FILE=63.06 S SUBF=63.05,FLD=11.5 ; preliminary bacteria comment
  1. I FILE=63.431 S SUBF=63.05,FLD=34 ; preliminary virus comment
  1. I FILE=63.1 S SUBF=63.05,FLD=15 ; preliminary parasite comment
  1. I FILE=63.11 S SUBF=63.05,FLD=19 ; preliminary mycology comment
  1. I FILE=63.18 S SUBF=63.05,FLD=23 ; preliminary TB comment
  1. I FILE=63.061 S SUBF=63.05,FLD=11.5 ; bacteria tests
  1. I FILE=63.361 S SUBF=63.05,FLD=15 ; parasitology tests
  1. I FILE=63.111 S SUBF=63.05,FLD=19 ; mycology tests
  1. I FILE=63.181 S SUBF=63.05,FLD=23 ; TB tests
  1. I FILE=63.432 S SUBF=63.05,FLD=34 ; virology tests
  1. I FILE=63.292 S SUBF=63.05,FLD=11.5 ; sterility tests
  1. ;
  1. I FLD,SUBF D BLDSTAT^LRVRMI4A(SUBF,FLD,STAT,.LRSTATUS)
  1. ;
  1. Q
  1. ;
  1. ;
  1. RPTDT(LRDFN,LRIDT,SUBSCR,RPTDT,USER) ; File Report Approved Date and Person Reporting
  1. ; Inputs
  1. ; LRDFN: LRDFN
  1. ; LRIDT: LRIDT
  1. ; SUBSCR: MI Result Subscript (eg 19,21,23,24,25,26)
  1. ; RPTDT: Report Approved Date/Time
  1. ; USER: Person Reporting (#200)
  1. ; Outputs
  1. ; Returns 0^ErrNum^ErrMsg on error, 1 on success
  1. N DIERR,FLDS,IEN,LRFDA,LRMSG,LRX
  1. ;
  1. S LRDFN=$G(LRDFN),LRIDT=$G(LRIDT),SUBSCR=$G(SUBSCR),(FLDS,LRX)=""
  1. ;
  1. I $G(RPTDT)'>0 S RPTDT=$$NOW^XLFDT()
  1. I $G(USER)="" S USER=$S($G(LRDUZ):LRDUZ,1:$G(DUZ))
  1. I LRDFN,LRIDT,SUBSCR S FLDS=$$NODE2FLD(SUBSCR)
  1. ;
  1. I FLDS'="" D
  1. . S IEN=LRIDT_","_LRDFN_","
  1. . I LRINTYPE=10 S LRFDA(1,63.05,IEN,$P(FLDS,"^",1))=RPTDT
  1. . S LRFDA(1,63.05,IEN,$P(FLDS,"^",2))=USER
  1. . D FILE^DIE("","LRFDA(1)","LRMSG")
  1. . I '$D(LRMSG) S LRX=1,LRRPTAPP=1 Q
  1. . S LRX="0^2^FileMan error"
  1. E S LRX="0^1^No Field #s found"
  1. ;
  1. Q LRX
  1. ;
  1. ;
  1. NODE2FLD(NODE) ; Resolve the fields to update based on the node
  1. ; Call with NODE = node in MI subscript to process
  1. ;
  1. ; Returns FIELDS = Report Date Approved^Person Reporting field #s
  1. ;
  1. N FIELDS
  1. S NODE=$G(NODE),FIELDS=""
  1. ;
  1. I NODE'="" D
  1. . I NODE?1(1"19",1"25",1"26",1"31") S FIELDS="11^11.55" Q
  1. . I NODE?1(1"23",1"29") S FIELDS="22^25.5" Q
  1. . I NODE?1(1"21",1"24",1"27") S FIELDS="14^15.5" Q
  1. . I NODE?1(1"15",1"22",1"28") S FIELDS="18^19.5" Q
  1. . I NODE?1(1"20",1"30") S FIELDS="33^35" Q
  1. ;
  1. Q FIELDS