Ignore:
Timestamp:
Aug 30, 2011, 1:51:06 PM (13 years ago)
Author:
George Lilly
Message:

update instead of delete old patient lists for performance

File:
1 edited

Legend:

Unmodified
Added
Removed
  • qrda/C0Q/trunk/p/C0QPRML.m

    r1223 r1230  
    11C0QPRML ;JJOH/ZAG/GPL - Patient Reminder List ;7/5/11 8:50pm
    2         ;;1.0;MU PACKAGE;;;Build 13
     2        ;;1.0;MU PACKAGE;;;Build 14
    33        ;
    44        ;2011 Zach Gonzales<zach@linux.com> - Licensed under the terms of the GNU
     
    2626        I '$D(C0QPL) S C0QPL=1 ;default do create patient lists
    2727        N G1 ; ONE SET OF VALUES - RNF1 FORMAT
     28        ; INITIALIZE LISTS
     29        S C0QLIST("HasDemographics")=""
     30        S C0QLIST("Patient")=""
     31        S C0QLIST("HasProblem")=""
     32        S C0QLIST("HasAllergy")=""
     33        S C0QLIST("HasMed")=""
    2834        D ALL ; all currently admitted patients in the hospital
    2935        D DIS ; all patients discharged since the reporting period began
    3036        I C0QSS ZWR GRSLT
    31         I C0QPL D FILE ; FILE THE PATIENT LISTS
     37        I C0QPL D  ;
     38        . D FILE ; FILE THE PATIENT LISTS
     39        . D UPDATE^C0QUPDT(.G,8) ; UPDATE THE MU MEASUREMENT SET
    3240        Q
    3341        ;
     
    216224        . I ZN="" D  Q  ; OOPS
    217225        . . W !,"ERROR, ATTRIBUTE NOT FOUND IN PATIENT LIST FILE:"_ZI
    218         . S ZN=$$KLNCR(ZN) ; KILL AND RECREATE RECORD ZN
     226        . ;S ZN=$$KLNCR(ZN) ; KILL AND RECREATE RECORD ZN
     227        . N C0QNEW,C0QOLD,C0QRSLT
     228        . S C0QNEW=$NA(C0QLIST(ZI)) ; THE NEW PATIENT LIST
     229        . S C0QOLD=$NA(^C0Q(301,ZN,1,"B")) ; THE OLD PATIENT LIST
     230        . D UNITY^C0QSET("C0QRSLT",C0QNEW,C0QOLD) ; FIND WHAT'S NEW
     231        . N ZJ,ZK
     232        . ; FIRST, DELETE THE OLD ONES - NO LONGER IN THE LIST
    219233        . K C0QFDA
    220         . N ZJ,ZC
    221         . S ZJ="" S ZC=1
    222         . F  S ZJ=$O(C0QLIST(ZI,ZJ)) Q:ZJ=""  D  ; FOR EACH PAT IN LIST
    223         . . S C0QFDA(LFN,"?+"_ZC_","_ZN_",",.01)=ZJ
    224         . . S ZC=ZC+1
    225         . D UPDIE
    226         . W !,"FOUND:"_ZI
     234        . S ZJ=""
     235        . F  S ZJ=$O(C0QRSLT(2,ZJ)) Q:ZJ=""  D  ; MARKED WITH A 2 FROM UNITY
     236        . . S ZK=$O(@C0QOLD@(ZJ,"")) ; GET THE IEN OF THE RECORD TO DELETE
     237        . . I ZK="" D  Q  ; OOPS SHOULDN'T HAPPEN
     238        . . . W !,"INTERNAL ERROR FINDING A PATIENT TO DELETE"
     239        . . . B
     240        . . S C0QFDA(LFN,ZK_","_ZN_",",.01)="@"
     241        . I $D(C0QFDA) D UPDIE ; PROCESS THE DELETIONS
     242        . ; SECOND, PROCESS THE ADDITIONS
     243        . K C0QFDA
     244        . S ZJ="" S ZK=1
     245        . F  S ZJ=$O(C0QRSLT(0,ZJ)) Q:ZJ=""  D  ; PATIENTS TO ADD ARE MARKED WITH 0
     246        . . S C0QFDA(LFN,"+"_ZK_","_ZN_",",.01)=ZJ
     247        . . S ZK=ZK+1
     248        . I $D(C0QFDA) D UPDIE ; PROCESS THE ADDITIONS
     249        ;. Q
     250        ;. K C0QFDA
     251        ;. N ZJ,ZC
     252        ;. S ZJ="" S ZC=1
     253        ;. F  S ZJ=$O(C0QLIST(ZI,ZJ)) Q:ZJ=""  D  ; FOR EACH PAT IN LIST
     254        ;. . S C0QFDA(LFN,"?+"_ZC_","_ZN_",",.01)=ZJ
     255        ;. . S ZC=ZC+1
     256        ;. D UPDIE
     257        ;. W !,"FOUND:"_ZI
    227258        Q
    228259        ;
Note: See TracChangeset for help on using the changeset viewer.